* Пользовательские разрешения nix очень просты, но все может запутаться, если вам необходимо принять во внимание все родительские права доступа к каталогу, прежде чем получить доступ к данному файлу. Как я могу проверить, достаточно ли у пользователя прав? Если нет, то какой каталог запрещает доступ?
Например, предположим, что пользователь joe
и файл /long/path/to/file.txt
. Даже если он file.txt
был переключен на 777, Джо все равно должен иметь доступ /long/
, и то /long/path/
и другое /long/path/to/
раньше. Что мне нужно, это способ автоматически проверить это. Если joe
нет доступа, я также хотел бы знать, где ему было отказано. Может быть, он может получить доступ /long/
, но нет /long/path/
.
источник
namei <path> || exit 1
позволяет вам легко обнаружить проблему с правами доступа в скрипте.Вы можете использовать bash для этого.
Чтобы проверить это для конкретного пользователя, вы можете использовать
sudo
.источник
path
чтобы быть пустым? или/
?path
установлено/long
первое время цикла, что является правильным. Должен ли я установитьpath
ничего явно (path=
)? Кроме того, спасибо за упрощение моего использованияtr
.Как я понял из вашего вопроса, вы должны проверить его для разных пользователей (не только для joe), поэтому в таком случае проще всего рекурсивно проверить это с помощью sudo следующим образом:
использование:
источник
0755
,0700
и0777
). Я выпустил,./script.sh /root/test/test.txt joe
и он повторилoriginal file /root/test/test.txt is readable for joe
. Также, пытаясь это сделать, я неправильно набрал тестовый dir:,./script.sh /root/tst/test.txt joe
и он повторилoriginal file /root/tst/test.txt is readable for joe
. Я что-то пропустил?-r $FILE
, верно?Вот моя попытка предоставить эту функциональность. Я решил использовать
stat
, вwhile
петлю, иdirname
.Я создал этот скрипт
walkdir.bash
:Вы запускаете это так:
источник