sudo
команда может выполнить что-либо как конкретного пользователя с -u
опция. Вместо того, чтобы волноваться об оболочках, просто попытайтесь cat
(или выполнитесь, безотносительно), Ваш файл как Ваш целевой пользователь:
$ sudo -u apache cat .ssh/authorized_keys
cat: .ssh/authorized_keys: Permission denied
Я нашел, что можно использовать su -s <shellname> <username>
ввести определенную оболочку как определенного пользователя. Можно затем протестировать полномочия файла, как обычно.
Например:
su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template
Я нашел удобным для использования в скриптах что-то вроде
sudo -u <user> test -r <file-to-test> && ...
sudo -u <user> test -r <file-to-test>; echo $?
Часть echo $?
выводит статус выхода из теста.
Просто помните, что вывод будет 0
, если операция прошла успешно! Или ненулевое, например 1
, если нет.
Как комментарий @ Thomas к ответу @ user72025, используйте man test
, чтобы получить больше рабочих тестов, например test -x
для проверки выполнимости, test -w
для возможности записи и т. д.
cat
вероятно, не лучший выбор, хотя... это, Вы тестируете большой файл или двоичный файл... – Alexis Wilke 14.11.2015, 08:29