Команда sudo позволяет запускать программы от имени другого пользователя, по умолчанию root. Если вы проводите много времени в командной строке, sudo — одна из команд, которую вы будете использовать довольно часто.
Использование sudo вместо входа в систему с правами root более безопасно, поскольку вы можете предоставлять ограниченные административные привилегии отдельным пользователям, не зная их пароля root.
В этом руководстве мы объясним, как использовать команду sudo
.
Содержание
Установка Sudo (команда sudo не найдена)
Пакет sudo предустановлен в большинстве дистрибутивов Linux.
Чтобы проверить, установлен ли пакет sudo в вашей системе, откройте консоль, введите sudo
и нажмите Enter
. Если вы установили sudo в систему, отобразится короткое справочное сообщение. В противном случае вы увидите что-то вроде sudo command not found
.
Если sudo не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.
Установите Sudo в Ubuntu и Debian
apt install sudo
Установите Sudo на CentOS и Fedora
yum install sudo
Добавление пользователя в Sudoers
По умолчанию в большинстве дистрибутивов 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
.
Например, чтобы позволить пользователю linuxize
запускать только команду mkdir
как sudo, введите:
sudo visudo
и добавьте следующую строку:
linuxize ALL=/bin/mkdir
В большинстве систем команда visudo
открывает файл /etc/sudoers
с помощью текстового редактора vim. Если у вас нет опыта работы с vim, ознакомьтесь с нашей статьей о том, как сохранить файл и выйти из редактора vim .
Вы также можете разрешить пользователям запускать команды sudo без ввода пароля :
linuxize ALL=(ALL) NOPASSWD: ALL
Как использовать судо
Синтаксис команды sudo
следующий:
sudo OPTION.. COMMAND
Команда sudo
имеет множество параметров, которые управляют ее поведением, но обычно она используется в самой простой форме, без каких-либо параметров.
Чтобы использовать sudo, просто добавьте к команде префикс sudo
:
sudo command
Где command
— это команда, для которой вы хотите использовать sudo.
Sudo прочитает файл /etc/sudoers
и проверит, есть ли у вызывающего пользователя sudo Assessment. При первом использовании sudo в сеансе вам будет предложено ввести пароль пользователя, и команда будет выполнена от имени пользователя root.
Например, чтобы перечислить все файлы в /root
каталоге /, вы должны использовать:
sudo ls /root
[sudo] password for linuxize:
. .. .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
от имени пользователя «richard»:
sudo -u richard whoami
Команда whoami
напечатает имя пользователя, запустившего команду:
richard
Как перенаправить с помощью Sudo
Если вы попытаетесь перенаправить вывод команды в файл, для которого у вашего пользователя нет прав на запись, вы получите ошибку «Permission denied».
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.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.