sudo su другому пользователю для запуска скрипта

Я пытаюсь войти в систему как USER1 и переключить пользователя на USER2 и выполнить некоторые сценарии (более 100 сценариев, не могу перечислить их все в файле sudoer один за другим) как USER2

в файле Sudoer у меня есть

   USER1 ALL=(USER2) NOPASSWD: ALL

Когда я запускаю следующее как USER1

  sudo su - USER2 -c "test.sh"

я получил

Извините, пользователю USER1 не разрешено выполнять '/bin/su - USER2 -c test.sh' от имени root

если я побегу

  sudo su - sassrv

я получил

Извините, пользователю USER1 не разрешено выполнять '/bin/su - USER2'

Если я изменю файл Sudoer на

         USER1 ALL=(ALL) NOPASSWD: /bin/su - USER2

Это позволит мне сменить пользователя, но я все еще получаю

Извините, пользователю USER1 не разрешено выполнять '/bin/su - USER2 -c test.sh' от имени root

Как я могу достичь этого?


person user3646699    schedule 06.09.2018    source источник
comment
Stack Overflow — это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. раздел О каких темах я могу задать здесь в Справочном центре. Возможно, Суперпользователь или Unix & Linux Stack Exchange лучше спросить.   -  person jww    schedule 07.09.2018


Ответы (1)


Вы хотели запустить test.sh как USER2 с sudo, но вместо этого вы запускаете su как root.

su, в свою очередь, может попытаться запустить test.sh от имени USER2, но это выходит за рамки возможностей и знаний sudo. С точки зрения sudo, единственное, что вы делаете, это пытаетесь запустить команду от имени пользователя root.

Вместо этого попросите sudo запустить test.sh напрямую от имени USER2:

sudo -u USER2 test.sh

PS: sudo su в любом контексте — это запах кода, указывающий на непонимание того, что такое sudo и что он делает.

person that other guy    schedule 06.09.2018
comment
@that other guy спасибо за быстрый ответ. Я могу запустить скрипт, однако похоже, что он не работает как USER2. потому что в test.sh он пишет в журнал echo "test" > test.log. и у него нет разрешения на создание журнала. - person user3646699; 06.09.2018
comment
Если поставить whoami второй строкой в ​​скрипте (сразу после шебанга), что она скажет? - person that other guy; 06.09.2018
comment
@that other guy понял. я забыл указать каталог для записи журнала. Он пытался писать в /home/USER1 вместо /home/USER2 - person user3646699; 06.09.2018