Как настроить su linux
Перейти к содержимому

Как настроить su linux

  • автор:

How to Use the su Command in Linux with Examples

In Linux, the su command (switch user) is used to run a command as a different user.

In this guide, you will learn how to use the su command, with practical examples.

A tutorial on how to use the su command in Linux ubuntu or centos

  • A system running Linux
  • Access to a terminal window/command-line (Ctrl-Alt-T, Ctrl-Alt-F2)

How the su Command Works

The su command is used to run a function as a different user. It is the easiest way to switch or change to the administrative account in the current logged in session.

Some versions of Linux, like Ubuntu, disable the root user account by default making the system more secure. But, this also restricts the user from running specific commands.

Using su to temporarily act as a root user allows you to bypass this restriction and perform different tasks with different users.

Note: A root account is a master administrator account with full access and permissions in the system. Because of the severity of changes this account can make, and because of the risk of it being compromised, most Linux versions use limited user accounts for normal use.

su Command Syntax

To use the su command, enter it into a command-line as follows:

If a username is specified, su defaults to the superuser (root). Simply find the user you need and add it to the su command syntax.

su Command Options

To display a list of commands, enter the following:

Display a list of su commands in Linux.

Here are some common options to use with the su command:

  • Username – Replace usernamewith the actual username you want to log in with. This can be any user, not just root.
  • –c or –command [command] – Runs a specific command as the specified user.
  • or –l or –login [username] – Runs a login script to change to a specific username. You’ll need to enter a password for that user.
  • –s or –shell [shell] – Allows you to specify a different shell environment to run in.
  • –h or –help – Show the help file for the su command.
  • –p or ––preserve–environment – Preserve the shellenvironment (HOME, SHELL, USER, LOGNAME).

su Command Examples

Switch to a Different User

To switch the logged-in user in this terminal window, enter the following:

You’ll be asked for a password. Enter it, and the login will change to that user.

An example how to switch to a different user in Linux using the -su command

If you omit a username, it will default to the root account. Now, the logged-in user can run all system commands. This will also change the home directory and path to executable files.

Use the whoami command to verify you switched to a different user.

Note: If you are having issues with authentication, you can change the root or sudo password in a couple of simple steps.

Run Specific Command as a Different User

To run a specific command as a different user, use the –c option:

The system will respond by asking you for the user password.

When you enter this example, the system will use the specified account to run the ls (list directory contents) command.

Run a command in terminal window as a different user.

Use a Different Shell

To use a different shell, or operating environment, enter the following:

This command opens a root user account in Z shell.

Use a Different User in the Same Environment

You can keep the environment of the current user account with the –p option:

Replace [other_user] with the actual username you want to switch to.

The user account will switch, but you’ll keep the same home directory. This is useful if you need to run a command as a different user, but you need access to the current user’s data.

The su command to use a different user in the same environment

To verify you remained in the same home environment, use the echo $HOME command that will display the directory you are working in.

Command Comparison: su vs sudo

sudo Command

The sudo command grants a one-time or limited-time access to root functionality. Typically, the sudo command is used to quickly run an administrative command, then return to the user account’s regular permissions.

To provide sudo access, the user has to be added to the sudo group.

Note: By default, some versions of Linux (such as Ubuntu) disable the root account. That means there’s no password assigned to the root user. However you can switch to root by running the following command and entering the currently logged-in user’s password:

su Command

The su command lets you switch the current user to any other user. If you need to run a command as a different (non-root) user, use the –l [username] option to specify the user account. Additionally, su can also be used to change to a different shell interpreter on the fly.

su is an older but more fully-featured command. It can duplicate the functionality of sudo by use of the –c option to pass a single command to the shell.

You now know how to use the su command to temporarily change users and execute commands in Linux. Use the examples provided to get started.

su (Русский)

su (substitute user) — это основная утилита, которая используется для выполнения программ от имени друого пользователя в системе, по умолчанию root.

Поведение su можно настроить с помощью PAM.

Установка

su входит в состав пакета util-linux .

Использование

