Введение
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.