Назад | Перейти на главную страницу

Как устранить ошибки, связанные с отказом в разрешении при доступе к файлам в Linux?

Мой вопрос касается общего устранения неполадок при получении ошибок типа «отказано в разрешении» при доступе к файлам от имени определенного пользователя, и вот конкретный пример, в котором я мог бы использовать дополнительную помощь:

Как пользователь «строитель» у меня есть папка «репо» в моем домашнем каталоге, которая принадлежит группе «строители». В настоящее время он гласит:

$ pwd
/home/builder/repo
$ ls -la
total 4
drwxr-sr-x 2 builder builders  20 Jun  9 02:28 .
drwxr--r-- 4 builder builder  123 Jun  7 23:36 ..
-rw-rw-r-- 1 builder builders   5 Jun  9 02:18 status

Итак, я вижу, что каждый, кто находится в группе «строителей», должен иметь доступ к этому файлу «статуса». Следует отметить, что как пользователь-строитель я могу его прочитать, файл не поврежден и не читается, т.е. cat /home/builder/repo/status возвращает его содержимое.

Однако по какой-то причине я не могу получить к нему доступ как другой пользователь - ec2-user, который случайно находится в группе разработчиков:

$ whoami
ec2-user
$ groups
ec2-user adm wheel systemd-journal docker builders
$ ls -la /home/builder/repo/status
ls: cannot access /home/builder/repo/status: Permission denied
$ cat /home/builder/repo/status
cat: /home/builder/repo/status: Permission denied

Мне явно чего-то не хватает, но я все еще пытаюсь ответить, почему пользователь, принадлежащий к той же группе, не может получить доступ к этому файлу. Есть ли что-то еще, что может сказать мне, что мне нужно сделать (например, как суперпользователь или владелец), чтобы правильно предоставить разрешение группового доступа к каталогу / файлу - или просто узнать, почему разрешения на чтение не работают для некоторых пользователей? Единственный ответ, который я нашел для себя, - это просто внимательно изучить информацию о владельце и биты управления доступом, но в приведенном выше примере все выглядит хорошо.

Вы получаете доступ запрещен ошибка, потому что /home/builder в каталоге отсутствует x (исполнение) бит для группы и другие. Это предотвращает превращение членов группы и других в /home/builder каталог или получить доступ к чему-либо ниже.

В зависимости от того, что, если это было случайно установлено, вы можете просто добавить x (выполнение) бит для группы /home/builder

chmod g+x /home/builder  

Если вы хотите, чтобы члены группы имели доступ только к подпапкам и не позволяли им отображать содержимое /home/builder, вы можете добавить x (выполнение) и удалите r (читать) бит из папки.

chmod g+x,g-r /home/builder

Вы также можете изменить разрешения для o (другие), как указано выше, или полностью удалите его.


Для таких проблем namei очень полезен, так как может отображать все разрешения файла по пути. Вы должны запустить это как пользователь, у которого есть доступ для получения желаемого результата.

# namei -olm /tmp/test/testdir/status 
f: /tmp/test/testdir/status
dr-xr-xr-x root root /
drwxrwxrwt root root tmp
drwxr-x--x root root test
drwxr-xr-x root root testdir
-rw-r--r-- root root status