Как запустить команду от имени системного администратора (root)

66

Мне нужно запустить команду с правами администратора. Кто-то сказал, что я должен запустить команду от имени пользователя root. Как мне это сделать?

Стефан
источник
2
пожалуйста, посмотрите мета обсуждение этого вопроса
Стефан

Ответы:

94

Основные две возможности командной строки:

  • Используйте suи введите пароль root при появлении запроса.
  • Поставьте sudoперед командой и введите свой пароль при появлении запроса.

Выполнение команды оболочки от имени пользователя root

sudo (предпочтительно, когда не работает графический дисплей)

Это предпочтительный метод на большинстве систем, включая Ubuntu, Linux Mint, (возможно) Debian и другие. Если вы не знаете отдельный пароль пользователя root, используйте этот метод.

Судо требует, чтобы вы набрали свой собственный пароль. (Цель состоит в том, чтобы ограничить ущерб, если вы оставите клавиатуру без присмотра и разблокировки, а также убедиться, что вы действительно хотите выполнить эту команду, а это не было, например, опечаткой.) Она часто настроена так, чтобы не запрашивать несколько раз минут, чтобы вы могли запустить несколько sudoкоманд подряд.

Пример:

sudo service apache restart

Если вам нужно запустить несколько команд от имени пользователя root, добавьте к каждой из них префикс sudo. Иногда удобнее запускать интерактивную оболочку от имени пользователя root. Вы можете использовать sudo -iдля этого:

$ sudo -i
# command 1
# command 2
...
# exit

Вместо sudo -i, вы можете использовать sudo -s. Разница заключается в том, что -iвновь я nitializes среды к вменяемым по умолчанию, в то время как -sиспользует файлы конфигурации лучше или хуже.

Для получения дополнительной информации посетите веб-сайт sudo или введите man sudoв своей системе. Судо очень настраивается; например, его можно настроить так, чтобы определенный пользователь мог выполнять только определенные команды от имени пользователя root. Прочтите справочную sudoersстраницу для получения дополнительной информации; используйте sudo visudoдля редактирования файла sudoers.

су

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

Пример:

su -c 'service apache restart'

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

Для запуска нескольких команд от имени пользователя root удобнее запускать интерактивную оболочку.

$ su
# command 1
# command 2
...
# exit

В некоторых системах вы должны быть в группе номер 0 (вызываемой wheel), чтобы использовать su. (Смысл в том, чтобы ограничить ущерб, если кто-то случайно утвердил пароль root.)

Вход в систему как root

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

Однопользовательский режим

Однопользовательский режим или уровень выполнения 1 также дает вам привилегии root. Это предназначено, прежде всего, для ситуаций аварийного технического обслуживания, когда загрузка на многопользовательском уровне выполнения невозможна. Вы можете загрузиться в однопользовательском режиме, передав singleили emergencyв командной строке ядра. Обратите внимание, что загрузка в однопользовательском режиме отличается от обычной загрузки системы и входа в систему от имени пользователя root. Скорее, система только запустит службы, определенные для уровня выполнения 1. Как правило, это наименьшее количество служб, необходимых для использования работоспособной системы.

Вы также можете получить в однопользовательский режим с помощью команды telinit: telinit 1; однако эта команда требует, чтобы вы уже получили права root с помощью другого метода для запуска.

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

Другие программы

Calife

Calife позволяет запускать команды от имени другого пользователя, вводя собственный пароль, если он авторизован. Это похоже на гораздо более распространенное sudo (см. Выше). Calife более легкий, чем sudo, но также менее настраиваемый.

Op

Op позволяет запускать команды от имени другого пользователя, включая пользователя root. Это не полномасштабный инструмент для выполнения произвольных команд: печатаемые с opпоследующим мнемонические сконфигурированной системным администратором , чтобы выполнить конкретную команду.

Супер

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

Запуск графической команды от имени пользователя root

Смотрите также Википедия .

PolicyKit (предпочтительно при использовании GNOME)

Просто добавьте префикс к желаемой команде pkexec. Имейте в виду, что хотя это работает в большинстве случаев, оно не работает универсально.

Смотрите man pkexecдля получения дополнительной информации.

KdeSu, KdeSudo (предпочтительно при использовании KDE)

kdesuи kdesudoявляются графическими интерфейсами для suи sudoсоответственно. Они позволяют запускать программы X Window от имени root без каких-либо хлопот. Они являются частью KDE . Тип

kdesu -c 'command --option argument'

и введите пароль пользователя root или введите

