Что su делает в Linux и как им пользоваться?

Примеры команды Linux «ss» Изучение

Команда Unix / Linux su ( Замещающий пользователь ) позволяет пользователям становиться другими пользователями. Считалось, что эта команда повысит привилегии, став привилегированным пользователем; поэтому, если пользователь не указан, по умолчанию используется root.

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

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

su

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

su <User>

Как вы можете видеть в приведенном выше примере, пользователь перешел с root на указанного пользователя linuxhint. Тем не менее, текущий каталог остается. Вы можете реализовать флаг -l, чтобы изменить текущий каталог для домашнего каталога целевого пользователя, автоматически перемещая вас из текущего каталога в домашний каталог пользователя.

su -l <User>

При реализации флага -l изменяется не только текущий каталог. Другие особенности этого флага:

  • Переменные среды очищаются, за исключением переменной TERM для работы с терминалом и переменных из белого списка.
  • Загружает переменные среды USER, LOGNAME, HOME, SHELL и PATH.
  • Превращает оболочку в оболочку входа в систему.
  • Изменяет текущий каталог для дома целевого пользователя.

Другой способ воспроизвести такое же поведение — заменить флаг -l просто дефисом ( — ), как показано ниже.

su — <User>

Как видите, пользователь сменил и текущий каталог.

Су команда может быть использована для выполнения команд в качестве другого пользователя. Как показано в приведенных ниже примерах, добавление флага -c (Команда) позволяет выполнять команды с привилегиями, не обращаясь к корню.

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

Как видите, у пользователя нет прав на чтение корневого каталога. Как показано ниже, это можно сделать с помощью команды su с флагом -c (Command).

su -c ‘ls /root’ root

Как вы видите в синтаксисе, вам нужно вызвать команду su с флагом -c, за которой следует команды, которые вы хотите запустить, в кавычках и за которым следует пользователь, которого вы хотите запустить, как, в данном случае, root Пользователь.

Команда runuser

Существует альтернатива команде su с именем runuser. Разница между этими двумя командами в том, что runuser может использовать только root. Команда runuser не запрашивает пароль, и у нее другая конфигурация PAM (подключаемые модули аутентификации Linux).

Как вы, возможно, знаете, запускать браузеры с правами root запрещено, что является плохой практикой; ваша система должна препятствовать этому.

Если вы являетесь пользователем root и хотите запустить небезопасное приложение с правами root, вы можете использовать как команду su, за которой следует флаг -c, как объяснялось ранее, так и команду runuser, показанную в приведенном ниже примере, за которой следует флаг -u, пользователя, от имени которого вы хотите запустить команду, и команду, которую вы хотите выполнить.

runuser -u linuxhint firefox

Команда sudo

Команда sudo — наиболее часто используемая альтернатива для запуска команд от имени привилегированного пользователя. Это ограниченный способ получения привилегий. При использовании sudo вы не станете пользователем root, но получите разрешение на выполнение определенной команды.

При использовании ранее описанной команды su вам необходимо ввести пароль целевого пользователя. Также при использовании sudo вместо ввода пароля целевого пользователя необходимо ввести пароль текущего пользователя; если пользователь входит в группу sudoers, он сможет выполнить команду; если пользователь не входит в группу sudoers, он не сможет.

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

sudo ls /root

Чтобы пользователь мог запускать команды с помощью sudo, вам необходимо добавить его в группу sudoers. Чтобы добавить пользователя в группу sudoers, выполните следующую команду.

usermod -aG sudo <User>

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

Заключение

Команды su, runuser и sudo легко реализовать, и они являются одними из самых основных команд Linux, которые должен знать любой пользователь. Изучение того, как использовать эти команды, повысит безопасность со стороны пользователя (наиболее уязвимого). Префикс sudo для привилегированных команд — лучшая альтернатива для обеспечения безопасности вашей системы. Некоторые дистрибутивы Linux автоматически отключают вход в систему root, оставляя sudo в качестве метода по умолчанию.

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

Оцените статью
bestprogrammer.ru
Добавить комментарий