❌
namei — почему нет доступа к файлуЗнакомая боль: пытаемся открыть файл, а в ответ Permission denied. Права на сам файл вроде правильные, но доступа все равно нет.
Часто проблема не в самом файле, а в
одной из папок по пути к нему. И есть команда, которая позволяет быстро проверить всю цепочку целиком — namei.
🤔
Почему прав на файл недостаточноЧтобы добраться до /home/user/data/secret.txt, система проверяет права на
каждый каталог в пути:
/ ➡️ home/ ➡️ user/ ➡️ data/ ➡️ и только потом сам файл
Для каталогов особенно важно право x — оно позволяет
проходить через каталог.
Если хотя бы у одного каталога в цепочке нет подходящего x, доступ к файлу будет невозможен — даже если сам файл имеет права 777.
🔍
Что такое nameinamei берёт путь и разбирает его по звеньям, показывая права на каждом уровне. Не нужно вручную выполнять ls -ld для каждой папки.
namei -l /home/user/data/secret.txt
Флаг -l (long) показывает права, владельца и группу.
📄
Как читать выводf: /home/user/data/secret.txt
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-x--- user user user
drwxr-xr-x user user data
-rw-r--r-- user user secret.txt
Разбираем:
🔵 f: — путь, который анализируем
🔵 каждая строка — одно звено цепочки с правами, владельцем и группой
🔵 первая буква: d — папка, - — файл, l — симлинк
🎯
Находим виновникаДопустим, мы заходим под другим пользователем, который
не является владельцем user
и не входит в группу user.
Тогда упираемся в:
drwxr-x--- user user user
Права drwxr-x--- означают:
🔵 user как владелец — rwx
🔵 группа user — r-x
🔵 остальные пользователи — ---
То есть чужой пользователь не может даже
пройти через каталог /home/user.
При этом права самого secret.txt могут быть совершенно нормальными. Проблема находится выше — в пути к файлу.
🔗
Симлинки тоже видноЕсли в пути есть символическая ссылка, namei покажет её и укажет, куда она ведёт:
namei -l /var/www/html
f: /var/www/html
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root www
lrwxrwxrwx root root html -> /srv/website
drwxr-x--- root root /srv/website
Сразу видно: html — это ссылка на /srv/website, а уже у этой директории ограничены права.
⚙️
Как исправитьЕсли действительно нужно разрешить другим пользователям проход через каталог:
chmod o+x /home/user
o+x добавляет пользователям из категории other право x — то есть возможность проходить через каталог.
⚠️ Но это лишь пример. Не стоит бездумно открывать домашние каталоги. Если доступ нужен только конкретному пользователю, лучше использовать ACL, а не давать x всем.
Если нравится подобный формат, ставь — 🔥
😎 PyLinux | #linux