Чтобы выполнить вход в другого пользователя, передайте имя пользователя, которым вы хотите стать, в команду su:

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

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

Полная документация доступна в su(1) .

Советы и рекомендации

Оболочка входа

По умолчанию su остаётся в текущем каталоге и сохраняет переменные окружения исходного пользователя (а не переключается на переменные нового пользователя).

Обратите внимание на следующие важные противоположные соображения:

  • Иногда системному администратору может быть полезно использовать учётную запись обычного пользователя, а не свою собственную. В частности, иногда наиболее эффективным способом решения проблемы пользователя является вход в учётную запись этого пользователя для воспроизведения или отладки проблемы.
  • Однако во многих ситуациях нежелательно и даже может быть опасно, чтобы пользователь root работал из учётной записи обычного пользователя и с переменными окружения этой учётной записи, а не из root. Случайно используя окружение обычного пользователя, root может установить программу или внести другие изменения в систему, которые поведут себя не так, как если бы они были сделаны в полном окружении root. Например, может быть установлена программа, которая даст обычному пользователю возможность случайно повредить систему или получить несанкционированный доступ к данным.

Таким образом, рекомендуется, чтобы администраторы и другие пользователи, которым разрешено использовать su (а предполагается, что таких пользователей очень мало, если вообще есть), приобрели привычку всегда запускать команду su с опцией -l / —login . Это даёт два эффекта:

  • Переходит из текущего каталога в домашний каталог нового пользователя (например, в каталог /root в случае пользователя root) путём входа от имени этого пользователя.
  • Изменяет переменные окружения на переменные окружения нового пользователя, как это прописано в настройках его оболочки. Например, считывается его

Таким образом, администраторам обычно следует использовать su следующим образом:

Такой же результат получается при добавлении имени пользователя root:

Аналогично, то же самое можно сделать для любого другого пользователя (например, для пользователя с именем archie):

Команда 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:

su -s /usr/bin/zsh user01

Запуск оболочки bash из оболочки zsh для пользователя user01:

su -s /usr/bin/bash user01

Запуск файлового менеджера Midnight Commander для пользователя user01:

Просмотр содержимого директории boot суперпользователем root:

Чтобы выйти из оболочки, открытой командой su можно использовать встроенную команду exit или сочетание клавиш Ctrl+d.

Выводы

Сегодня вы узнали что из себя представляет команда su linux, которая позволяет запустить оболочку от имени другого пользователя, как со сменой окружения, так и без. Узнали как выйти из этой оболочки.

Были рассмотрены различные варианты использования данной команды: для получения прав суперпользователя root, для смены командной оболочки, для выполнения конкретной команды или пакета от имени указанного пользователя.

Инструкция по команде su

Команда su используется для запуска команд от имени другого пользователя, например, для запуска утилит с повышенными привилегиями от имени root.

Чтобы выполнить КОМАНДУ с правами root используйте конструкцию:

Чтобы открыть оболочку для пользователя root с инициализацией его переменных среды (например, $HOME):

Чтобы выполнить команду 'Get-Help Get-Alias -Full' с правами root в оболочке /usr/bin/pwsh-preview:

Для чего нужна команда su

su позволяет запускать команды с замещающим идентификатором пользователя и группы.

При вызове без указания пользователя su по умолчанию запускает интерактивную оболочку от имени пользователя root. Когда указан пользователь, могут быть предоставлены дополнительные аргументы, и в этом случае они передаются оболочке.

Для обратной совместимости su по умолчанию не изменяет текущий каталог и устанавливает только переменные среды $HOME и $SHELL (плюс $USER и $LOGNAME, если целевой пользователь не является пользователем root). Рекомендуется всегда использовать опцию «—login» (вместо её псевдонима «»), чтобы избежать побочных эффектов, вызванных смешиванием сред.

su в основном предназначен для непривилегированных пользователей, рекомендуемое решение для привилегированных пользователей (например, сценарии, выполняемые пользователем root) — использовать команду runuser без идентификатора пользователя, которая не требует аутентификации и предоставляет отдельную конфигурацию PAM. Если сеанс PAM вообще не требуется, рекомендуется использовать команду setpriv.

