Введение
Команда sudo позволяет запускать программы от имени другого пользователя, по умолчанию это пользователь root. Если вы проводите много времени в командной строке, sudo — это одна из команд, которую вы будете использовать довольно часто.
Использование sudo вместо root-доступа безопаснее, поскольку вы можете предоставлять ограниченные административные привилегии отдельным пользователям, не зная пароля root.
В этом уроке мы объясним, как использовать команду sudo
.
Установить Судо
Пакет sudo предустановлен в большинстве дистрибутивов Linux.
Чтобы проверить, установлен ли пакет sudo в вашей системе, откройте консоль, введите sudo
и нажмите Enter
. Если у вас установлен sudo, система отобразит короткое справочное сообщение, в противном случае вы увидите что-то вроде sudo command not found
.
Если sudo не установлен, вы можете легко установить его с помощью менеджера пакетов вашего дистрибутива.
Установите Sudo на Ubuntu и Debian
apt install sudo
Установите Sudo на CentOS и Fedora
yum install sudo
Добавьте пользователя в группу Sudo
По умолчанию в большинстве дистрибутивов Linux предоставление доступа к sudo так же просто, как добавление пользователя в группу sudo, определенную в файле sudoers
. Члены этой группы смогут выполнять любую команду от имени root. Имя группы может отличаться от дистрибутива к дистрибутиву.
В дистрибутивах на основе RedHat, таких как CentOS и Fedora, имя группы sudo — wheel
. Чтобы добавить пользователя в группу, выполните:
usermod -aG wheel username
В Debian, Ubuntu и их производных члены группы sudo
имеют доступ к sudo:
usermod -aG sudo username
Учетная запись пользователя root в Ubuntu по умолчанию отключена по соображениям безопасности, и пользователям рекомендуется выполнять системные административные задачи с помощью sudo. Первоначальный пользователь, созданный установщиком Ubuntu, уже является членом группы sudo, поэтому, если вы используете Ubuntu, скорее всего, пользователю, под которым вы вошли, уже предоставлены привилегии sudo.
Если вы хотите разрешить конкретному пользователю запускать только определенные программы, такие как sudo, вместо добавления пользователя в группу sudo добавьте пользователей в файл sudoers
.
Например, чтобы позволить noviello
пользователю запускать только команду mkdir
от имени sudo, введите:
sudo visudo
и добавьте следующую строку:
noviello ALL=/bin/mkdir
В большинстве систем команда visudo
открывает /etc/sudoers
с помощью текстового редактора vim. Если вы новичок в vim, посмотрите нашу статью о том, как сохранить файл и закрыть редактор vim.
Вы также можете разрешить пользователям выполнять команды sudo без ввода пароля:
noviello ALL=(ALL) NOPASSWD: ALL
Как использовать Судо
Синтаксис команды sudo
следующий:
sudo OPTION.. COMMAND
Команда sudo
имеет множество параметров, управляющих ее поведением, но обычно sudo
используется в самом простом виде, без каких-либо параметров.
Чтобы использовать sudo, просто добавьте префикс команды с sudo
:
sudo command
Где находится command
, для которой вы хотите использовать sudo.
Sudo прочитает /etc/sudoers
и проверит, авторизован ли вызываемый пользователь с доступом sudo. При первом использовании sudo в сеансе вам будет предложено ввести пароль пользователя, и команда будет запущена от имени пользователя root.
Например, чтобы перечислить все файлы в /root
, вы должны использовать:
sudo ls /root
[sudo] password for noviello:....bashrc.cache.config.local.profile
Время ожидания пароля
По умолчанию sudo попросит вас снова ввести пароль через пять минут бездействия sudo. Вы можете изменить тайм-аут по умолчанию, отредактировав sudoers
. Откройте файл с помощью visudo
:
sudo visudo
Установите время ожидания по умолчанию, добавив следующую строку, где 10
— указанное время ожидания в минутах:
Defaults timestamp_timeout=10
Если вы хотите изменить отметку времени только для определенного пользователя, добавьте следующую строку, где user_name — это рассматриваемый пользователь.
Defaults:user_name timestamp_timeout=10
Запустите команду от имени пользователя, отличного от root
Как правило, sudo
используется только для предоставления прав root обычному пользователю. Фактически, вы можете использовать sudo
для запуска команды, как и любой пользователь.
Параметр -u
позволяет запускать команду от имени указанного пользователя.
В следующем примере мы используем sudo
для запуска команды whoami
от имени пользователя «piero»:
sudo -u piero whoami
Команда whoami
напечатает имя пользователя, выполнившего команду:
piero
Как перенаправить с помощью Sudo
Если вы попытаетесь перенаправить вывод команды в файл, в котором у пользователя нет прав на запись, будет отображена ошибка «Отказано в доступе».
sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied
Это происходит потому, что перенаправление вывода >
выполняется под пользователем, вошедшим в систему, а не под пользователем, указанным sudo. Перенаправление происходит до вызова команды sudo
.
Одним из решений является вызов новой оболочки от имени пользователя root с помощью sudo sh -c
:
sudo sh -c 'echo "test" > /root/file.txt'
Другой вариант — подключить обычный пользовательский вывод к команде tee
, как показано ниже:
echo "test" | sudo tee /root/file.txt
Вывод
Вы узнали, как использовать команду sudo
и как создавать новых пользователей с привилегиями sudo.