Команда sudo в Linux

Команда Sudo

Команда 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 следующий:

 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 запросит повторный ввод пароля через пять минут бездействия. Вы можете изменить время ожидания по умолчанию, отредактировав файл 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

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

 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.

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

терминал sudo

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *