5

Пожалуйста, объясните мне, в чем разница: sudo su "username" и su "username"

Который имеет более высокие привилегии? Если я войду в root с sudo su "username", я получу root только для одной команды? Может быть, начало сценария работает нормально, а остальное - нет? Так что в этом случае su "username" предлагается, потому что он имеет более высокие привилегии? Пожалуйста, объясните мне разницу между двумя командами, спасибо.

1 ответ1

9

Вот различия:

  • su <someuser> запускает оболочку для пользователя someuser . Если вы не root, вам будет предложено ввести пароль для someuser .
  • su (без имени пользователя) запустить оболочку для пользователя root (после запроса пароля root).
  • sudo запрашивает ваш пароль и (при условии, что у вас есть права sudo) выполняет команду с правами суперпользователя (sudo reboot запрашивает ваш пароль и перезагружает компьютер).
  • sudo su <somesuer> выполняет su с правами root. Так что не просит пароль someuser «s. Однако он запросит ваш пароль для подтверждения ваших прав sudo. После этого он запустит оболочку для пользователя someuser .

С точки зрения привилегий, нет никакой разницы для оболочки, которая открывается sudo su <someuser> или su <someuser> . Это не проблема безопасности, поскольку процесс оболочки не может перейти к привилегиям родительского процесса.

Вы можете увидеть разницу, если вы посмотрите на дерево процессов. sudo su <someuser> показывает (в предположении bash):

+───bash───su───bash

Пока su <someuser> показывает:

+───bash───sudo───su───bash

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

  • Запустите скрипт из cron (или любого другого варианта) и запустите его как root
  • Запустите скрипт из своей учетной записи и используйте параметр -S sudo следующим образом: echo <yourpassword> | sudo -S su -l <someuser> или даже лучше: echo <yourpassword> | sudo -S su -l <someuser> -c '<somecommand>' . Убедитесь, что скрипт доступен для чтения только вам самим, поскольку в нем есть ваш пароль. Более косвенно, вы можете хранить свой пароль в файле и присваивать ему sudo. Тогда ваш сценарий может быть читаемым, но ваш файл паролей не может быть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .