Проверьте действующие разрешения файла для пользователя


24

Можно ли проверить эффективные разрешения файла для конкретного пользователя?

Обычно я делаю это, su userа затем обращаюсь к файлу, но теперь я хочу проверить это на пользователе без оболочки (т.е. системный пользователь)

Ответы:


23

Команда sudoможет запускать что угодно как определенный пользователь с -uопцией. Вместо того, чтобы беспокоиться о оболочках, просто попробуйте cat(или выполните, что угодно) ваш файл в качестве целевого пользователя:

$ sudo -u apache cat .ssh/authorized_keys 
cat: .ssh/authorized_keys: Permission denied

catвероятно, это не лучший выбор ... если вы тестируете большой файл или двоичный файл ...
Алексис Уилк

24

Я нашел удобным использовать в скриптах что-то вроде

 sudo -u <user> test -r <file-to-test> && ...

1
лучший ответ, так как вы можете проверить читаемость (-r), запись (-w) и исполняемый (-x) без изменения / создания файла. man testдля более подробной информации
Томас

12
sudo -u <user> test -r <file-to-test>; echo $?

echo $?Часть будет выводить статус выхода из теста.

Просто помните, что вывод будет, 0если операция прошла успешно!Или ненулевой, например 1, если нет.

Как и комментарий @ Thomas к ответу @ user72025, используйте его man testдля получения дополнительных тестов операций, например test -xдля проверки исполняемости, test -wвозможности записи и т. Д.


1
Для меня это самый полезный ответ. Один из user72025 был близок, но я понятия не имел, каков был результат. Вы сделали это ясно. Спасибо. Голосование вверх.
inspirednz

6

Я нашел, что вы можете использовать su -s <shellname> <username> для входа в определенную оболочку как конкретного пользователя. Затем вы можете проверить права доступа к файлу как обычно.

Например:

su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template

Очень интересный вариант.
Алекс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.