Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Все, что вы хотели бы знать о команде SUDO

Оригинал: Todo lo que quisiste saber del comando SUDO
Автор: maslinux
Дата публикации: 17 июня 2019 г.
Перевод: В.Костромин
Дата перевода: 19 июня 2019 г.

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

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

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

Инсталляция SUDO

Пакет sudo установлен по умолчанию в подавляющем большинстве дистрибутивов GNU/Linux, но не во всех. Есть и такие, где он установлен, но вам об этом не сообщается. Мы расскажем, как его увидеть.

Чтобы проверить, установлен ли пакет sudo в вашей системе, откройте консоль, введите sudo и нажмите Enter. Если пакет sudo у вас установлен, система покажет краткое справочное сообщение, в противном случае вы увидите что-то вроде sudo command not found.
Если sudo не установлен, вы можете легко установить его, используя менеджер пакетов вашего дистрибутива.

Добавление пользователей в файл Sudoers

По умолчанию в большинстве дистрибутивов GNU / Linux для того, чтобы предоставить пользователю доступ к sudo, достаточно добавить этого пользователя в группу sudo, определенную в файле sudoers в каталоге /etc. Члены этой группы могут выполнять любую команду от имени root. Название группы может варьироваться от одного дистрибутива к другому. В дистрибутивах, основанных на RedHat, таких как CentOS и Fedora, имя группы sudo - wheel. Чтобы добавить пользователя к эту группу, можно выполнить команду:

usermod -aG wheel Pedro

В Debian, Ubuntu и их производных, выполнять команду sudo могут члены группы sudo:

usermod -aG sudo Pedro

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

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

Например, чтобы позволить пользователю alumno выполнять от имени sudo только команду mkdir, вызовите специальную версию редактора vim:

sudo visudo

и добавьте следующую строку:

alumno  ALL=/bin/mkdir

В большинстве систем команда visudo открывает файл /etc/sudoers в текстовом редакторе vim. Если у вас нет опыта работы с vim, используйте nano.

Вы также можете разрешить пользователям выполнять команды sudo без аутентификации:

alumno ALL=(ALL) NOPASSWD: ALL

Как пользоваться sudo

sudo Опции.. Команда

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

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

sudo comando

где comando - это та команда, для выполнения которой вам нужно использовать sudo.

Sudo прочитает файл /etc/sudoers и проверит, предоставлен ли вызывающему её пользователю доступ к sudo. При первом использовании sudo в сеансе вам будет предложено ввести ваш пароль пользователя (не пароль root), и команда будет выполнена от имени пользователя root.

Например, для отображения всех файлов в каталоге /root можно использовать команду:

sudo ls /root

Время ожидания пароля

По умолчанию, если в течение пяти минут команда sudo не использовалась, вам придется ввести пароль повторно. Вы можете изменить время ожидания по умолчанию, отредактировав файл sudoers. Откройте файл с помощью nano:

Установите время ожидания по умолчанию, добавив следующую строку, где 15 - время ожидания, указанное в минутах:

Defaults  timestamp_timeout=15

Если вы хотите изменить время только для конкретного пользователя, добавьте следующую строку, где user_name - это рассматриваемый пользователь.

Defaults:user_name timestamp_timeout=15

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

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

Опция -u позволяет вам выполнить команду от имени конкретного пользователя.

В следующем примере мы используем sudo для выполнения команды whoami от пользователя “alumno”:

sudo -u alumno whoami

Команда whoami напечатает имя пользователя, который выполняет эту команду:

Alumno

Как выполнять перенаправление с помощью sudo

Если вы попытаетесь перенаправить вывод команды в файл, к которому у вашего пользователя нет прав на запись, вы получите сообщение об ошибке «Отказано в доступе».

sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permiso denegado

Это происходит потому, что перенаправление вывода «>» выполняется с правами пользователя, под которым вы вошли в систему, а не под пользователем, указанным в sudo. Перенаправление происходит до вызова команды sudo.

Одним из решений является вызов новой оболочки с правами root с помощью sudo sh -c:

sudo sh -c 'echo "test" > /root/file.txt'

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

echo "test" | sudo tee /root/file.txt

Sudo - очень мощная команда, но при обращении с ней нужно быть очень осторожным.


Другие статьи о команде sudo в Linux: