Найти в Дзене
Дверь в IT

SUDO и с чем его едят

Sudo - это аббревиатура, от английского Substitute User and do. Переводится как: "Подменить юзера и выполнить". Многие новички в системном администрировании ошибочно считают, что sudo нужна для выполнения чего либо от имени администратора, чтобы не логиниться как суперпользователь (root). Однако, это не так. Действительно, чаще всего sudo применяется для выполнения команд от имени root, но с помощью sudo можно передать выполнение команды или скрипта любому пользователю в системе. Рассмотрим в примерах: Да, так чаще всего и делают многие сисадмины. Запускают программки и скрипты от имени root единоразово, без предоставления постоянных прав суперпользователя. И это правильно. Но нужно помнить, что, например, создание файлов и каталогов от имени root (с помощью sudo) может привести к тому, что эти самые файлы и каталоги будут недоступны для простых пользователей. А к простым пользователям относятся и системные пользователи, от имени которых запускаются какие-либо сервисы. Например, у вас

Sudo - это аббревиатура, от английского Substitute User and do. Переводится как: "Подменить юзера и выполнить". Многие новички в системном администрировании ошибочно считают, что sudo нужна для выполнения чего либо от имени администратора, чтобы не логиниться как суперпользователь (root). Однако, это не так. Действительно, чаще всего sudo применяется для выполнения команд от имени root, но с помощью sudo можно передать выполнение команды или скрипта любому пользователю в системе. Рассмотрим в примерах:

Простейший пример запуска apt от имени root
Простейший пример запуска apt от имени root

Да, так чаще всего и делают многие сисадмины. Запускают программки и скрипты от имени root единоразово, без предоставления постоянных прав суперпользователя. И это правильно. Но нужно помнить, что, например, создание файлов и каталогов от имени root (с помощью sudo) может привести к тому, что эти самые файлы и каталоги будут недоступны для простых пользователей. А к простым пользователям относятся и системные пользователи, от имени которых запускаются какие-либо сервисы. Например, у вас установлена БД PostgreSQL. По умолчанию, при установке создается пользователь postgres, от имени которого она и запускается. А также выполняются запросы к этой БД. Если с помощью sudo отредактировать файлы, созданные этим пользователем, то другим юзерам, в том числе и юзеру postgres, эти файлы будут недоступны, что приведет к ошибкам в работе БД.

На этом примере я, с помощью sudo, запустил проверку версии БД от имени postgres
На этом примере я, с помощью sudo, запустил проверку версии БД от имени postgres

Кстати, некоторые опытные сисадмины настраивают использование sudo без ввода пароля. Как правило, это делается для своего, конкретного пользователя, а не для всех. Это можно сделать, отредактировав файл /etc/sudoers. Наберите в терминале команду sudo visudo и вы попадете в этот файл:

Я дописал в этот файл строку с параметром NOPASSWD для пользователя ladmin и теперь при запуске чего-либо с помощью sudo пароль не запрашивается (см первый скрин). Используйте эту опцию с осторожностью.
Я дописал в этот файл строку с параметром NOPASSWD для пользователя ladmin и теперь при запуске чего-либо с помощью sudo пароль не запрашивается (см первый скрин). Используйте эту опцию с осторожностью.

С помощью этой фишки вы можете гибко настроить запуск определенных программ и скриптов без ввода пароля для конкретных пользователей и даже групп.

Пример для конкретного пользователя vasya, который может запускать файл backup.sh в своей домашней директории и обновлять/устанавливать/удалять пакеты с помощью sudo без ввода пароля.
Пример для конкретного пользователя vasya, который может запускать файл backup.sh в своей домашней директории и обновлять/устанавливать/удалять пакеты с помощью sudo без ввода пароля.

Как вы видите, можно настроить sudo достаточно гибко для автоматизации своих задач. Тема эта достаточно обширна, чтобы всё описать в данной статье, поэтому, как всегда, идите в man )))).