kdesudo -c 'command --option argument'

и введите свой пароль (если разрешено запускать sudo). Если вы включите опцию «сохранить пароль» в KdeSu, вам придется вводить пароль root только один раз за сеанс входа в систему.

Другие программы

Ktsuss

Ktsussоставь su простым, глупым») - это графическая версия su.

Beesu

Beesu - это графический интерфейс команды su, которая заменила Gksu в операционных системах на базе Red Hat. Он был разработан в основном для RHEL и Fedora.

Устаревшие методы

gksu а также gksudo

gksuи gksudoявляются графическими интерфейсами для suи sudoсоответственно. Они позволяют запускать программы X Window от имени root без каких-либо хлопот. Они являются частью Gnome . Тип

gksu command --option argument

и введите пароль пользователя root или введите

gksudo command --option argument

и введите свой пароль (если разрешено запускать sudo).

gksuи gksudoустарели. Они были заменены PolicyKit в GNOME, и многие дистрибутивы (такие как Ubuntu) больше не устанавливают их по умолчанию. Вы не должны зависеть от их доступности или правильной работы.

Вручную с помощью одного из методов на основе оболочки

Используйте один из методов в разделе «Запуск команды оболочки в качестве корневого раздела». Вам нужно будет убедиться, что ни DISPLAYпеременная среды, ни XAUTHORITYсреда не будут сброшены при переходе к root. Это может потребовать дополнительной настройки тех методов, которые выходят за рамки этого вопроса.

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

Редактирование файла как root

Смотрите Как мне отредактировать файл как root?

Жиль
источник
2
Следует отметить, что это sudoбудет работать только в том случае, если (1) он установлен и (2), если вы используете файл sudoers и ему разрешено выполнять операцию.
n0pe
2
это должно быть обновлено. pkexecзаменяет gksu/ gksudoво многих дистрибутивах в настоящее время.
стружка
1
@strugee - ты собирался попробовать это обновить? Материал под Redhat тоже не правильный.
SLM
8

Используйте su:

$ su -c command

или же

$ su
# command
# exit

В любом случае вам будет предложено ввести rootпароль. Для получения дополнительной информации см. Страницу руководства .

Стивен Д
источник
3

Поскольку вопрос не был специфичен для Linux, вот как вы достигаете той же цели в Solaris 9+ (или Trusted Solaris 8):

Solaris, начиная с версии 9, включает в себя набор инструментов, ласково именуемых RBAC или Role Based Access Control.

Суть RBAC заключается в том, что посредством предоставления авторизаций и прав пользователям и / или ролям или предоставления ролей пользователям вы можете создавать невероятно детализированные модели для того, кто может выполнять, с какими привилегиями.

По сути, вы идентифицируете авторизацию в / etc / security / auth_attr, а затем предоставляете их пользователям или ролям в / etc / user_attr.

Вы определяете профили в / etc / security / prof_attr. Затем вы связываете команды с этими профилями в / etc / security / exec_attr с последующим назначением этих профилей пользователям в файле / etc / user_attr.

После того, как все это сделано, вы фактически запускаете pfexec <command>команду с привилегиями или полномочиями, предоставленными этому пользователю для этой команды.

Приятной особенностью RBAC является то, что нет никаких дополнительных привилегий, предоставляемых самой команде или пользователю, только комбинации user + command. Так что это безопаснее, чем делать бинарные + или просто использовать sudo, чтобы пользователь мог выполнять практически все что угодно. (Я знаю, что вы можете заблокировать sudo, но по моему опыту большинство людей этого не делают)

Еще одним преимуществом RBAC является то, что вы можете сделать root учетной записью роли и назначить эту роль пользователям, которые могут стать пользователем root с помощью команды 'su' и пароля root. Пользователь root также сможет войти в однопользовательский режим, что лучше (на мой взгляд), чем модель Linux, где вы можете отключить пароль root passwd -d rootили заблокировать учетную запись root passwd -l root, оба из которых делают вход в систему как root довольно тяжело когда что-то идет не так.

У Бена Роквуда есть отличный пост в блоге о RBAC, который можно прочитать в разделе Использование RBAC в (Open) Solaris .

Тим Кеннеди
источник
3

Или вы можете дать некоторые команды сверхдержавы. Я говорю о специальных разрешениях, в которых команды выполняются с разрешения владельца.

Получите путь команды #which <command>и установите SUID или SGID для этого пути.

PS - биты SUID и SGID следует указывать с осторожностью. Они могут сделать вашу систему небезопасной.

Ayush Goyal
источник