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

11

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

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

bulkmoustache
источник
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команде.

%Означает группу пользователей. Если вы пропустите это, то только пользователю разрешено выполнять команду. Если вы хотите, чтобы группа пользователей выполняла его, оставьте все как есть.


источник