Обратите внимание, что su во всех случаях использует PAM (pam_getenvlist) для окончательной модификации среды. Параметры командной строки, такие как —login и —preserve-environment, влияют на среду до того, как она будет изменена PAM.

Что использовать sudo или su?

У программы su похожее назначение: запустить команду с подстановкой ID другого пользователя и группы. То есть одинакового результата можно добиться используя как sudo, так и su.

Различия между этими программами вы найдёте в разделе «Что использовать sudo или su?».

Смотрите также:

  • Что такое sudo
  • Как пользоваться sudo

Как использовать команду su

Синтаксис команды следующий:

Опции команды su:

-c, —command=КОМАНДА

Передаёт команду оболочке с параметром -c.

-f, —fast

Передаёт значение -f оболочке, что может оказаться полезным, а может и не оказаться полезным, в зависимости от оболочки.

-g, —group=ГРУППА

Указывает основную группу. Эта опция доступна только пользователю root.

-G, —supp-group=ГРУППА

Укажите дополнительную группу. Эта опция доступна только пользователю root. Первая указанная дополнительная группа также используется как основная группа, если не указан параметр —group.

-, -l, —login

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

  • • очищает все переменные среды, кроме $TERM и переменных, указанных в —whitelist-environment
  • • инициализирует переменные среды $HOME, $SHELL, $USER, $LOGNAME и $PATH
  • • изменяет домашнюю папку на папку целевого пользователя
  • • устанавливает argv[0] оболочки на «», чтобы сделать оболочку оболочкой с входом в систему

-m, -p, —preserve-environment

Сохраните всю среду, т.е. не устанавливайте $HOME, $SHELL, $USER или $LOGNAME. Этот параметр игнорируется, если указан параметр —login.

-P, —pty

Создайте псевдотерминал для сеанса. Независимый терминал обеспечивает лучшую безопасность, поскольку пользователь не использует терминал совместно с исходным сеансом. Это можно использовать, чтобы избежать внедрения терминала TIOCSTI ioctl и других атак на безопасность дескрипторов файлов терминала. Весь сеанс также можно переместить в фоновый режим (например, «su —pty — username -c application &»). Если псевдотерминал включён, su работает как прокси-сервер между сеансами (копирует stdin и stdout).

Эта функция в основном предназначена для интерактивных сеансов. Если стандартный ввод — это не терминал, а, например, канал (например, echo "date" | su —pty), то флаг ECHO для псевдотерминала отключён, чтобы избежать беспорядочного вывода.

-s, —shell=ОБОЛОЧКА

Запускает указанную оболочку вместо оболочки по умолчанию. Оболочка для запуска выбирается в соответствии со следующими правилами в следующем порядке:

  • оболочка, указанная с помощью —shell
  • оболочка, указанная в переменной окружения $SHELL, если используется опция —preserve-environment
  • оболочка, указанная в записи passwd целевого пользователя
  • /bin/sh

Список доступных в операционной системе оболочек можно вывести командой:

Смотрите также:

  • Как в Linux изменить login shell (оболочку входа в систему). Инструкция по команде chsh
  • Как узнать, какая оболочка используется в Linux

Если у целевого пользователя ограниченная оболочка (то есть не указана в /etc/shells), параметр —shell и переменные среды SHELL игнорируются, если вызывающий пользователь не является пользователем root.

—session-command=КОМАНДА

То же, что и -c, но не создаёт новый сеанс.

-w, —whitelist-environment=СПИСОК

Не сбрасывать переменные среды, указанные в списке, разделённом запятыми, при очистке среды для —login. Белый список игнорируется для переменных среды $HOME, $SHELL, $USER, $LOGNAME и $PATH.

-V, —version

Отобразите информацию о версии и выйдите.

-h, —help

Показать текст справки и выйти.

Типичными примерами использования su является выполнение КОМАНДЫ от имени root:

Также su может использоваться для открытия интерактивной оболочки с правами root:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *