Запустить скрипт от имени пользователя root [закрыт]


11

От пользователя root, как я могу дать разрешения другому пользователю на выполнение файла /root/script.sh?

Идея состоит в том, чтобы запустить скрипт как sudo -u user1 /root/script.sh


1
Вопрос не совсем понятен: «вы root и хотите запустить скрипт от имени пользователя user1» или «вы user1 и хотите запустить скрипт от имени пользователя root»? Если первый случай, в чем проблема с sudoкомандой, которую вы написали?
Михас

Выездsu(1)
vonbrand

Ответы:


10

Сразу скажу, мне никогда не нравились 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 может быть только root.

Ваша /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.