- Команда su в Linux
- Команда su Linux
- Примеры использования su
- Выводы
- Как использовать команду sudo в Linux
- Как использовать команду sudo
- Установка sudo
- Синтаксис
- Опции
- Предоставление привилегий sudo
- RedHat и CentOS
- Debian и Ubuntu
- Использование visudo и группы sudoers
- Тайм-аут пароля sudo
- Примеры sudo в Linux
- Основное использование Sudo
- Выполнить команду от имени другого пользователя
- Переключиться на root пользователя
- Выполнить предыдущие команды с помощью sudo
- Запуск нескольких команд в одной строке
- Добавить строку текста в существующий файл
- Заключение
- Запустить команду от другого пользователя в Unix/Linux
- Запустить команду от другого пользователя в Unix/Linux
- Запустить команду от другого пользователя в Unix/Linux — способ 1
- Запустить команду от другого пользователя в Unix/Linux — способ 2
- Запустить команду от другого пользователя в Unix/Linux — способ 3
- 5 thoughts on “ Запустить команду от другого пользователя в Unix/Linux ”
Команда su в Linux
В процессе работы у пользователя часто возникает задача выполнить команду с иными привилегиями. Например, когда он желает установить новую программу, обновить систему, настроить сетевой экран и др. В этом случае ему приходит на помощь команда su в Linux.
Данная команда заменяет пользователя оболочки shell на указанного. Фактически происходит запуск нового экземпляра оболочки с указанными параметрами. Благодаря этому возможно, не выходя из системы, совершенно безболезненно повышать возможности управления операционной системой или наоборот ограничивать их.
Команда su Linux
Команда имеет следующий синтаксис:
su [options] [-] [user]
Если вызов команды происходит без аргументов, то происходит смена пользователя оболочки shell на суперпользователя root. Программа выдаст приглашение ввода пароля, если пароль будет верным, то текущим пользователем станет root.
- options — некоторые дополнительные возможности команды. Мы их рассмотрим ниже:
- [-] — смена контекста выполнения оболочки на контекст указанного пользователя. Переменные $PATH, $HOME, $SHELL, $USER, $LOGNAME содержат значения, характерные для указанного пользователя. Домашняя папка пользователя меняется на другую.
- user — имя пользователя, под которым продолжит работать командная оболочка.
Основные опции команды su:
- -c, —command=command — запускает приложение под указанным аккаунтом;
- -s, —shell=shell— происходит запуск для заданного пользователя указанной оболочки;
- -, -l, —login — смена контекста выполнения на контекст заданного пользователя, аналогична смене пользователя системы для shell;
- -g, —group=group — вызов пользователя, состоящего в заданной группе. Используется только для пользователя root;
- -h, —help — вызов справки для команды.
Далее давайте рассмотрим примеры работы с утилитой su.
Примеры использования su
Смена пользователя на суперпользователя root, без смены окружения оболочки:
Обратите внимание, что здесь вам нужно набрать пароль не своего пользователя, а именно того, от имени которого вы хотите авторизоваться. В данном случае, пользователя root. Если вы получаете ошибку сбой при проверке подлинности su linux, то это может означать, что либо вы ввели пароль неверно, либо пароль для этого пользователя не задан. Такое можно встретить у пользователя root в Ubuntu и Linux Mint. Информацию о том как установить пароль вы можете найти в этой статье. Смена пользователя на суперпользователя root со сменой параметров окружения оболочки:
Смена пользователя на пользователя user01:
Смена пользователя на пользователя user01 со сменой окружения:
Запуск оболочки zsh для пользователя user01:
Запуск оболочки bash из оболочки zsh для пользователя user01:
Запуск файлового менеджера Midnight Commander для пользователя user01:
Просмотр содержимого директории boot суперпользователем root:
Чтобы выйти из оболочки, открытой командой su можно использовать встроенную команду exit или сочетание клавиш Ctrl+d.
Выводы
Сегодня вы узнали что из себя представляет команда su linux, которая позволяет запустить оболочку от имени другого пользователя, как со сменой окружения, так и без. Узнали как выйти из этой оболочки.
Были рассмотрены различные варианты использования данной команды: для получения прав суперпользователя root, для смены командной оболочки, для выполнения конкретной команды или пакета от имени указанного пользователя.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Как использовать команду sudo в Linux
Sudo означает SuperUser DO и используется для доступа к файлам и операциям с ограниченным доступом. По умолчанию Linux ограничивает доступ к определенным частям системы, предотвращая компрометацию конфиденциальных файлов.
Команда sudo временно повышает привилегии, позволяя пользователям выполнять конфиденциальные задачи без входа в систему как пользователь root . В этом руководстве вы узнаете, как использовать команду sudo в Linux с примерами.
Как использовать команду sudo
Установка sudo
Пакет sudo установлен в большинстве дистрибутивов Linux.
Чтобы проверить есть ли у вас эта комманда введите sudo . Вы увидите справочное сообщение или сообщение о том что комнада не найдена.
Чтобы установить sudo используйте для Ubuntu и Debian:
sudo была разработана как способ временного предоставления пользователю административных прав. Чтобы заставить ее работать, используйте sudo перед ограниченной командой, которую можно выполнить только из под рута. Тогда система запросит ваш пароль. После его ввода система запускает команду.
Синтаксис
Опции
sudo можно использовать с дополнительными параметрами:
- -h — отображает синтаксис и параметры команды
- -V — отображает текущую версию приложения sudo
- -v — обновить лимит времени на sudo без запуска команды
- -l — перечисляет права пользователя или проверяет конкретную команду
- -к — завершить текущие привилегии sudo
Дополнительные параметры можно найти с помощью ключа -h .
Примечание. Оставаться в системе как администратор ставит под угрозу безопасность сервера. Раньше администраторы использовали su (substitute user) для временного переключения на учетную запись администратора. Однако для команды su требуется вторая учетная запись пользователя и пароль, что не всегда возможно.
Когда используется команда sudo , в системные журналы заносится метка времени. Пользователь может запускать команды с повышенными привилегиями в течение короткого времени (по умолчанию 15 минут). Если пользователь, не принадлежащий к sudo группе, пытается использовать команду sudo , это регистрируется как событие безопасности.
Предоставление привилегий sudo
Для большинства современных дистрибутивов Linux пользователь должен входить в группу sudo, sudoers или wheel, чтобы использовать команду sudo . По умолчанию однопользовательская система предоставляет своему пользователю права sudo . Система или сервер с несколькими учетными записями пользователей могут исключать некоторых пользователей из привилегий sudo .
Рассмотрим как добавить пользователя в эту группу.
RedHat и CentOS
В Redhat и CentOS wheel группа контролирует пользователей sudo . Добавьте пользователя в группу wheel с помощью следующей команды:
usermod –aG wheel [username]
Замените [username] фактическим именем пользователя. Возможно, вам потребуется войти в систему как администратор или использовать команду su .
Debian и Ubuntu
В Debian и Ubuntu группа sudo (sudo group) контролирует пользователей sudo . Добавьте пользователя в группу sudo с помощью следующей команды:
Использование visudo и группы sudoers
В некоторых современных версиях Linux пользователи добавляются в файл sudoers для предоставления привилегий. Это делается с помощью команды visudo .
Используйте команду visudo для редактирования файла конфигурации:
Это откроет /etc/sudoers для редактирования. Чтобы добавить пользователя и предоставить полные права sudo , добавьте следующую строку:
Сохраните и выйдите из файла.
Вот разбивка предоставленных привилегий sudo :
[username] [any-hostname]=([run-as-username]:[run-as-groupname]) [commands-allowed]
Примечание. Проще добавить пользователя в группу sudo или wheel, чтобы предоставить права sudo . Если вам нужно отредактировать файл конфигурации, делайте это только с помощью visudo . Приложение visudo предотвращает сбои, ошибки и неправильные настройки, которые могут нарушить работу вашей операционной системы.
Тайм-аут пароля sudo
По умолчанию sudo просит вас ввести пароль после нескольких минут бездействия. Изменить это время ожидания по умолчанию, можно отредактировав файл sudoers с помощью visudo и измените время ожидания, добавив строку как в примере, где 10 — это время ожидания, указанное в минутах:
sudo visudo Defaults timestamp_timeout=10
Если вы хотите изменить время ожидания для определенного пользователя, то добавьте имя пользователя.
Defaults:user_name timestamp_timeout=10
Примеры sudo в Linux
Основное использование Sudo
1. Откройте окно терминала и попробуйте выполнить следующую команду:
2. Вы должны увидеть сообщение об ошибке. У вас нет необходимых разрешений для запуска команды.
3. Попробуйте ту же команду с sudo:
4. При появлении запроса введите свой пароль. Система выполнит команду и обновит репозитории.
Выполнить команду от имени другого пользователя
1. Чтобы запустить команду от имени другого пользователя, введите в терминале следующую команду:
2. Система должна отображать ваше имя пользователя. Затем выполните следующую команду:
sudo –u [другое_имя_пользователя] whoami
3. Введите пароль для другого пользователя, и команда whoami запустится и отобразит другого пользователя.
Переключиться на root пользователя
Эта команда переключает вашу командную строку на оболочку BASH от имени пользователя root :
Ваша командная строка должна измениться на:
root@hostname:/home/[имя пользователя]
Значение имени хоста будет сетевым именем этой системы. Имя пользователя будет текущим именем пользователя, вошедшим в систему.
Выполнить предыдущие команды с помощью sudo
В командной строке Linux хранятся записи о ранее выполненных командах. Доступ к этим записям можно получить, нажав стрелку вверх. Чтобы повторить последнюю команду с повышенными привилегиями, используйте:
Это также работает со старыми командами. Укажите исторический номер следующим образом:
В этом примере повторяется 6-я запись в истории с командой sudo.
Запуск нескольких команд в одной строке
Соедините несколько команд вместе, разделенных точкой с запятой:
Добавить строку текста в существующий файл
Добавление строки текста в файл часто используется для добавления имени репозитория программного обеспечения к исходному файлу без открытия файла для редактирования. Используйте следующий синтаксис с командами echo , sudo и tee :
echo ‘string-of-text’ | sudo tee –a [path_to_file]
echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
Заключение
Теперь вы узнали про команду 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