sudo и su в Linux
Основные понятия
При использовании su или sudo важно учитывать конкретный сценарий запуска новой оболочки: нужна ли нам среда целевого пользователя или нет? Если да, то нужно использовать параметры, запускающие оболочку с логином, а если нет — параметры, запускающие оболочку без логина.
su - Измените идентификатор пользователя или станьте суперпользователем (root). С помощью этой команды можно запустить как оболочку с логином, так и без него
su (от англ. Substitute User — «подменить пользователя») позволяет переключаться с текущего пользователя на другого внутри текущей терминальной сессии. Некоторые особенности:
По умолчанию переключается на пользователя root, если имя пользователя не указано.
Для использования su необходимо ввести соответствующий пароль (если только команду не вызывает пользователь root).
Если введён правильный пароль, su создаёт новый процесс командного интерпретатора с такими же реальными и эффективными идентификаторами пользователя и группы, что и у указанного пользователя
Важно: если запустить su без ключа (например, su или su localadmin), то все переменные, за исключением PATH, USER и некоторых других, будут унаследованы от пользователя, который запустил утилиту su.
su -l (или --login) имитирует «полноценный» вход под оболочкой пользователя. Некоторые особенности:
Загружает окружение целевого пользователя, включая его файлы инициализации (.bashrc, .profile), устанавливает PATH и меняет каталог на домашний каталог.
Это рекомендуется для переключения пользователей, так как позволяет работать в окружении целевого пользователя так же, как при полноценном входе в систему.
#Вход в оболочку под пользователем root
su
#запустят интерактивную оболочку для входа в систему под именем user2
su - mega
su -l mega
su --login mega
#запустит интерактивную оболочку без входа в систему под именем user2
su user2
#запустят интерактивную оболочку для входа в систему под именем root
su - root или su -
#запустят интерактивную оболочку без входа в систему под именем root
su root или su
#Выполняйте команды от имени другого пользователя (в том числе суперпользователя)
Команда в основном используется для временного получения прав суперпользователя, пользователь, использующий ее, должен быть указан в файле sudoers
Точно так же, как su, sudo позволяет нам вызывать оболочки как для входа, так и без входа в систему:
Чтобы добавить пользователей в sudoers , нужно стать root , а затем выполнить команду
#запустят интерактивную оболочку для входа в систему под именем user2
sudo su - user2
sudo su -l user2
sudo su --login user2
#запустят интерактивную оболочку без входа в систему под именем user2
sudo su user2
sudo -u user2 -s
#запустят интерактивную оболочку для входа в систему под именем root
sudo su - root
sudo su
sudo -i
#запустят интерактивную оболочку для входа в систему под именем root, выполнят команду и вернутся к исходному пользователю
sudo -i
#запустят интерактивную оболочку без входа в систему под именем root
sudo su root
sudo su
#запустит оболочку без входа в систему под именем root
sudo -s
sudo -u root -s
Источники
Связанные темы
Использование команды tee в Linux
Использование wget и curl в Linux
Команда chattr и lsattr в Linux
Использование awk Linux Alpine
Блокировка пользователя в Linux
Проверка на необходимость перезапуска после обновления пакетов
Стандартные потоки и перенаправление ввода/вывода в Linux
Архивирование и сжатие файлов в Linux
Полезные команды и скрипты Linux
Условная конструкция if в Linux
Использование оператора select в языке shell
Внутренние и внешние команды linux
Использование конструкции case в Linux






