Команда Sudo в Linux

Команда 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.

Если у вас есть вопросы, не стесняйтесь оставлять комментарии.

Оставьте комментарий