Запустите скрипт оболочки как другой пользователь, у которого нет пароля

Я хотел бы запустить скрипт из основной оболочки Ubuntu от имени другого пользователя без пароля.

У меня есть полные привилегии sudo, поэтому я попытался это сделать:

sudo su -c "Your command right here" -s /bin/sh otheruser

Затем я должен ввести свой пароль, но я не уверен, действительно ли этот скрипт сейчас работает под этим пользователем.

Как я могу подтвердить, что скрипт действительно работает под этим пользователем?

251
задан 18 April 2018 в 20:14

6 ответов

Если Вы хотите использовать su вместо sudo, я полагаю, что можно использовать что-то вроде этого:

su - <username> -c "<commands>"
  • - моделирует вход в систему указанного пользователя
  • -c говорит этому, что Вы хотите выполнить команду

PS, К сожалению, который я не могу установить рубин с помощью rvm с этим методом, но это, вероятно, не связано.

101
ответ дан 18 April 2018 в 20:14

Вы можете сделать это с помощью su или sudo, нет необходимости в обоих.

sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"' 

Соответствующие части man sudo:

-H   The -H (HOME) option requests that the security policy set
     the HOME environment variable to the home directory of the
     target user (root by default) as specified by the password
     database.  Depending on the policy, this may be the default
     behavior.
-u user     The -u (user) option causes sudo to run the specified
      command as a user other than root.  To specify a uid
      instead of a user name, use #uid.  When running commands as
      a uid, many shells require that the '#' be escaped with a
      backslash ('\').  Security policies may restrict uids to
      those listed in the password database.  The sudoers policy
      allows uids that are not in the password database as long
      as the targetpw option is not set.  Other security policies
      may not support this.

su могут переключать пользователя только без предоставления пароля, если вы являетесь пользователем root. См. Ответ Калеба

Вы можете изменить файл /etc/pam.d/su, чтобы разрешить su без пароля. Смотрите этот ответ .

Если вы изменили свой файл авторизации следующим образом, любой пользователь, входящий в группу somegroup, может su перейти на otheruser без пароля.

auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = otheruser
auth       sufficient   pam_succeed_if.so use_uid user ingroup somegroup

Затем проверить с терминала

rubo77@local$ su otheruser -c 'echo "hello from $USER"'
hello from otheruser
0
ответ дан 18 April 2018 в 20:14

У меня была такая же проблема. Просто введите команду screen -dmS testscreen, это создаст отдельный экран в вашей учетной записи пользователя, не являющегося пользователем sudo, а затем вы сможете войти в него и проверить, есть ли этот экран в screen -ls.

0
ответ дан 18 April 2018 в 20:14

Ответы выше очень полезны для меня, но для ответа на реальный вопрос ...

Как я могу подтвердить, что скрипт действительно запущен под этим пользователем? -

Использовать:

ps -ef | grep <command-name>

Выходные данные должны включать ваш скрипт и фактический пользователь, выполняющий это. Люди на BSD-подобных системах, например MAC может найти похожую информацию с помощью:

ps aux | grep <command-name>
0
ответ дан 18 April 2018 в 20:14

Убедитесь, что вы переключились на пользователя root с помощью команды sudo su, а затем используйте команду

su user -s <command>

Например: su www-data -s bin/magento cache:clean

6
ответ дан 18 June 2020 в 09:34

Для этого можно использовать sudo. Во-первых, вам нужно изменить файл /etc/sudoers, чтобы добавить правило, позволяющее пользователю hudson стать другим пользователем рассматриваемого скрипта. Предположим, у вас есть учетная запись user1, для которой необходимо запустить /usr/local/bin/my_script.sh.

Запустите visudo, чтобы изменить файл sudoers. Затем используйте следующую команду sudo для запуска скрипта из hudson.

Очень важно использовать visudo для изменения файла sudoers, чтобы проверить файл на наличие ошибок, прежде чем помещать его на место. Кроме того, я бы посоветовал быстро прочитать man sudoers, чтобы четко понять, что делает вышеизложенное, прежде чем добавлять его в свою конфигурацию.

1
ответ дан 11 November 2020 в 14:43

Другие вопросы по тегам:

Похожие вопросы: