sudo - запуск от имени администратора в Unix (выполнение команд от root в Linux и FreeBSD), файл sudoers

Практика



Те, кто работает с Unix, знают одного пользователя, который во всех *nix системах имеет одно и то же имя: root. Это так называемый "суперпользователь", который может сделать вообще все.

Однако хорошей практикой считается, и не без оснований, работа даже старшего системного администратора в Unix-системах не под root, а под своей учеткой. При этом, как минимум:

а) Всегда можно отследить - кто же именно сделал то или иное действие, даже если для этого запрашивались права root, причем отследить довольно точно;

б) Следует привыкать выполнять повседневные команды, не требующие прав root, от имени себя любимого. Тогда для выполнения какой-либо важной задачи, требующей прав root, Вам придется набрать 5 лишних символов для ввода команды "sudo" и пробелма за ней, что автоматически, почти на подсознании дернет за ниточку: "осторожно!" и даст полсекунды времени мозгу на додумывание, что может оказаться роковым - палец замрет над Enter.


Итак, выше я уже упомянул некую "sudo".


SUDO - утилита, позволяющая выполнять команды из командной строки от имени root пользвателем, который root не является, т.е. любым разрешенным пользователем.

При этом Вам не нужно логиниться под root - Вам достаточно войти в систему под своей учетной записью. И не нужно выполнять команду "su", чтобы стать "root".

Разграничением прав - кому можно выполнять sudo, а кому - нельзя, а так-же - кто имеет право выполнять sudo без ввода пароля, а от кого требуется повышенное внимание - занимается файл sudoers. В каждой ОС этот файл лежит в своем месте.

Плюсом sudo так-же является еще и то, что конечному админу не требуется знать пароль от root, что может несколько повысить безопасность.


Установка

FreeBSD:

# cd /usr/ports/security/sudo
# make install clean

Файл sudoers лежит по адресу:

/usr/local/etc/sudoers


Linux Debian (или Ubuntu):

# aptitude install sudo

Файл sudoers лежит по адресу:

/etc/sudoers


Linux CentOS (или RedHat):

# yum install sudo

Файл sudoers лежит по адресу:

/etc/sudoers



Файл sudoers

В этом файле, в достаточно простой форме рассказывается - каким пользователям или группам можно выполнять команду sudo. Это значит, что рядовой пользователь Unix системы, даже если захочет выполнить команду от имени root, не заходя под "root" и не выполняя команду "su" (логично - пароль то он не знает), не сможет воспользоваться правами суперадмина.

Вот пример такого файла:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL

В примере файл сконфигурирован так, что команду sudo может выполнять только сам суперадмин (это состояние файла по-умолчанию в Debian). Право, бесполезен он в таком виде.

Чтобы добавлять пользователей, которым можно использовать этот файл - прописывайте их в конце в таком формате:

username ALL=(ALL) ALL

А чтобы добавлять целые группы (например, группу wheel):

%groupname ALL=(ALL): ALL

При такой настройке пользователям можно будет использовать утилиту sudo, но каждый раз у них будет спрашиваться пароль:

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for username:

Пароль при этом нужно вводить пользователя, а не root. Т.е. если пользователь admin1 запускает sudo, то пароль этот пользователь вводит тот же, что и используется им для входа в саму систему.
Этакая подстраховка - лишние несколько секунд для мозга для того, чтобы успеть заметить ошибку в команде и отменить операцию.


Однако при вводе большого количества команд из-под root (sudo) каждый раз пароль вводить - увольте. Можно, конечно, сделать
$ sudo bash
но это не наш метод.

Если какому-то администратору или группе пользователей доверяется настолько, что это "контрольное" предупреждение с вводом его пароля не нужно - можно его отключить. Тогда пользователей нужно вводить таким образом:

username ALL=(ALL) NOPASSWD: ALL
%groupname ALL=(ALL) NOPASSWD: ALL

Тогда команда с sudo будет исполнена сразу, без каких-либо предупреждений вообще. И без каких-либо запросов пароля. Для перечисленных пользователей, конечно.


Вот второй пример файла sudoers:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL

stadmin ALL=(ALL) NOPASSWD: ALL
%wheel ALL=(ALL) ALL
proger ALL=(ALL) ALL

В этом примере:

а) Пользователю stadmin позволяется выполнять sudo без ввода пароля
б) Группе wheel позволяется выполнять sudo, но с вводом пароля
в) Пользователю proger позволяется выполнять sudo, тоже с вводом пароля


Как видно - первичная настройка sudoers довольно проста.

Больше о sudo и файле sudoers можно прочитать, как всегда, в справке man:

$ man sudo
$ man sudoers

Очень рекомендуется к прочтению, т.к. есть некоторые полезные опции, которые в файле sudoers по-умолчанию просто не прописаны (их десятки).

Например, можно запретить определенным пользователям выполнять бинарники из-под sudo. Или обязательно требовать chdir пользователя в его домашнюю директорию во время выполнения sudo, и т.д.
создано: 2017-05-10
обновлено: 2024-11-10
3177



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционная система LINUX

Термины: Операционная система LINUX