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

Linux — наиболее широко используемая операционная система с открытым исходным кодом. Пользователи Linux имеют большое количество вариантов выбора операционной системы. У вас есть несколько вариантов выбора рабочего стола для ваших систем Linux. Профи Linux по-прежнему любят работу с командной строкой. В основном серверные версии Linux поставляются только с опцией командной строки, что делает их легче и быстрее.
Пользователи Linux используют оболочку для взаимодействия с операционными системами. Где Bash (Born Shell) является наиболее используемой оболочкой и доступна по умолчанию в большинстве систем. Сейчас Zsh (Z Shell) также становится популярным среди пользователей благодаря своим возможностям.
В этом руководстве вы узнаете, как запустить команду от имени другого пользователя в системах Linux/Unix.
Выполнять команды от имени другого пользователя с кнопкой Вверх
Команда su (сменить пользователя) используется для запуска оболочки от имени другого пользователя. Эта команда переключается на нового пользователя и загружает его среду.
Основная команда su выглядит следующим образом:
su - username
Приведенная выше команда позволяет вам перейти к другому пользователю, где вы можете выполнять команды с этим пользователем. Но наша цель — запустить команду Linux от имени другого пользователя, не переключая пользователей. Для этого ознакомьтесь с примером ниже.
В настоящее время я вошел в систему как root. Вы можете передать свою команду с параметром -c . Теперь в следующем примере команда ls будет запущена от имени пользователя alice без переключения пользователя:
su - alice -c "pwd"
/home/alice
Вы также можете запускать несколько команд от имени другого пользователя в Linux, например:
su - alice -c "pwd; mkdir hello && cd hello; pwd"
/home/alice /home/alice/hello
В приведенной выше команде он сначала печатает текущий рабочий каталог с pwd, затем создает и переходит в новый каталог с именем hello . Снова распечатайте существующий рабочий каталог. Все команды разделены точкой с запятой ; как у нас вообще.
Запустите команду от имени другого пользователя с помощью Sudo.
Этот метод обычно используется для запуска команды от имени пользователя root, но вы также можете использовать его с другими пользователями. Здесь нет необходимости использовать какие-либо параметры командной строки. Введите имя пользователя, с которым вы хотите выполнить команду.
sudo -u username [commands. ]
Например, вы пишете сценарий оболочки, который необходимо запускать от имени пользователя без полномочий root. Но вам нужно перезапустить службу apache2 . В этом случае вы можете использовать sudo для запуска команды от имени пользователя root:
sudo -u root 'systemctl restart apache2'
Запустите команду от имени другого пользователя с помощью Runuser
Вы также можете использовать runuser для выполнения команд, как другой пользователь в системах Linux. Это команды, менее известные пользователям Linux. Используйте команду runuser для запуска команд с фактическим идентификатором пользователя и идентификатором группы определенного пользователя.
runuser - username -c [commands. ]
Например, запустите команду от имени пользователя alice и создайте каталог в ее домашнем каталоге:
runuser - alice -c 'mkdir -p ~/hello'
Затем перечислите файлы в домашнем каталоге пользователя alice :
runuser - alice -c 'ls -l'
total 16 -rw-r--r-- 1 alice alice 8980 Feb 16 2020 examples.desktop drwxr-xr-x 2 alice alice 4096 Dec 22 14:55 hello
Вы также можете запустить обе команды в одной команде. Просто добавьте несколько команд, разделенных точкой с запятой:
runuser - alice -c 'mkdir -p ~/hello; ls -l'
Вывод
В этом руководстве вы узнали, как выполнять команды от имени другого пользователя в системе Linux. Вы научились выполнять команды от имени другого пользователя с помощью команд su, sudo и Linux runuser.
Supportaci se ti piacciono i nostri contenuti. Grazie.
Noviello.it Newsletter
Ricevi gli ultimi approfondimenti direttamente nella tua casella di posta!
Как выполнить команду от имени другого пользователя linux
Графическая оболочка над текстовой утилитой su. Позволяет выполнить команду от имени другого пользователя (суперпользователя по умолчанию).
После запуска программы появляется окно (рис. 1) с запросом пароля пользователя, из-под которого будет выполняться команда.

-
Управляющие элементы окна:
- «Пароль» — в строке ввода устанавливается пароль пользователя, из-под которого будет выполняться команда;
- флаг «Спрашивать мандатный уровень и категории, если требуется» — включает запрос на установку классификационной мандатной метки;
- [Да] — если установлен правильный пароль, то окно закрывается, и начинается выполнение команды от имени пользователя, чей пароль был установлен в окне. Если установлен неправильный пароль, то предлагается повторить установку пароля;
- [Отмена] — окно закрывается, работа программы завершается.
Программа запускается из программы «Выполнить команду» или из окна терминала:
где — имя пользователя, из-под которого будет выполняться команда, — название команды для выполнения.
Если сразу после fly-su устанавливается название команды, то по умолчанию пользователем, из-под которого будет выполняться команда, является суперпользователь.
Полная справочная информация о параметрах командной строки программы fly-su предоставляется командой
Через sudo выполнить команду от имени другого пользователя.
Вот собственно и вопросик:
Как через sudo выполнить команду от имени другого пользователя без ввода пароля, если я не root.
Другими словами: скрипт запущенный от имени user1 должен запустить другой скрипт от имени user2.
nevsky ★
15.06.06 18:07:45 MSD
Re: Через sudo выполнить команду от имени другого пользователя.
anonymous
( 15.06.06 18:15:50 MSD )
Re: Через sudo выполнить команду от имени другого пользователя.
nevsky ★
( 15.06.06 18:19:54 MSD ) автор топика
Re: Через sudo выполнить команду от имени другого пользователя.
imho: visudo: User_Alias USER1 = user1 User_Alias USER2 = user2 # Cmnd alias specification Cmnd_Alias SCRIPT = /bin/superscript Runas_Alias USER2 = user2 user1 ALL = (USER2) NOPASSWD: SCRIPT sudo -u user2 /bin/superscript
tugrik ★★
( 15.06.06 18:50:09 MSD )
Re: Через sudo выполнить команду от имени другого пользователя.
user1# sudo -u user2 /bin/superscript
tugrik ★★
( 15.06.06 18:50:56 MSD )
Как запустить (выполнить) команду от имени данного (конкретного) пользователя в Linux,Debian,Ubuntu,Kali Linux,RHEL,CentOS и т. д. в терминале (командной строке) 1 мин для чтения

Переключится на данного/конкретного пользователя, чтобы запустить команду (su -u )
В этом методе нам потребуется ввести пароль для данного/указанного пользователя.
su -u su -u anotherUser mkdir /tmp/test
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.