В процессе работы у пользователя часто возникает задача выполнить команду с иными привилегиями. Например, когда он желает установить новую программу, обновить систему, настроить сетевой экран и др. В этом случае ему приходит на помощь команда 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, без смены окружения оболочки:
su
Обратите внимание, что здесь вам нужно набрать пароль не своего пользователя, а именно того, от имени которого вы хотите авторизоваться. В данном случае, пользователя root. Если вы получаете ошибку сбой при проверке подлинности su linux, то это может означать, что либо вы ввели пароль неверно, либо пароль для этого пользователя не задан. Такое можно встретить у пользователя root в Ubuntu и Linux Mint. Информацию о том как установить пароль вы можете найти в этой статье. Смена пользователя на суперпользователя root со сменой параметров окружения оболочки:
su -
Смена пользователя на пользователя user01:
su user01
Смена пользователя на пользователя user01 со сменой окружения:
su - user01
Запуск оболочки zsh для пользователя user01:
su -s /usr/bin/zsh user01
Запуск оболочки bash из оболочки zsh для пользователя user01:
su -s /usr/bin/bash user01
Запуск файлового менеджера Midnight Commander для пользователя user01:
su -c ‘mc’ user01
Просмотр содержимого директории boot суперпользователем root:
su -c ‘ls /boot’
Чтобы выйти из оболочки, открытой командой su можно использовать встроенную команду exit или сочетание клавиш Ctrl+d.
Выводы
Сегодня вы узнали что из себя представляет команда su linux, которая позволяет запустить оболочку от имени другого пользователя, как со сменой окружения, так и без. Узнали как выйти из этой оболочки.
Были рассмотрены различные варианты использования данной команды: для получения прав суперпользователя root, для смены командной оболочки, для выполнения конкретной команды или пакета от имени указанного пользователя.
скажите, а в чем отличие от команды sudo?
Su переключает вас в аккаунт root и требует пароля root. Sudo запускает с привилегиями root одну команду - она не переключает вас в аккаунт суперпользователя и не требует отдельного пароля root.
Комманда sudo позволяет не заходить под пользователем root и запускать многие комманды, но не все. Так, например для
apt-get install, без sudo не запустится,
нужны права, которые дает комманда sudo. К другим коммандам, запускающим что-либо, глубже изменений названий папок, их создания, перемещения по каталогам и т.д., тоже может потребоваться sudo.
Говоря проще - sudo больше прав/возможностей, чем у рядового пользователя.
sudo -i ?
sudo --help Вам всё расскажет, только не ленитесь 🙂
Очень полезная команда для начинающих любителей Линуса Торвальдса, особенно вкупэ с rm -rf / )
На скриншотах хорошо бы обрезать лишнее, оставить только терминал. На маленьком экране плохо видно.