Linux запуск скрипта от имени другого пользователя

Содержание
  1. unixforum.org
  2. Как запустить скрипт от имени другого пользователя?
  3. Как запустить скрипт от имени другого пользователя?
  4. Re: Как запустить скрипт от имени другого пользователя?
  5. Re: Как запустить скрипт от имени другого пользователя?
  6. Re: Как запустить скрипт от имени другого пользователя?
  7. Re: Как запустить скрипт от имени другого пользователя?
  8. Re: Как запустить скрипт от имени другого пользователя?
  9. Re: Как запустить скрипт от имени другого пользователя?
  10. Re: Как запустить скрипт от имени другого пользователя?
  11. Запуск скрипта от другого пользователя
  12. Запустить команду от другого пользователя в Unix/Linux
  13. Запустить команду от другого пользователя в Unix/Linux
  14. Запустить команду от другого пользователя в Unix/Linux — способ 1
  15. Запустить команду от другого пользователя в Unix/Linux — способ 2
  16. Запустить команду от другого пользователя в Unix/Linux — способ 3
  17. 5 thoughts on “ Запустить команду от другого пользователя в Unix/Linux ”
  18. Запуск bash скрипта от имени другого пользователя
  19. 1 ответ 1

unixforum.org

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

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

Сообщение niv88 » 13.12.2009 12:26

Есть скрипт.
/usr/lib/ScriptName/ScriptName.sh

Надо его запустить от имени пользователя ScriptUser, причём без запроса пароля.
Как такое можно сделать?

(а то с /etc/sudoers/ — запутался)

Re: Как запустить скрипт от имени другого пользователя?

Сообщение Frank » 13.12.2009 14:31

drBatty Сообщения: 8735 Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит. ОС: Slackware-current Контактная информация:

Re: Как запустить скрипт от имени другого пользователя?

Сообщение drBatty » 14.12.2009 17:25

blackdevil Бывший модератор Сообщения: 2751 Статус: Добровольный помощник ОС: Ubuntu (lts)

Re: Как запустить скрипт от имени другого пользователя?

Сообщение blackdevil » 15.12.2009 10:39

Re: Как запустить скрипт от имени другого пользователя?

Сообщение Black » 15.12.2009 11:20

ScriptUser localhost=NOPASSWD:/usr/lib/ScriptName/ScriptName.sh

Frank
sudo su — это из серии «cat file | less». Работать-то оно работает, но неудобно, неэстетично и непрактично %).

diesel Бывший модератор Сообщения: 5989 ОС: OS X, openSuSE, ROSA, Debian Контактная информация:

Re: Как запустить скрипт от имени другого пользователя?

Сообщение diesel » 15.12.2009 12:24

Frank
sudo su — это из серии «cat file | less». Работать-то оно работает, но неудобно, неэстетично и непрактично %).

Читайте также:  Check my uid linux

cat file | less бывает очень даже практично, например: cat /very/long/path | less -> ^W^W|awk » | less -> ^W^W|tr . . .

Re: Как запустить скрипт от имени другого пользователя?

Сообщение Frank » 16.12.2009 08:02

Frank
sudo su — это из серии «cat file | less». Работать-то оно работает, но неудобно, неэстетично и непрактично %).

Предложи другой универсальный вариант запуска, даже когда пароль пользователя не задан («*» в /etc/shadow).

Re: Как запустить скрипт от имени другого пользователя?

Сообщение Black » 16.12.2009 14:52

Другой вариант?
sudo -u ScriptUser ScriptName.sh
А универсального не существует, т.к. далеко не везде разрешено запускать всё подряд через sudo. Тем более дистрибутив топикстартер не указал, это может оказаться и не убунта.

Кстати, в предыдущем посте немного ошибся, подумал SomeUser должен запускать скрипт от рута. Должно быть так:

someuser localhost=(ScriptUser) /usr/lib/ScriptName/ScriptName.sh

Источник

Запуск скрипта от другого пользователя

Есть в системе два пользователя: user1, user2. Есть script.sh. Задача: работая под user1 запустить скрипт от имени user2.

Да, знаю про su -c. Но оно просит пароль. А основная проблема это то, что есть еще main_script.sh откуда и будет вызываться script.sh (можно даже не отдельным скриптом, а внутри того же main_script.sh) и все это должно происходить автоматически, т.е. без дополнительного вмешательства и ввода пароля user2. Скажите, такое вообще возможно? И как это реализовать? что-то вертится в голове про setuid и про возможность использования групп(??). Но ничего толком собрать не могу.

man sudo, если я не ошибаюсь.

Запуск команды от имени пользователя: ‘sudo -u ‘
Чтобы не просил пароль надо будет прописать правило в /etc/sudoers
Так что man sudoers’ вам в помощь =)

Ох. про sudo знал, а вот про флажок -u впервые прочитал, благодарю. буду разбираться.

Итак, ничего не работает. Все равно просит пароль.

