Как выполнить команду в командной строке от имени администратора linux

Обновлено: 06.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Calife

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

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

Супер

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поскольку вопрос не был специфичен для 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 .

В любой Linux-системе обязательно есть один привилегированный пользователь — root. Этот пользователь имеет права на выполнение любых действий, удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны, все остальные пользователи системы обычно не имеют большинства необходимых прав, например, прав на установку программ, поскольку это является административной операцией, права на которую есть только у root. Ещё одной распространённой операцией, доступной только суперпользователю, является копирование и изменение файлов в системных папках, куда обычный пользователь доступа не имеет.

Раньше данная проблема решалась достаточно просто: при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду su . Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе, такая схема работает неплохо, однако у неё есть много существенных недостатков, в частности, невозможно никак (точнее, очень сложно) ограничивать административные привилегии только определённым кругом задач.

Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo .

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

Что такое sudo

sudo — это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.

Где используется sudo

sudo используется всегда, когда вы запускаете что-то из меню Администрирования системы. Например, при запуске Synaptic вас попросят ввести свой пароль. Synaptic - это программа управления установленным ПО, поэтому для её запуска нужны права администратора, которые вы и получаете через sudo вводя свой пароль.

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

Запуск графических программ с правами администратора

Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt + F2 .

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

Вместо gksudo можно подставить gksu , кроме того, пользователи KDE должны вместо gksudo писать kdesu . У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска

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

Запуск программ с правами администратора в терминале

Для запуска в терминале команды с правами администратора просто наберите перед ней sudo :

У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter . После ввода пароля указанная команда исполнится от имени root.

Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале

Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды

с правами root исполнится только cat , поэтому файл result.txt может не записаться. Нужно либо писать sudo перед каждой командой, либо временно переходить под суперпользователя.

Получение прав суперпользователя для выполнения нескольких команд

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

Для выхода обратно в режим обычного пользователя наберите exit или просто нажмите Ctrl + D .

Использование традиционного root аккаунта и команды su

Разблокировка учетной записи root приводит неоправданным рискам (работая постоянно под рутом вы имеете 100500 способов «отстрелить себе ногу»), а также упрощает получение доступа к вашему компьютеру злоумышленником.

Ubuntu 11.04 и младше

Для входа под root достаточно задать ему пароль:

Потом на экране входа нажмите Другой… и введите логин (root) и пароль, который вы задали.

Ubuntu 11.10 и старше

Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.

1. Устанавливаем root пароль. Введите в терминал:

2. Включаем пункт «Введите логин». Введите в терминал:

В конце файла допишите:

3. Перезагружаем lightdm. Введите в терминал:

Все, на экране входа появится пункт «Логин». В поле логин вводим «root», в поле пароль - пароль, который мы задали на первом этапе.

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

Настройка sudo и прав доступа на выполнение различных команд

sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers . Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду

По умолчанию, в нём написано, что все члены группы admin имеют полный доступ к sudo , о чём говорит строчка

Подробнее о синтаксисе и возможностях настройки этого файла можно почитать выполнив

Разрешение пользователю выполнять команду без ввода пароля

И в конец файла дописать строку

Внимание! Вышеописанные действия не отменяют необходимости ввода команды sudo перед вашей командой

