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

Команда sudo в Linux

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

Что такое sudo?

Пользователи Linux в курсе, что любая мало-мальски ответственная процедура в системе должна выполняться только от имени суперпользователя (администратора). Будь это банальная установка приложения или редактирование важного системного файла. В любом случае нужно авторизоваться и иметь достаточное количество полномочий. Иначе вы просто не сможете управлять своим компьютером и будете вынуждены пользоваться строго ограниченным количеством программ и функций.

Примерно то же самое происходит в Windows, когда вы устанавливаете программу, а система просит подтвердить это действие от лица администратора. Правда, пароль обычно никто не просит. В этом смысле sudo выглядит безопаснее, так как требует пароль по умолчанию.

Где встречается sudo? Если вы уже работали с Linux, то наверняка сталкивались с командой sudo в терминале, но она работает и в графической оболочке. Если при установке или обновлении пакетов появилось окошко с просьбой ввести пароль — это аналог sudo.

Из чего строится команда sudo?

sudo всегда прописывается в начале любой команды. У нее довольно простой синтаксис: прописываем sudo, затем ее опции, потом любую другую команду, которую хотим выполнить, а уже потом ее опции и параметры. Это выглядит примерно следующим образом: sudo опции команды sudo другая команда, которую нужно выполнить от лица суперпользователя опции и параметры этой команды .

Читайте также:  Virtualbox install guest additions oracle linux

Вот практический пример: 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, установленную в систему.
Читайте также:  Linux find without directory

Примеры использования 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).
Читайте также:  Linux checking ports listening

Вот и все, тема «Запустить команду от другого пользователя в 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

Источник

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