Мой вопрос касается общего устранения неполадок при получении ошибок типа «отказано в разрешении» при доступе к файлам от имени определенного пользователя, и вот конкретный пример, в котором я мог бы использовать дополнительную помощь:
Как пользователь «строитель» у меня есть папка «репо» в моем домашнем каталоге, которая принадлежит группе «строители». В настоящее время он гласит:
$ 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