Те, кто работает с 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, и т.д.
Комментарии
Оставить комментарий
Операционная система LINUX
Термины: Операционная система LINUX