# /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset # Host alias specification Host_Alias LOCALHOST = lenovo # User alias specification User_Alias FULLTIMERS = zoot # Cmnd alias specification Cmnd_Alias SCRIPT = /home/zoot/devel/trash/script.sh # User privilege specification root ALL=(ALL) ALL # Allow members of group sudo to execute any command # (Note that later entries override this, so you might need to move # it further down) %sudo ALL=(ALL) ALL # #includedir /etc/sudoers.d # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Test options FULLTIMERS LOCALHOST = NOPASSWD: SCRIPT 
zoot@lenovo:~$ cat /home/zoot/devel/trash/script.sh #!/bin/bash echo "running script" sleep 10s echo "done" 

Скрипт, ясное дело, просто для теста.

Читайте также:  Linux 64 bit amd64

sudo -u carol /home/zoot/devel/trash/script.sh

А пароль таки просится. Если ввести, то все ок. ps -a -f | grep -i carol выдает таки, что процесс запущен под пользователем carol.

Да, уточню, система Ubuntu 10.10 Ибо с правами и sudo у нее может что особое? =)

Источник

Запустить команду от другого пользователя в Unix/Linux

Запустить команду от другого пользователя в Unix/Linux

Иногда, просто необходимо запустить команду от другого пользователя. И существует несколько способов, как это можно сделать. Я расскажу о них в своей статья «Запустить команду от другого пользователя в Unix/Linux».

Запустить команду от другого пользователя в Unix/Linux — способ 1

И так, можно использовать утилиту SUDO. Рассмотрим пример:

$ sudo -H -u Your_another_user -c 'ping linux-notes.org'
  • -H YOUR_HOME: Задает HOME (Переменное окружение для хома конкретного юзера) и по умолчанию — это root.
  • -u YOUR_USER: Задаем пользователя от которого будет выполнена команда.
  • -c YOUR_COMMAND: Служит опцией для ввода команды.

Запустить команду от другого пользователя в Unix/Linux — способ 2

Можно использовать утилиту SU. И сейчас приведу несколько примеров.

Логин в root юзера

Чтобы получить рута, выполните:

Запустить команду как root юзер

# su - root -c "YOUR_COMMAND_HERE"
su - -c "YOUR_COMMAND_HERE arg1"

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

# su -c "/opt/solr/bin/solr create -c test_solr_core -n solrconfig.xml" -s /bin/sh solr Created new core 'test_solr_core'
$ su another_user -c 'ping linux-notes.org'
$ su - YOUR_USER -c "YOUR_COMMAND_HERE"
  • — — Будет имитировать логин указанного пользователя.
  • -c — Служит для указания команды для выполнения (для указанного юзверя).

Запустить команду от другого пользователя в Unix/Linux — способ 3

И так, можно использовать утилиту runuser. Команда runuser запускает оболочку с заменяющими идентификаторами пользователей и групп. Эта команда полезна только когда вы залогинены как пользователь root. Синтаксис выглядит следующим образом:

# runuser -l YOUR_USER -c 'YOUR_COMMAND_HERE'

Как пример, я покажу следующую строку:

# runuser -l nginx -c 'service nginx start'

PS: Для использования команды runuser пароль не требуется, и он должен запускаться только пользователем root.

  • -l: Создаст оболочку для входа в систему, используя файл runuser-l PAM вместо стандартного.
  • -g: Указывает на основную группу.
  • -G: Указывает на дополнительную группу.
  • -c: Собственно, служит для указания команды.
  • –session-command=COMMAND: Передает одну команду в оболочку с опцией «-c» и не создает новый сеанс.
  • -m: Не сбрасывайте переменные среды (ENV).
Читайте также:  Kali linux перехват пароля wifi

Вот и все, тема «Запустить команду от другого пользователя в Unix/Linux» завершена.

5 thoughts on “ Запустить команду от другого пользователя в Unix/Linux ”

> $ sudo -H -u Your_another_user bash -c ‘ping linux-notes.org’ Смешались sudo и bash: $ sudo -u user echo a
a $ bash -c ‘echo a’
a

Источник

Запуск bash скрипта от имени другого пользователя

Имеется следующая ситуация. Есть пользователь user, у которого нет прав суперпользователя. Есть апач, который является классическим www-data. Конечно есть root-суперпользователь. Задача: www-data должен иметь право запускать скрипт /var/www/example/script3.sh (user:user, 700) без пароля. После некоторых поисков вышел на решение с использованием sudoers, которое отлично сработало на 2 других скриптах, которые апач запускает как root. Но это решение не работает в случае с обычным пользователем. Содержание sudoers:

# Работает отлично: www-data ALL=(root) NOPASSWD:/var/www/example/script1.sh www-data ALL=(root) NOPASSWD:/var/www/example/script2.sh # Не работает www-data ALL=(user) NOPASSWD:/var/www/example/script3.sh 

1 ответ 1

exec('/var/www/example/script3.sh'); 

sudo — не автомагический системный демон, который запускает произвольный скрипт, прописанный в /etc/sudoers от имени указанного пользователя, а простая утилита. Таким образом, необходимо явно указывать, что необходимо выполнять через sudo и от имени какого пользователя это делать:

exec('sudo -u user /var/www/example/script3.sh'); 

Как вариант, по необходимости можно также сделать отдельный proxy-скрипт,
/var/www/example/scrip3-proxy.sh:

#!/bin/sh sudo -u user /var/www/example/script3.sh 
exec('/var/www/example/script3-proxy.sh'); 

Источник

Оцените статью
Adblock
detector