Я хочу разрешить пользователю visit
запускать команды как пользователь admin
, но только команды, расположенные в определенном каталоге.
Поэтому я добавил в файл sudoers следующее правило:
visit localhost=(admin) NOPASSWD: /home/admin/
Внутри каталога / главная / админ / есть два файла: cmd.sh
и dummy.txt
Содержание cmd.sh
является:
кто я
коснитесь dummy.txt
Затем я вхожу в систему как пользователь visit
и введите:
sudo -u admin /home/admin/cmd.sh
и вывод для этого:
админ
touch: не может коснуться `dummy.txt ': в разрешении отказано
Но если я войду как admin
и введите ./cmd.sh
, вывод:
админ
и dummy.txt
успешно затронут
Почему пользователь visit
не могу коснуться admin
файл при использовании sudo?
К содержимому cmd.sh:
whoami
touch dummy.txt
Добавить:
pwd
Я подозреваю, что когда пользователь "visit" запускает сценарий с sudo, он не запускается в каталоге, который вы думаете. Вы можете решить эту проблему, передав полный путь к команде tuuch, например,
touch /home/admin/dummy.txt
Вы не полностью указали путь к dummy.txt в своей сенсорной команде. Я предполагаю, что вы запускаете скрипт из места, где у администратора нет прав на запись.
sudo -u admin /home/admin/cmd.sh
Вы говорите sudo запустить cmd.sh от имени администратора в вашем текущем каталоге, который из вашего описания, скорее всего, посещает домашний каталог. admin не имеет права записи в домашний каталог для посещения, поэтому он не работает.