Использование sudoпользователя для доступа к серверу и выполнения команд на корневом уровне является очень распространенной практикой среди Linux и Unix Systems Administrator. Использование sudoпользователя часто сопряжено с отключением прямого корневого доступа к серверу в целях предотвращения несанкционированного доступа.
В этом руководстве мы рассмотрим основные этапы отключения прямого доступа root, создания пользователя sudo и настройки группы sudo в CentOS, Debian и FreeBSD.
Предпосылки
	- Недавно установленный сервер Linux с вашим предпочтительным дистрибутивом.
- На сервере установлен текстовый редактор, будь то nano, vi, vim, emacs.
Шаг 1: Установка sudo
Debian
apt-get install sudo -y
CentOS
yum install sudo -y
FreeBSD
cd /usr/ports/security/sudo/ && make install clean
или же
pkg install sudo
Шаг 2: Добавление пользователя sudo
sudoПользователем является нормальной учетной записью пользователя на компьютере Linux или Unix.
Debian
adduser mynewusername
CentOS
adduser mynewusername
FreeBSD
adduser mynewusername
Шаг 3: Добавление нового пользователя в группу wheel (необязательно)
Группа wheel - это группа пользователей, которая ограничивает количество людей, которые могут suполучить root- права . Добавление вашего sudoпользователя в wheelгруппу не является обязательным, но желательно.
Примечание: в Debian sudoгруппа часто встречается вместо wheel. Однако вы можете вручную добавить wheelгруппу, используя groupaddкоманду. В этом руководстве мы будем использовать sudoгруппу для Debian.
Разница между wheelа sudo.
В CentOS и Debian пользователь, принадлежащий к wheelгруппе, может выполнить suи напрямую подняться root. Между тем, sudoпользователь должен был бы использовать sudo suпервый. По сути, нет никакой реальной разницы, за исключением синтаксиса, используемого для получения прав root , и пользователи, принадлежащие к обеим группам, могут использовать sudoкоманду.
Debian
usermod -aG sudo mynewusername
CentOS
usermod -aG wheel mynewusername
FreeBSD
pw group mod wheel -m mynewusername
Шаг 4: Убедитесь, что ваш sudoersфайл настроен правильно
Важно убедиться, что sudoersфайл, расположенный в, /etc/sudoersправильно настроен, sudo usersчтобы эффективно использовать sudoкоманду. Для этого мы просмотрим содержимое /etc/sudoersи отредактируем его, где это применимо.
Debian
vim /etc/sudoers
или же
visudo
CentOS
vim /etc/sudoers
или же
visudo
FreeBSD
vim /etc/sudoers
или же
visudo
Примечание. Команда visudoоткроется /etc/sudoersс помощью предпочтительного системного текстового редактора (обычно vi или vim) .
Начните просмотр и редактирование ниже этой строки:
# Allow members of group sudo to execute any command
Этот раздел /etc/sudoersчасто выглядит так:
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
В некоторых системах вы можете не найти %wheelвместо %sudo; в этом случае это будет строка, под которой вы начнете изменять.
Если строка, начинающаяся с %sudoDebian или %wheelCentOS и FreeBSD, не закомментирована (с префиксом #) , это означает, что sudo уже настроен и включен. Затем вы можете перейти к следующему шагу.
Шаг 5: Разрешение пользователю, который не принадлежит ни группе, wheelни sudoгруппе, выполнять sudoкоманду
Можно разрешить пользователю, который не входит ни в одну из групп пользователей, выполнить sudoкоманду, просто добавив их /etc/sudoersследующим образом:
anotherusername ALL=(ALL) ALL
Шаг 6: перезапуск сервера SSHD
Чтобы применить внесенные изменения /etc/sudoers, необходимо перезапустить сервер SSHD следующим образом:
Debian
/etc/init.d/sshd restart
CentOS 6
/etc/init.d/sshd restart
CentOS 7
systemctl restart sshd.service
FreeBSD
/etc/rc.d/sshd start
Шаг 7: Тестирование
После того, как вы перезапустили сервер SSH, выйдите из системы, а затем снова войдите в систему как ваш sudo user, а затем попытайтесь выполнить некоторые команды тестирования следующим образом:
sudo uptime
sudo whoami
Любая из приведенных ниже команд позволит sudo userстать root.
sudo su -
sudo -i
sudo -S
Заметки:
	- Команда whoamiвернетсяrootпри соединении сsudo.
- Вам будет предложено ввести пароль вашего пользователя при выполнении sudoкоманды, если вы явно не укажете системе не запрашиватьsudo usersих пароли. Обратите внимание, что это не рекомендуемая практика.
Необязательно: разрешение sudoбез ввода пароля пользователя
Как уже объяснялось ранее, это не рекомендуемая практика и включена в этот учебник только для демонстрационных целей.
Для того чтобы ваш sudo userвыполнить sudoкоманду без запроса их пароля, суффикс строки доступа в /etc/sudoersс NOPASSWD: ALLследующим образом :
%sudo   ALL=(ALL:ALL) ALL   NOPASSWD: ALL
Примечание. Чтобы изменения вступили в силу, необходимо перезапустить сервер SSHD.
Шаг 8: Отключить прямой доступ с правами root
Теперь, когда вы подтвердили, что можете использовать свой sudo userбез проблем, пришло время для восьмого и последнего шага, отключив прямой доступ с правами root.
Сначала откройте /etc/ssh/sshd_configс помощью вашего любимого текстового редактора и найдите строку, содержащую следующую строку. Это может быть префикс с #символом.
PermitRootLogin
Независимо от префикса или значения параметра в /etc/ssh/sshd_config, вам нужно изменить эту строку следующим образом:
PermitRootLogin no
Наконец, перезагрузите сервер SSHD.
Примечание. Не забудьте проверить свои изменения, попытавшись подключиться к серверу SSH как root. Если вы не можете сделать это, это означает, что вы успешно выполнили все необходимые шаги.
На этом мы завершаем наш урок.