- Команда sudo в Linux
- Что такое sudo?
- Из чего строится команда sudo?
- Опции команды sudo
- Примеры использования sudo
- Запустить команду от другого пользователя в Unix/Linux
- Запустить команду от другого пользователя в Unix/Linux
- Запустить команду от другого пользователя в Unix/Linux — способ 1
- Запустить команду от другого пользователя в Unix/Linux — способ 2
- Запустить команду от другого пользователя в Unix/Linux — способ 3
- 5 thoughts on “ Запустить команду от другого пользователя в Unix/Linux ”
Команда sudo в Linux
Рассказываем, что из себя представляет команда sudo, зачем она нужна и как ей пользоваться.
Что такое sudo?
Пользователи Linux в курсе, что любая мало-мальски ответственная процедура в системе должна выполняться только от имени суперпользователя (администратора). Будь это банальная установка приложения или редактирование важного системного файла. В любом случае нужно авторизоваться и иметь достаточное количество полномочий. Иначе вы просто не сможете управлять своим компьютером и будете вынуждены пользоваться строго ограниченным количеством программ и функций.
Примерно то же самое происходит в Windows, когда вы устанавливаете программу, а система просит подтвердить это действие от лица администратора. Правда, пароль обычно никто не просит. В этом смысле sudo выглядит безопаснее, так как требует пароль по умолчанию.
Где встречается sudo? Если вы уже работали с Linux, то наверняка сталкивались с командой sudo в терминале, но она работает и в графической оболочке. Если при установке или обновлении пакетов появилось окошко с просьбой ввести пароль — это аналог sudo.
Из чего строится команда sudo?
sudo всегда прописывается в начале любой команды. У нее довольно простой синтаксис: прописываем sudo, затем ее опции, потом любую другую команду, которую хотим выполнить, а уже потом ее опции и параметры. Это выглядит примерно следующим образом: sudo опции команды sudo другая команда, которую нужно выполнить от лица суперпользователя опции и параметры этой команды .
Вот практический пример: sudo apt-get install firefox . Здесь мы вписываем команду sudo, которая награждает нас полномочиями администратора для запуска менеджера пакетов apt-get. Как вы понимаете, вместо apt-get можно использовать другие приложения и команды.
Опции команды sudo
У большинства опций есть сокращенный и полный вариант.
- -A (__ – askpass ) — чтобы воспользоваться правами sudo, обязательно нужно ввести пароль, который эта команда запросит. Если поставить опцию -A__, то программа попробует задействовать графическую оболочку для ввода пароля.
- -B (__ – background__) — эта опция нужна, чтобы программа, переданная после sudo, запустилась в фоновом режиме (то есть без наблюдения со стороны пользователя).
- -Си номер (__ – close-from= и номер __) — с помощью этой опции можно ограничить доступ к файловым дескрипторам. Их можно указать в числовом значении.
- -E ( – preserve-env ) — с помощью этой опции можно передать переменные окружения программе, которая будет запущена с правами sudo.
- -e ( – edit ) — обычно sudo используется для выполнения других команды (запуска программ), но если использовать эту опцию вместо программы, можно прописать путь до файла. Тогда sudo откроет указанный файл в текстовом редакторе, выбранном в системе по умолчанию, и позволит отредактировать его с правами суперпользователя.
- -gи группа — если добавить эту опцию и приписать название группы, то команда sudo будет запущена именно от лица этой группы, а не стандартной группы пользователя, в которой состоит сам пользователь.
- -h (__ – help__) — вызов справки со списком доступных опций для команды sudo.
- -hи хост — если добавить эту опцию и приписать имя какого-либо хоста, то команда (запуск приложения) будет выполнена от имени выбранного хоста. Работает она, только если система поддерживает дистанционное управление .
- -i *и имя пользователя ( – loginи имя пользователя ) — с помощью этой опции можно авторизоваться под именем любого пользователя и запустить программу от его лица. После этого будет загружен домашний каталог этого пользователя и его переменные окружения.
- -k — sudo просит пароль один раз в определенный период времени. То есть, если вы выполнили одну команду с правами суперпользователя, то система потребует пароль, а если следом вы воспользовались ей еще раз, то пароль будет не нужен. Опция -k отключает это свойство sudo.
- -l ( – list ) — если добавить эту опцию, то в консоль будет выведен список всех команды доступных для удаленных пользователей.
- -n ( – non-interactive ) — эта опция отключает весь потенциальный интерактив с командной строкой. Если в какой-то момент потребуется ввести пароль, то в консоли всплывет ошибка.
- -Tи время ( – timeout ) — задает время на выполнение указанной команды. Если она не успеет отработать за этот период времени, то ее выполнение прекратится в принудительном режиме.
- -uи имя пользователя — с помощью этой опции можно загружать программы от любого имени пользователя, существующего в системе.
- -V — с помощью этой опции можно выяснить версию sudo, установленную в систему.
Примеры использования sudo
Как уже было сказано ранее, sudo встречается в системе очень часто. Даже простые процедуры вроде установки новых приложений запускаются только с полномочиями суперпользователя, и обойти это правило нельзя.
Далее в материале будут описаны некоторые варианты использования команды 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).
Вот и все, тема «Запустить команду от другого пользователя в 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