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

24

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

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

Dtech
источник

Ответы:

23

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

$ sudo -u apache cat .ssh/authorized_keys 
cat: .ssh/authorized_keys: Permission denied
ckhan
источник
catвероятно, это не лучший выбор ... если вы тестируете большой файл или двоичный файл ...
Алексис Уилк
24

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

 sudo -u <user> test -r <file-to-test> && ...
user72025
источник
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
Dtech
источник
Очень интересный вариант.
Алекс