Запустити сценарій як інший користувач від root [закрито]


11

Як користувач root може надати дозволу іншому користувачу на виконання файлу /root/script.sh?

Ідея полягає у запуску сценарію, як sudo -u user1 /root/script.sh


1
Питання не зовсім зрозуміло: "ви є root і хочете запустити сценарій як user1" або "you are user1 і хочете запустити сценарій як root"? Якщо перший випадок, у чому проблема з sudoнаписаною вами командою?
michas

Виїздsu(1)
vonbrand

Відповіді:


11

Треба сказати, що мені ніколи не подобалось sudo(особливо його конфігурації). Звичайний старий su:

su -c 'command' - user

Виконаний з root, він не запросить пароль.


0

Користувач повинен мати

  1. виконати дозвіл на весь шлях до каталогу ( /rootлише тут )

  2. виконати дозвіл на файл

  3. прочитати дозвіл на файл

Може бути непоганою ідеєю залишити /rootнедоторканою та створити (або використовувати) інший каталог для цієї мети (наприклад /usr/local/bin). Ви можете зробити user1єдиного користувача, якому дозволено виконувати скрипт, зробивши його власником файлу або залишити його rootвласником та групою, встановити прості дозволи доступу ( chmod) 770та додати за user1допомогою ACL ( setfacl).


0

Якщо ваш скрипт знаходиться в кореневому режимі, то

$ LC_ALL=C ls -ld /root
drwx------ 17 root root 4096 Mar  5 20:14 /root

user1 може бути лише кореневим.

Ваш /etc/sudoersзапис буде виглядати так

Cmnd_Alias SCRIPT=/root/script.sh

# user who is allowed executing /root/script.sh
%user ALL = (ALL) SCRIPT

Ви зазвичай редагуєте файл за допомогою visudo

Тоді вам також не потрібно ставити -u rootсвою sudoкоманду.

%Чи означає групу користувачів. Якщо ви його не залишаєте, виконувати команду може лише користувач. Якщо ви хочете, щоб група користувачів її виконувала, тоді залишайте так, як є.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.