Создание синонимов (alias`ов)

Для того, чтобы не только не вводить пароль для sudo, но и вообще не вводить sudo, сделайте следующее: откройте файл .bashrc, находящейся в вашем домашнем каталоге

и добавьте в конец файла строки

Время действия введённого пароля

Возможно, вы хотите изменить промежуток времени, в течение которого sudo действует без ввода пароля. Этого легко добиться добавив в /etc/sudoers (visudo) примерно следующее:

Здесь sudo для пользователя foo действует без необходимости ввода пароля в течение 20 минут. Если вы хотите, чтобы sudo всегда требовал ввода пароля, сделайте timestamp_timeout равным 0.

sudo не спрашивает пароль

sudo без пароля — чудовищная дыра в безопасности, кому попало разрешено делать что угодно. Если вы разрешили это намеренно — срочно верните обратно как было.

Однако, в некоторых случаях sudo внезапно перестаёт требовать пароль само по себе. Если сделать visudo , то можно увидеть примерно такую строку, которую пользователь вроде бы не добавлял:

Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root запускать только этот Connect Manager, примерно так:

Команда sudo ( s ubstitute u ser and do , подменить пользователя и выполнить ) позволяет строго определенным пользователям выполнять указанные программы с административными привилегиями без ввода пароля суперпользователя root . Если быть точнее, то команда sudo позволяет выполнять программы от имени любого пользователя, но, если идентификатор или имя этого пользователя не указаны, то предполагается выполнение от имени суперпользователя root . Таким образом, использование sudo позволяет выполнять привилегированные команды обычным пользователям без необходимости ввода пароля суперпользователя root . Список пользователей и перечень их прав по отношению к ресурсам системы может быть настроен оптимальным образом для обеспечения комфортной и безопасной работы. Например, команда sudo в Ubuntu Linux, используется в режиме, позволяющем выполнять любые задачи администрирования системы без интерактивного входа под учетной записью root .

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

Командная строка sudo может быть использована в следующих форматах:

sudo -h | -K | -k | -V

sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]

sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]

sudo [-AbEHknPS] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] [ ]

sudo -e [-AknS] [-C num] [-g group] [-h host] [-p prompt] [-u user] file

Параметры командной строки:

-A, --askpass - использовать вспомогательную программу для ввода пароля

-b, --background - выполнить команду в фоновом режиме

-C, --close-from=num - закрыть все дескрипторы файлов >= num

-E, --preserve-env - сохранить пользовательское окружение при выполнении команды

-e, --edit - редактировать файлы вместо выполнения команды

-g, --group=group - выполнить команду от имени или ID указанной группы

-H, --set-home - установить для переменной HOME домашний каталог указанного пользователя

-h, --help - показать справку и выйти

-h, --host=host - выполнить команду на узле (если поддерживается модулем)

-i, --login - запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду

-K, --remove-timestamp - полностью удалить файл с timestamp

-k, --reset-timestamp - объявить недействительным файл timestamp

-l, --list - показать список прав пользователя или проверить заданную команду; в длинном формате используется дважды

-n, --non-interactive - автономный режим без вывода запросов пользователю

-P, --preserve-groups - сохранить вектор группы вместо установки целевой группы

-p, --prompt=prompt - использовать указанный запрос пароля

-S, --stdin - читать пароль из стандартного ввода

-s, --shell - запустить оболочку от имени указанного пользователя; также можно задать команду

-U, --other-user=user - в режиме списка показывать права пользователя

-u, --user=user - выполнить команду (или редактировать файл) от имени или ID указанного пользователя

-V, --version - показать сведения о версии и выйти

-v, --validate - обновить временную метку пользователя без выполнения команды

-- - прекратить обработку аргументов командной строки

Примеры использования команды sudo :

sudo –l - отобразить список команд, доступных для выполнения текущему пользователю. Кроме списка команд отображаются параметры среды, которые будут применяться при их выполнении.

sudo –ll - отобразить список команд, доступных для выполнения текущему пользователю в длинном (расширенном) формате.

В данном формате вместо краткого синтаксиса для списка разрешенных команд в виде (ALL : ALL) ALL отображается подробное описание прав пользователя:

sudo lshw -C network - отобразить информацию о сетевом оборудовании с правами суперпользователя root

sudo –l –U user1 - посмотреть список команд, доступных для выполнения пользователю user1 . Для выполнения данной команды пользователь должен быть root или иметь право на выполнение команды sudo -l , что обеспечивается настройками утилиты sudo в файле /etc/sudoers

sudo ipmitool sensor - выполнить команду ipmitool sensor с правами root .

sudo su - выполнить команду su , т.е. создать сеанс суперпользователя root

sudo -i - запустить командную оболочку с правами суперпользователя root . Для выполнения данной команды пользователь должен иметь право на выполнение программы оболочки в среде sudo , например - /bin/bash

sudo ls /usr/local/protected - получить список файлов каталога, доступного только root

sudo -u user2 ls

- получить список файлов домашнего каталога пользователя user2

www/htdocs/index.html - редактировать файл

www/htdocs/index.html от имени пользователя www

sudo -g adm view /var/log/syslog - просмотреть файл системного журнала, доступного только суперпользователю root и членам группы adm

sudo -u user1 -g users2 vi /home/users2/textfile.txt - редактировать текстовый файл как пользователь user1, с принадлежностью к первичной группе users2

sudo -E /usr/bin/firefox - запустить браузер firefox от имени суперпользователя root , сохранив параметры среды текущего пользователя. Возможность выполнения команд с сохранением среды пользователя должна быть разрешена параметром SETENV в настройках файла конфигурации sudo

Файл конфигурации /etc/sudoers

Настройки sudo определяется содержимым файла /etc/sudoers . Поскольку ошибочные данные в данном файле могут привести к серьезным проблемам доступа к ресурсам системы, рекомендуется выполнять его изменение с помощью специального редактора sudoedit ( в некоторых дистрибутивах - visudo ), который поддерживает функции проверки синтаксиса и значительно снижает риск создания неработоспособной конфигурации sudo .

Содержимое файла /etc/sudoers определяет имена пользователей и групп, перечень выполняемых программ, необходимость введения паролей, и некоторые другие настройки, связанные с формированием переменных окружения при смене пользователя. Кроме данного файла, настройки sudo могут определяться содержимым файлов из каталога /etc/sudoers.d , что позволяет структурировать систему предоставления прав на использование sudo в виде набора файлов с осмысленными именами, что полезно при большом количестве пользователей и сложной системе разграничения прав. Имена файлов конфигураций в каталоге /etc/sudoers.d могут быть любыми, но их содержимое должно полностью соответствовать формату файла /etc/sudoers .

Синтаксис настроек в файле /etc/sudoers позволяет использовать специальные псевдонимы ( Alias-ы ), с помощью которых значительно упрощается как настройка, так и восприятие конфигурационной информации sudo .

В файле конфигурации /etc/sudoers возможно использование четырех разновидностей псевдонимов:

User_Alias - списки пользователей, для которых настраивается политика использования sudo .

Runas_Alias - списки пользователей, от имени которых может быть задано выполнение команд через sudo .

Host_Alias - списки узлов, с которых выполняется подключение к системе.

Cmnd_Alias - списки команд, использующиеся в настройках, выполняемых директивами файла /etc/sudoers

Host_Alias ADMCOMPS = localhost, server, admin - определяет псевдоним ADMCOMPS , который определяет группу компьютеров с именами localhost, server, admin .

Host_Alias MAILSERVERS = 192.168.0.100, smtp2 - определяет группу из двух компьютеров с указанными IP и именем. Возможно использование адресов подсетей.

User_Alias ADMINS = jsmith, admusr - определяет группу ADMINS , в которую входят пользователи с именами jsmith и admusr .

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

Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

Аналогичным образом можно создать псевдонимы для групп команд, выполнение которых делегируется одиночным или объединенных псевдонимами пользователей.

Основная часть настроек в файле /etc/sudoers задает правила, определяющие, какие пользователи, каких компьютеров, какие команды могут выполнять. Формат записей:

user - имена или псевдонимы пользователей.

MACHINE - имена или псевдонимы компьютеров

COMMANDS - секция команд, включающая имена или псевдонимы команд и дополнительные параметры.

Обычно, в файле /etc/sudoers присутствует директива, разрешающая выполнение пользователю root любых команд при любом подключении к системе:

Аналогичным образом можно разрешить выполнение через sudo всех команд для пользователя, например, с именем user

user ALL=(ALL) ALL

При данной настройке, у пользователя будет запрашиваться пароль ( его личный, а не пароль суперпользователя root ). При необходимости, можно настроить секцию команд таким образом, чтобы пароль не запрашивался, с использованием параметра NOPASSWD :

user ALL=(ALL) NOPASSWD: /usr/bin/su, /usr/bin/drakxconf - пароль будет запрашиваться при выполнении пользователем user через sudo всех команд, кроме su и drakxconf

Использование псевдонимов позволяет уменьшить необходимое число записей для определения прав пользователей, которые могут подключаться к системе с разных компьютеров и входить в разные группы:

ADMINS localhost=(ALL) NOPASSWD:ALL - разрешить группе пользователей, определенной псевдонимом “ADMINS” выполнять любые команды при подключении через петлевой интерфейс “localhost” без ввода пароля..

ADMINS ALL= NETWORKING, SOFTWARE - разрешить группе пользователей, объединенных псевдонимом “ADMINS” выполнять группы команд, объединенные псевдонимами “NETWORKING” и “SOFTWARE”.

Для существующих в системе групп пользователей можно также разрешать выполнение отдельных команд или групп команд:

%users localhost=/sbin/shutdown -h now - разрешить локальным пользователям выключение компьютера.

%operators ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom - разрешить членам группы “operators” монтирование и размонтирование указанных устройств.

%powerusers ALL=NETWORKING, NOPASSWD: /usr/bin/su - разрешить членам группы “powerusers” выполнять команды группы “NETWORKING” с вводом пароля и команду “su” без пароля.

Довольно часто возникает необходимость исключения разрешения на выполнение отдельных команд из списка, объединенных псевдонимом . В этом случае, перед именем команды или псевдонима ставится восклицательный знак – !

ADMINS ALL= ALL, !NETWORKING - разрешить группе пользователей, объединенных псевдонимом “ADMINS” выполнение всех команд, кроме команд, объединенных псевдонимом “NETWORKING”

В следующем примере, используется конфигурация команд, разрешающая выполнение через sudo для всех пользователей группы “ADMINS”, всех команд, кроме команд смены оболочки :

ADMINS ALL= ALL, !/bin/bash, !/usr/bin/su

Кроме настроек доступа, в файле /etc/sudoers присутствуют директивы Defaults , определяющие некоторые настройки путей исполняемых файлов и создание переменных окружения при выполнении команд:

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

Defaults env_keep = "COLOS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"

Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"

Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"

Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"

Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

По умолчанию, если интервал выполнения команд с использованием sudo , не превышает 5 минут, то повторный ввод пароля не требуется. Однако, это значение можно изменить, добавив значение timestamp_timeout в минутах:

В данном случае, если команда sudo будет выполняться не позже, чем через 1 минуту после ввода пароля для предыдущей команды, то повторно пароль запрашиваться не будет. Если значение “timestamp_timeout” сделать равным нулю, то пароль будет запрашиваться при каждом запуске sudo , если сделать отрицательным ( -1 ), - то повторный ввод пароля не будет запрашиваться никогда.

Для исключения возможности выполнения sudo-команд при подключении через ssh без авторизации, по умолчанию, должна использоваться команда “ssh –t “:

Для определения дополнительного каталога с файлами конфигурации пользователей sudo используется директива:

Root sudo Linux

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

Давайте детально обсудим, что может суперпользователь в Linux, как настроить root и для чего нужна команда sudo .

Предназначение root-прав в Linux

Права обычного пользователя в Linux крайне ограничены. Он может управлять только своим каталогом и открывать для чтения определенные файлы из корня. Доступ для их изменения или установки программ отсутствует, что делает привилегии суперпользователя крайне важными при настройке ОС и решении разных проблем. Обычный пользователь ограничивается следующим набором прав:

  • чтение, запись и изменение любых атрибутов пользовательской папки;
  • то же самое и для каталога /tmp ;
  • выполнение программ в любом месте, где нет ограничений;
  • чтение файлов с соответствующим атрибутом для всех пользователей.

При наличии рут-прав у юзера появляется гораздо больше возможностей и расширяются границы взаимодействия с операционной системой. Становятся доступными любые действия со всеми папками и файлами.

Безопасность использования прав суперпользователя

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

С серверной частью все гораздо сложнее, поскольку рут как таковой не предоставляет полной защиты. Часто используемые пароли взламываются путем перебора или поиском бэкдора. Поэтому не стоит полагаться исключительно на защиту паролем, если вы владеете файлами сайтов или используете сервер для других целей. Займитесь настройкой файрвола, если это повысит уровень защиты.

Команда sudo и примеры ее использования

Команда sudo тесно связана с root в Linux, поскольку отвечает за передачу прав суперпользователя и позволяет от его имени выполнять команды в Терминале. Существует несколько ее вариаций, использующихся при разных обстоятельствах. Подходит эта команда как для выполнения всего одного действия, так и для передачи прав на всю текущую сессию.

Использование команды sudo в Linux

Самый простой пример использования sudo – запуск программы от имени суперпользователя. Для этого вводится:

Еще sudo применяется для установки софта, команда в таком случае обретает вид:

Если же вы желаете использовать сразу несколько команд, например, введя sudo cat file.txt | grep text > file.txt , появится ошибка, поскольку при выполнении второй команды права суперпользователя отсутствуют, а значит, запись в файл невозможна. Решается такая ситуация добавлением sudo перед каждым выражением.

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

VDS Timeweb арендовать

Переключение на суперпользователя

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

Примерно так же работает и команда su , но она обладает дополнительными аргументами, которые следует уточнить:

  • -c – позволяет выполнить команду;
  • -g – устанавливает группу для пользователя;
  • -G – дополнительные группы для юзера;
  • - , -l , --login – один из режимов входа, при котором происходит переключение домашнего каталога;
  • -p – сохранение переменных окружения;
  • -s – выбор оболочки для выхода.

Есть вариант выполнить вход в оболочку под суперпользователем, но он имеет свои неудобства. Он заключается в переключении в доступную виртуальную консоль, что осуществляется комбинацией Ctrl + Alt + F1-F6 . Там понадобится ввести логин и пароль root для получения доступа. Главный недостаток этого метода – потеря возможности взаимодействия с графическим интерфейсом операционной системы.

Второй вариант – ввод такого же логина и пароля при входе через графическую форму авторизации. Так вы сразу получите доступ ко всем файлам, даже не надо будет вводить sudo . Однако неопытным пользователям такой метод не подходит, поскольку возникает риск удаления или изменения системных файлов, что иногда приводит к поломке ОС.

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

Предоставление и отзыв прав суперпользователя

Каждому пользователю в Linux можно предоставить root-права, добавив его в соответствующую группу. Точно так же их можно и отнять, если вдруг это понадобится. Рассмотрю три варианта действий.

Создание нового пользователя с root

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

sudo Linux

  1. Откройте Терминал и введите команду sudo adduser user (user замените на нужное имя пользователя).
  2. В консоли появятся инструкции по созданию нового пользователя. Присвойте пароль и подтвердите действие, чтобы завершить создание.
  3. Добавьте новую учетную запись в группу sudo, введя sudo usermod -aG sudo user ( user здесь тоже понадобится заменить).
  4. Проверьте выполненные действия, переключившись на новую учетную запись через su testuser . Для подтверждения введите пароль (при вводе символы не отображаются на экране).
  5. Выполните любую команду с sudo и убедитесь, что все прошло успешно.

Для существующей учетной записи

Если учетная запись уже добавлена, в консоли остается ввести только одну команду, чтобы добавить пользователя в группу sudo и разрешить ему получение рут-прав. Сама команда представлена ниже, вам остается только скопировать ее и поменять имя юзера.

Предоставление прав суперпользователя существующей учетной записи в Linux

Используйте предыдущую инструкцию для проверки внесенных изменений.

Откат прав суперпользователя

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

Измените user на необходимое имя. Можете переключиться на эту учетную запись и убедиться в том, что теперь команды с sudo она выполнять не может.

Откат прав суперпользователя в Linux

Это была вся основная информация о правах суперпользователя в Linux. Вы знаете, что дают такие привилегии, как их правильно использовать и управлять пользователями. В качестве рекомендации скажу, что всегда нужно читать текст ошибок, появляющихся в Терминале, если что-то пошло не так. Это позволит вам быстрее решить проблему без траты времени на поиски в Google.

Читайте также: