Настройка debian sudo: Страница не найдена | Losst
Настройка sudo под Linux
Настройка sudo под Linux
Этот текст не является переводом полного руководства.
Если вы администрируете систему с большим количеством пользователей
и сложным распределением полномочий, то очень советую почитать
документацию. Но, если вам просто надо выдать определённому
пользователю определённые права, то в этой заметке в скорее
всего найдёте готовый рецепт.
Редактировать файл sudoers
«вручную» — плохая практика.
Для редактирования есть специальная команда visudo
.
Она сама знает, где расположен файл sudoers
, и отследит,
чтобы вы редактировали копия, файл всегда был целостным, а
копия была удалена.
visudo
позволяет использовать любой редактор. Например,
вы можете использовать mcedit:
# EDITOR=mcedit visudo
Если вы допустите ошибку, то, при выходе из редактора
получите сообщение вида:
visudo: >>> /etc/sudoers: syntax error near line 73 <<<
What now?
В этом случае, лучше ввести букву «e
» и продолжить редактирование.
Файл sudoers
, обычно, содержит много комментариев.
В каждой системе/дистрибутиве они различны. Имеет смысл
ознакомиться с ними и, возможно, внести какие-то правки
глобальных настроек.
Особое внимание следует обратить на директивы
#include ...
#includedir ...
за ними скрывается ещё куча всего интересного.
Но нас интересуют по-пользовательские
настройки. Обычно для них есть отдельная часть в sudoers
,
которая может начинаться таким комментарием:
##
## User privilege specification
##
Дальше полномочия описываются строчками вида:
[пользователь] [хост]=([кем может стать]) [что может сделать]
Простой пример
alex ALL=(root) /bin/mount /media/n78
Это означает, что пользователь alex
, может
выполнить с правами root
команду
/bin/mount /media/n78
.
Обратите внимание, путь к команде mount
указан полностью.
Это важно! Если этого не сделать, то sudo
работать не будет.
Теперь пользователь alex
может выполнить команду
$ sudo mount /media/n78
У него будет спрошен пароль (его, а не root).
Продвинутые правила sudo
Можно написать более сложные правила:
alex ALL=(ALL) ALL
alex ALL=(root) NOPASSWD: /bin/mount /media/n78
alex ALL=(root) NOPASSWD: /bin/umount /media/n78
Пользователь alex
может выполнить монтирование от пользователя root
без пароля. И может выполнить любую команду от любого пользователя,
если укажет пароль.
Флаги
Более полный пример с использованием флагов:
# пользователь root может всё без ограничений
root ALL=(ALL) ALL
# пользователь alex может становиться пользователем
# operator, без указания пароля, и пользователем root
# с указанием пароля
alex ALL=(operator) NOPASSWD: ALL, (root) ALL
# пользователь temp должен всегда указывать не свой пароль,
# а пароль того, кем он хочет стать; он может становиться
# только пользователем alex и выполнять только одну команду
Defaults:temp targetpw
temp ALL=(alex) /bin/bash
# (этот пользователь предназначен только для удалённого
# входа в систему с использованием временного пароля,
# отсюда и название)
Флагов существует великое множество, смотрите документацию.
Опции применяются в том порядке в каком они указаны в файле
конфигурации. Поэтому более общие правила должны идти вначале,
а боле частные уточнения должны располагаться ближе к концу.
После того, как вы всё настроили, вы можете проверить,
как sudo
интерпретирует ваши настройки. Это очень удобно.
Используйте команды:
$ sudo -l
$ sudo -ll
$ sudo -lU user_name
С их помощью вы можете легко найти ошибки или убедиться,
что всё настроено правильно.
Отправить
Установка и настройка sudo в Debian 7
Список разделов
Sudo — это программа позволяющая администраторам давать ограниченные root права пользователям и вести журнал root активности. Базовая философия заключается в том, чтобы дать так мало прав, как это возможно, но при этом позволить людям нормально выполнять свои задачи. Отличие от команды su в том, что пользователь вводит пароль от своей учетной записи, а не пароль пользователя root.
Sudo в Debian имеет пятнадцатиминутный (может быть переопределен) таймаут после ввода пароля. Это значит, что когда вы первый раз ввели пароль рута, то у вас есть 15 минут в течение которых вы можете выполнить следующую команду без ввода пароля. Таймаут может быть немедленно сброшен с помощью команды sudo -k.
Установка sudo в Debian 7
aptitude install sudo
Во время установки создается конфигурационный файл /etc/sudoers и директория /etc/sudoers.d, о которых мы поговорим чуть позже.
Параметры команды sudo
-k [command] — позволяет сбросить таймаут до момента, когда необходимо будет снова вводить пароль. Если указать команду, которая может потребовать ввода пароля, то таймаут будет сброшен конкретно для этой команды.
-h — будет выведена небольшая подсказка на стандартный выход.
-V — отобразиться версия sudo и плагинов. Если запустить от root, то будут выведены все настройки.
-g group — позволяет задать от какой группы будет запущена команда.
-H — задает директорию, которая будет указана в переменной окружения HOME.
-i [command] — симулирует начальный вход. Если команда не указана, то будет произведен вход в систему, таким образом можно сделаться рутом вместо использования sudo su.
-l[l] [command] — если команда не указана, то будет выведен список доступных команд для вызвавшего пользователя (или пользователя указанного с параметром -U). Если указана команда и она доступна, то будет выведен полный путь до команды и доступные параметры. Если команда не доступна, то sudo закроется со статусом 1. Если использовать параметр -ll или указать -l два раза, то будет использован более подробный формат вывода.
-s [command] — будет запущена оболочка указанная в переменной окружения SHELL. Если указана команда, то она будет передана на исполнения запущенной оболочке.
-U user — совместно с параметром -l позволяет отобразить привилегии определенного пользователя. Доступ спискам привилегий по умолчанию есть у root и пользователей со всеми привилегиями (ALL).
-u user — указанная команда будет запущена от имени указанного пользователя, а не от root.
-v — позволяет продлить таймаут на 15 минут или на тот, который указан в sudoers), но не выполнять каких-либо команд.
Здесь указана большая часть доступных параметров, но не все. Чтобы посмотреть полный список используйте команду man sudo.
Настройка sudo в Debian 7
Рекомендуется все пользовательские настройки задавать в файлах в директории /etc/sudoers.d, а не в основном файле /etc/sudoers. То есть можно создать файл с любым названием в директории /etc/sudoers.d и уже в нем перечислить необходимые настройки.
Файл /etc/sudoers рекомендуется править с помощью утилиты visudo, так как она блокирует файл и осуществляет проверку правильности написания директив при закрытии. visudo использует текстовый редактор по умолчанию, который можно переопределить в sudoers директивой вида:
Defaults editor="/usr/bin/vi"
Синхронизация файла sudoers
Вообще говоря, утилита sudo является локальной, в ней нет встроенных механизмов для распространения единых настроек на множество серверов из одного центра. Для синхронизации можно использовать, к примеру, NFS, rsync или LDAP.
Пример содержимого файла sudoers
Когда читаешь руководство по настройке sudo в Debian, то довольно сложно что-то понять, но на примере все становится на свои места. Так что для начала рассмотрим пример из man sudoers:
# Алиасы содержащие имена пользователей
User_Alias FULLTIMERS = millert, mikef, dowdy
User_Alias PARTTIMERS = bostley, jwfox, crawl
User_Alias WEBMASTERS = will, wendy, wim
# Runas алиасы содержащие имена пользователей или групп от которых будут запускаться команды
Runas_Alias OP = root, operator
Runas_Alias DB = oracle, sybase
Runas_Alias ADMINGRP = adm, oper
# Алиасы для наборов хостов
Host_Alias SPARC = bigtime, eclipse, moet, anchor :\
SGI = grolsch, dandelion, black :\
ALPHA = widget, thalamus, foobar :\
HPPA = boa, nag, python
Host_Alias CUNETS = 128.138.0.0/255.255.0.0
Host_Alias CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
Host_Alias SERVERS = master, mail, www, ns
Host_Alias CDROM = orion, perseus, hercules
# Алиасы для наборов команд
Cmnd_Alias DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\
/usr/sbin/restore, /usr/sbin/rrestore
Cmnd_Alias KILL = /usr/bin/kill
Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm
Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown
Cmnd_Alias HALT = /usr/sbin/halt
Cmnd_Alias REBOOT = /usr/sbin/reboot
Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \
/usr/local/bin/tcsh, /usr/bin/rsh, \
/usr/local/bin/zsh
Cmnd_Alias SU = /usr/bin/su
Cmnd_Alias PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less
Далее мы переопределим некоторые значения установленные по умолчанию при компиляции. Мы хотим чтобы sudo вел лог через syslog с использованием auth во всех случаях. Мы мне хотим, чтобы сотрудники работающие полный день получали предупреждение от sudo, пользователь millert не должен вводить пароль и мы не хотим сбрасывать переменные окружения LOGNAME, USER or USERNAME когда выполняем команды от рута. Дополнительно на машинах в Host_Alias SERVERS мы храним дополнительный локальный лог-файл и убеждаемся, что будет логироваться год в каждой линии так как логи будут храниться несколько лет. Напоследок, в целях безопасности для команд в списке PAGERS мы отключаем возможность запускать другие команды.
# Переопределяем встроенные умолчания
Defaults syslog=auth
Defaults>root !set_logname
Defaults:FULLTIMERS !lecture
Defaults:millert !authenticate
[email protected] log_year, logfile=/var/log/sudo.log
Defaults!PAGERS noexec
Далее идет часть в которой определяется кто что может запускать.
root ALL = (ALL) ALL
%wheel ALL = (ALL) ALL
Мы позволяем руту и всем пользователям в группе wheel запускать любые команды на любом хосте от имени любого пользователя.
FULLTIMERS ALL = NOPASSWD: ALL
Сотрудники работающие полный день (millert, mikef и dowdy) могут запускать любые команды на любом хосте без ввода пароля.
PARTTIMERS ALL = ALL
Сотрудники работающие часть дня (bostley, jwfox и crawl) могут исполнять любые команды на любых хостах, но должны вначале пройти процедуру аутентификации.
jack CSNETS = ALL
Пользователь jack может выполнять любые команды на машинах из списка CSNETS.
operator ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\
sudoedit /etc/printcap, /usr/oper/bin/
Оператор может выполнять команды ограниченные простой поддержкой системы. Эти команды связаны с созданием резервных копий, убийством процессов, системой печати, отключением системы и командами в директории /usr/oper/bin/.
joe ALL = /usr/bin/su operator
Пользователь joe может использовать su только чтобы стать пользователем operator.
pete HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
%opers ALL = (: ADMINGRP) /usr/sbin/
Пользователи в группе opers могуть запускать команды из /usr/sbin/ от имени себя в сочетании с любой группой из Runas_Alias ADMINGRP (группы adm и oper).
Пользователь pete может менять пароль любого пользователя за исключением root на любой машине из списка HPPA. В данном случае не получится указать несколько имен пользователей в командной строке.
bob SPARC = (OP) ALL : SGI = (OP) ALL
Пользователь bob может исполнять любые команды на машинах из групп SPARC и SGI от имени пользователей в Runas_Alias OP (root и operator).
jim +biglab = ALL
Пользователь jim может запускать любые команды в сетевой группе biglab. Sudo понимает, что biglab — это сетевая группа благодаря префиксу “+”.
fred ALL = (DB) NOPASSWD: ALL
Пользователь fred может выполнять любые команды от имени пользователей в Runas_Alias DB без авторизации.
john ALPHA = /usr/bin/su [!-]*, !/usr/bin/su *root*
На машинах в списке ALPHA пользователь john может использовать su чтобы стать любым пользователем кроме рута. При этом он не может использовать какие-либо параметры команды su.
jen ALL, !SERVERS = ALL
Пользователь jen может запускать любые команды на любой машине кроме входящих в список SERVERS.
jill SERVERS = /usr/bin/, !SU, !SHELLS
На любых машинах из списка SERVERS, jill может запускать любые команды за исключением содержащихся в списках SU и SHELLS.
steve CSNETS = (operator) /usr/local/op_commands/
Пользователь steve может запускать любые команды в директории /usr/local/op_commands/ на машинах в сети CSNETS но только в качестве пользователя operator.
matt valkyrie = KILL
На его персональной рабочей станции пользователю matt требуется возможность убивать процессы.
WEBMASTERS www = (www) ALL, (root) /usr/bin/su www
На хосте www любой пользователь в списке WEBMASTERS (will, wendy и wim) могут запускать любые команды от пользователя www (который владеет файлами сайтов) или просто становиться пользователем www с помощью команды su.
ALL CDROM = NOPASSWD: /sbin/umount /CDROM,\
/sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM
Любой пользователь может монтировать или отмонтировать CD-ROM на машинах в списке CDROM без ввода пароля.
Далее подробно разберем разные элементы файла /etc/sudoers.
Формат файла sudoers
Файл sudoers содержит два типа записей: алиасы (обычные переменные) и спецификации пользователей (указывают кто, что и где может запускать).
Когда есть несколько спецификаций для одного пользователя, они применяются по порядку, то есть используется последняя.
В итоге форма спецификации имеет следующий вид:
кто где = (от имени кого) что
В более полной форме:
кто где = (от имени кого) что, (от имени кого) что : где = (от имени кого) что, (от имени кого) что
Также можно указать от какой группы можно запускать команду:
кто где = (от имени кого : от какой группы) что
Или даже более сложный вариант:
кто где = (от имени кого, от имени кого : от какой группы, от какой группы) что, что
В скобках указано от какого пользователя или группы можно запускать команды. Пользователи и группы друг от друга отделяются запятыми. Пользователи от групп отделяются двоеточиями.
Если вы хотите для одного пользователя задать разные настройки на разных хостах, то для разделения также используются двоеточия.
Пример:
user1 host1 = (op : opgr) /bin/ls
это правило говорит о том, что пользователь user1 может выполнить команду /bin/ls следующим образом:
$ sudo -u op /bin/ls
или
$ sudo -g opgr /bin/ls
или даже
$ sudo -u op -g opgr /bin/ls
Алиасы
Форма записи алиасов
Тип_алиаса Имя = пункт 1, пункт 2 : Имя = пункт 3, пункт 4
Имя алиаса может состоять из латинских букв обоих регистров, цифр и символа нижнего подчеркивания. Имя обязательно должно начинаться с буквы в верхнем регистре.
Типы алиасов
User_Alias
Может содержать одно или более имен пользователей, id пользователей (с префиксом #), имен групп пользователей и их id (с префиксами % и %#, соответственно), сетевые группы (с префиксом +), не-юникосовые имена групп и ID (с префиксами %: и %:#, соответственно), а также алиасы пользователей (User_Aliases). Каждый пункт может предваряться символом восклицательного знака (“!”).
Пункты могут быть заключены в двойные кавычки чтобы избежать использования экранирования специальных символов. При использовании двойных кавычек префиксы должны быть включены в текст между кавычками.
Runas_Alias
Данный алиас может содержать те же пункты, что и User_Alias. Обратите внимание, что имена и группы сравниваются как строки. Другими словами, два пользователя (группы) с разными именами, но с одинаковыми uid (gid) считаются различными. Если вы хотите указать все имена пользователей с одинаковым uid (к примеру, root и toor), вы можете использовать uid (#0 в нашем примере).
Host_Alias
Может состоять из одного или более имен хостов, IP адресов, сетей, сетевых групп (с префиксом +) и других алиасов. Повторимся, значение пункта может задано в отрицательном ключе с помощью символа восклицательного знака. Если вы не задали маску сети вместе с адресом сети, sudo проверит каждый сетевой интерфейс хоста и если адрес сети подойдет к одному из сетевых интерфейсов, будет использована соответствующая сетевая маска. Маска может быть задана либо в виде обычного IP-адреса (вида 255.255.255.0), либо в краткой форме в виден числа (количество бит, к примеру /24). Имя хоста может включать подстановочные знаки (о них чуть позже), но чтобы они работали необходимо, чтобы команда hostname выдавала полностью определенное доменное имя (fqdn). Стоит учесть, что sudo проверяет только реально существующие сетевые интерфейсы и IP-адрес 127.0.0.1 (localhost) использовать не удастся.
Cmnd_Alias
В список могут входить одна или более команд, директорий или других алиасов. Команда — это полностью определенное имя файла (то есть содержащее путь до файла), которое может содержать подстановочные символы. Простое имя файла позволяет пользователю запускать команду с любыми аргументами. Однако вы можете также указать аргументы командной строки (включая подстановочные символы). С другой стороны, можно указать “” чтобы предотвратить использование каких-либо аргументов с данной командой. Директория — это полностью определенный путь заканчивающийся символом ‘/’. Когда в Cmnd_Alias указана директория, пользователь может запускать любые файлы внутри этой директории (но не в ее поддиректориях).
Переопределение умолчаний
Некоторые опции могут быть изменены во время запуска с помощью одной или более записей Defaults, которые могут влиять на всех пользователей на любом хосте, на всех пользователей на определенном хосте, на определенного пользователя, определенную команду или на команды запускаемые от определенного пользователя. Стоит помнить, что записи для отдельных команд не могут включать аргументы. Если нужно задать аргументы, то задайте Cmnd_Alias и используйте его.
При записи Defaults для различных алиасов используются различные символы указывающие на тип алиаса:
'Defaults' '@' Host_List
'Defaults' ':' User_List
'Defaults' '!' Cmnd_List
'Defaults' '>' Runas_List
Параметрами могут быть флаги, целочисленные значения, строки и списки. Флаги являются булевыми и могут быть отключены с помощью оператора “!”. Значения могут быть заключены в двойные кавычки если они содержат несколько слов. Специальные символы могут быть экранированы с помощью обратной косой черты (\).
Списки имеют два оператора присваивания += и -=. Эти операторы используются для добавления и удаления из списка, соответственно.
Записи ‘Defaults’ обрабатываются в следующем порядке: вначале основные, для хостов и пользователей, затем runas и, наконец, для команд.
Полный список опций достаточно велик и мы не будем их здесь приводить. Если вы хотите их просмотреть, пожалуйста, воспользуйтесь командой man sudoers.
Ключевые слова
С командой может использоваться ноль или более ключевых слов. Существует восемь ключевых слов: NOPASSWD, PASSWD, NOEXEC, EXEC, SETENV, NOSETENV, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT and NOLOG_OUTPUT.
NOPASSWD и PASSWD
По умолчанию, чтобы выполнить команду необходимо предварительно авторизоваться. Такое поведение можно изменить с помощью ключевого слова NOPASSWD. NOPASSWD оказывает влияние на команды, которые идут после ключевого слова. PASSWD же можно использовать чтобы обратить влияние NOPASSWD. Например:
user1 host1 = NOPASSWD: /bin/ls, /bin/ln, PASSWD: /bin/kill
NOEXEC и EXEC
NOEXEC может использоваться для того, чтобы предотвратить запуск динамически слинкованых исполняемых файлов с помощью доступных для исполнения команд. Пример:
user1 host1 = NOEXEC: /usr/bin/more
Информацию об остальных ключевых словах читайте в том же мане.
Подстановочные знаки
sudo позволяет использовать подстановочные знаки (а также, мета или глобальные символы) в именах хостов, путях и аргументах командной строки в файле sudoers. Стоит помнить, что это не регулярные выражения.
* — заменяет ноль или более любых символов.
? — заменяет любой один символ.
[…] — заменяет любой символ в заданном диапазоне.
[!…] — заменяет любой символ НЕ входящий в заданных диапазон.
\ — символ экранирования чтобы в именах можно было использовать специальные символы.
Также можно использовать классы символов. Однако, так как двоеточние (“:”) является специальным символом, то его приходится экранировать:
/bin/ls [[\:alpha\:]]*
это будет обозначать любой файл начинающийся с буквы.
Кроме того, прямая косая черта не заменяется подстановочными знаками. К примеру:
/usr/bin/*
соответствует /usr/bin/who, но не соответствует /usr/bin/X11/xterm.
Чтобы запретить использование аргументов командной строки, можно использовать двойные кавычки — «».
Включение содержимого других файлов в sudoers
Включение (“инклуд” от include) содержимого других файлов возможен с помощью директив #include и #includedir.
Это может использоваться в ситуации, когда у вас есть директивы для sudo общие для всех серверов и особые на каждом сервере. В таком случае можно создать два файла, к примеру, sudoers и sudoers.local. Затем второй инклудится в первый с помощью директивы (вместе со значком решетки):
#include /etc/sudoers.local
Также можно создать файлы с разными частями после точки, соответствующими именам серверов и инклудить их следующим образом:
#include /etc/sudoers.%h
где вместо %h подставляется имя хоста.
Что касается директивы #includedir, то можно создать отдельную директорию, в которую можно складывать файлы и они будут автоматически включаться в файл sudoers. К примеру, в Debian после установки sudo создается директория /etc/sudoers.d/, а в файле /etc/sudoers добавлена директива:
#includedir /etc/sudoers.d
Стоит учесть, что файлы обрабатываются и сортируются лексически, а не по номерам. То есть, к примеру, файл /etc/sudoers.d/01_first будет обработан перед /etc/sudoers.d/10_second, но файл с именем /etc/sudoers.d/1_whoops будет обработан после /etc/sudoers.d/10_second, так как вначале названия отсутствует ноль.
Дополнительные специальные символы
Знак решетки (‘#‘) используется для создания комментариев, за исключением применения в директиве #include. Все символы от знака решетки до конца строки считаются комментарием.
ALL — является зарезервированным словом, которое обозначает все возможные значения. Может использоваться вместо любых алиасов и значений в полях “кто”, “где”, “от кого”, “что”. Не пытайтесь создавать алиасы с именем ALL.
Восклицательный знак (‘!‘) используется как логический оператор отрицания (not) и позволяет исключать определенные значения. К примеру, можно разрешить выполнять любые операции за исключением некоторых используя ALL и “!”.
Длинные строки можно разбивать на подстроки с помощью символа обратной косой черты (‘\‘) стоящего в конце каждой подстроки кроме последней.
Пробелы между элементами ‘=‘, ‘:‘, ‘(‘, ‘)‘ не обязательны. То есть их можно использовать, а можно не использовать.
Следующие символы необходимо экранировать с помощью символа обратной косой черты (‘\’):
‘!‘, ‘=‘, ‘:‘, ‘,‘, ‘(‘, ‘)‘, ‘\‘.
sudoedit
Если требуется отредактировать какой-либо текстовый файл, доступ к которому есть доступ только у другого пользователя или рута, то можно воспользоваться утилитой sudoedit, что быстрее, чем запускать редактор с помощью sudo. Также можно использовать ключи -u и -g для запуска от определенного пользователя или группы. По умолчанию будет использовать учетная запись рута.
Наверх
Опубликовано
Установка sudo в Debian 10 » BlogLinux.ru
Debian 10 вышел в релиз. Это прекрасная новость не только для постоянных пользователей Debian, но и для всего сообщества Linux. Однако, если вы установили дистрибутив, то скорее всего заметили, что обычный пользователь не может использовать sudo.
Конечно, если вы используете Ubuntu или Linux Mint такой проблемы не возникнет. В этой статье мы разберемся как выполняется установка sudo в Debian 10.
Что такое sudo?
Независимо от дистрибутива Linux, на ПК есть разные пользователи. Каждый из них имеет определенные роли и разрешения. Допустим, нужно установить какой-то пакет в Debian. Выполнить эту операцию сможет только пользователь с правами root. Другие пользователи не имеют доступа к этому действию.
Утилита sudo – входит в набор программ GNU. Это небольшое приложение, выполняющее команды с привилегиями другого пользователя. Как правило, «другой» — это пользователь – root.
По умолчанию эта утилита в Debian не доступна. Но если вы используете Debian на персональном компьютере, можно без проблем её установить. Однако, если вы работаете с Debian на сервере, лучше этого делать не следует. С помощью sudo вы сможете выполнять команды, к которым обычный пользователь не имеет доступа. К тому же, все выполняемые операции не регистрируются в системном журнале.
Установка sudo в Debian 10
Сначала устанавливаем sudo, а для этого нужно иметь доступ к пользователю root. Это очень важно. Откройте терминал, или подключитесь к серверу удаленно через SSH и переключитесь на пользователя root:
su
Затем введите пароль пользователя root. Теперь можно устанавливать sudo из репозиториев Debian:
apt install sudo
Утилита установится быстро. После этого измените файл /etc/sudoers, в котором находится вся конфигурация sudo. Можно использовать редактор nano или vim:
nano /etc/sudoers
В файле просто разобраться. В разделе спецификаций привилегий пользователя вы найдете строку, подобную этой:
root ALL=(ALL:ALL) ALL
Под ней нужно добавить своего пользователя, а остальное оставить прежним. Например, так:
имя_вашего_пользователя ALL=(ALL:ALL) ALL
Полезные настройки Sudoers для ‘sudo’ в Linux
Сегодня поговорим про полезные настройки Sudoers. В Linux и других Unix-подобных операционных системах только пользователь root может запускать все команды и выполнять определенные критические операции в системе, такие как установка и обновление, удаление пакетов, создание пользователей и групп, изменение важных файлов конфигурации системы и т. д.
Однако системный администратор, который выполняет роль пользователя root, может разрешить обычным пользователям системы выполнить ряд жизненно важных системных операций, в том числе упомянутых выше. Это возможно с помощью команды sudo.
Кроме того, системный администратор может попросту поделится паролем пользователя root (мы не рекомендуем этот методом), чтобы обычные пользователи системы имели доступ к учетной записи пользователя root через команду su.
Sudo позволяет разрешенному пользователю выполнять команду как пользователь root (или другой пользователь), как указано в политике безопасности:
- Он читает и анализирует /etc/sudoers, просматривает параметры пользователя который обращается и его разрешения,
- Затем запрашивает у этого пользователя пароль (обычно пароль пользователя, но он также может быть паролем целевого пользователя или может быть пропущен с тегом NOPASSWD),
- После этого sudo создает дочерний процесс, в котором он вызывает setuid() для переключения на целевого пользователя
- Затем он выполняет команду, заданную выше в качестве аргументов в дочернем процессе.
Ниже приведены конфигурации файлов /etc/sudoers для изменения поведения команды sudo с использованием записей по умолчанию.
$ sudo cat /etc/sudoers
/etc/sudoers File
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults logfile="/var/log/sudo.log"
Defaults lecture="always"
Defaults badpass_message="Password is wrong, please try again"
Defaults passwd_tries=5
Defaults insults
Defaults log_input,log_output
Типы записей по умолчанию
Defaults parameter, parameter_list #affect all users on any host
[email protected]_List parameter, parameter_list #affects all users on a specific host
Defaults:User_List parameter, parameter_list #affects a specific user
Defaults!Cmnd_List parameter, parameter_list #affects a specific command
Defaults>Runas_List parameter, parameter_list #affects commands being run as a specific user
Вы должны заметить, что опции неявно логичны и могут быть отключены с помощью ‘!‘. Операторы и списки имеют два дополнительных оператора присваивания, ‘+=’ (добавить в список) и ‘-=’ (удалить из списка).
Defaults parameter
OR
Defaults parameter=value
OR
Defaults parameter -=value
Defaults parameter +=value
OR
Defaults !parameter
1. Установите Secure PATH
Это путь, используемый для каждой команды sudo, имеет два значения:
- Используется, когда системный администратор не доверяет пользователям sudo и для этого создает безопасную переменную среды PATH
- Чтобы отделить «корневой путь» и «путь пользователя», этот параметр не влияет только на пользователей, определенных exempt_group.
Чтобы установить его, добавьте строку:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
2. Включить sudo для сеанса входа в систему TTY.
Чтобы включить sudo из реального tty, но не с помощью скриптов cron или cgi-bin, добавьте строку:
Defaults requiretty
3. Запустите команду Sudo с помощью pty
Бывает, что злоумышленники пытаются запускать вредоносную программу с помощью sudo, которая разветвит фоновый процесс и он остается активным на терминале пользователя, даже после того как основная программа завершила свое выполнение.
Чтобы избежать такого сценария, вы можете настроить sudo на запуск команд только с помощью psuedo-pty с использованием параметра use_pty, независимо от того, включено ли ведение журнала ввода-вывода или нет:
Defaults use_pty
4. Создайте файл журнала Sudo
По умолчанию sudo регистрируется через syslog(3). Однако, чтобы указать пользовательский файл журнала, используйте параметр logfile следующим образом:
Defaults logfile="/var/log/sudo.log"
Чтобы записать имя хоста и год в пользовательском файле журнала, используйте параметры log_host и log_year следующим образом:
Defaults log_host, log_year, logfile="/var/log/sudo.log"
Ниже приведен пример пользовательского файла журнала sudo:
5. Ведение журнала sudo при вводе/выводе
Параметры log_input и log_output позволяют sudo запускать команду в псевдо-tty и регистрировать все входные данные пользователя и все выходные данные, которые передаются на экран.
Каталог журнала ввода-вывода по умолчанию — /var/log/sudo-io, если есть порядковый номер сеанса, он также сохраняется в этом каталоге. Вы можете указать пользовательский каталог через параметр iolog_dir.
Defaults log_input, log_output
Поддерживаются некоторые управляющие последовательности, такие как %{seq}, которая расширяется до монотонно возрастающего номера последовательности base-36, такого как 000001, где каждые две цифры используются для формирования нового каталога, например. 00/00/01, как в примере ниже:
$ cd / var / log / sudo-io /
$ ls
$ cd 00/00/01
$ ls
$ cat log
Вы можете просмотреть остальные файлы в этом каталоге, используя команду cat.
6. Извещение пользователя о Sudo
Чтобы извещать пользователей sudo о использовании пароля в системе, используйте параметр lecture, как показано ниже.
Он имеет 3 возможных значения:
- Всегда — всегда уведомлять пользователя.
- Один раз — уведомить пользователя при первом выполнении команды sudo (это используется, когда значение не указано)
- Никогда — никогда не уведомлять пользователя.
Defaults log_input, log_output
Кроме того, вы можете установить собственный файл уведомления с параметром lecture_file, введите соответствующее сообщение в файл:
Defaults lecture_file="/path/to/file"
7. Вывод пользовательского сообщения при вводе неправильного пароля sudo
Когда пользователь вводит неверный пароль, в командной строке отображается определенное сообщение. По умолчанию сообщение «sorry, try again», вы можете изменить сообщение, используя параметр badpass_message, следующим образом:
Defaults badpass_message="Password is wrong, please try again"
8. Увеличьте ограничение количества неверного ввода пароля для sudo
Параметр passwd_tries используется для указания количества попыток пользователя ввести пароль.
Значение по умолчанию — 3:
Defaults passwd_tries=5
Чтобы установить тайм-аут пароля (по умолчанию — 5 минут) с использованием параметра passwd_timeout, добавьте следующую строку:
Defaults passwd_timeout=2
9. Пусть sudo ругается на вас, когда вы вводите неправильный пароль
Если пользователь вводит неверный пароль, sudo будет ругаться в терминале. Это автоматически отключит параметр badpass_message.
Defaults insults
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.
Курсы Cisco и Linux с трудоустройством!
Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
- Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
- Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
- Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
- Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
- Если хотите индивидуальный график — обсудим и осуществим.
- Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
- отредактировать резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
sudo — выполнение команд от имени root или другого пользователя.
   
Команда sudo ( substitute user and do, подменить пользователя и выполнить ) позволяет строго определенным пользователям
выполнять указанные программы с административными привилегиями без ввода пароля суперпользователя root. Если быть точнее, то команда sudo позволяет выполнять программы от имени любого пользователя, но, если идентификатор или
имя этого пользователя не указаны, то предполагается выполнение от имени суперпользователя root. Таким образом, использование sudo позволяет выполнять привилегированные команды обычным пользователям без необходимости ввода пароля суперпользователя root . Список пользователей и перечень их прав по отношению к ресурсам системы может быть настроен оптимальным образом для обеспечения комфортной и безопасной работы. Например, команда sudo в Ubuntu Linux, используется в режиме, позволяющем выполнять любые задачи администрирования системы без интерактивного входа под учетной записью root.
Настройки sudo довольно несложные, и тем не менее, позволяют
реализовать гибкую систему распределения полномочий отдельных пользователей в многопользовательской среде.
Командная строка sudo может быть использована в следующих форматах:
sudo -h | -K | -k | -V
sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
sudo [-AbEHknPS] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] []
sudo -e [-AknS] [-C num] [-g group] [-h host] [-p prompt] [-u user] file
Параметры командной строки:
-A, —askpass — использовать вспомогательную программу для ввода пароля
-b, —background — выполнить команду в фоновом режиме
-C, —close-from=num — закрыть все дескрипторы файлов >= num
-E, —preserve-env — сохранить пользовательское окружение при выполнении команды
-e, —edit — редактировать файлы вместо выполнения команды
-g, —group=group — выполнить команду от имени или ID указанной группы
-H, —set-home — установить для переменной HOME домашний каталог указанного пользователя
-h, —help — показать справку и выйти
-h, —host=host — выполнить команду на узле (если поддерживается модулем)
-i, —login — запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду
-K, —remove-timestamp — полностью удалить файл с timestamp
-k, —reset-timestamp — объявить недействительным файл timestamp
-l, —list — показать список прав пользователя или проверить заданную команду; в длинном формате используется дважды
-n, —non-interactive — автономный режим без вывода запросов пользователю
-P, —preserve-groups — сохранить вектор группы вместо установки целевой группы
-p, —prompt=prompt — использовать указанный запрос пароля
-S, —stdin — читать пароль из стандартного ввода
-s, —shell — запустить оболочку от имени указанного пользователя; также можно задать команду
-U, —other-user=user — в режиме списка показывать права пользователя
-u, —user=user — выполнить команду (или редактировать файл) от имени или ID указанного пользователя
-V, —version — показать сведения о версии и выйти
-v, —validate — обновить временную метку пользователя без выполнения команды
— — прекратить обработку аргументов командной строки
Примеры использования команды
sudo:
sudo –l — отобразить список команд, доступных для выполнения текущему пользователю. Кроме списка команд отображаются параметры среды, которые будут применяться при их выполнении.
sudo –ll — отобразить список команд, доступных для выполнения текущему пользователю в длинном (расширенном) формате.
В данном формате вместо краткого синтаксиса для списка разрешенных команд в виде (ALL : ALL) ALL отображается подробное
описание прав пользователя:
Sudoers entry:
RunAsUsers: ALL
RunAsGroups: ALL
Команды: ALL
sudo lshw -C network — отобразить информацию о сетевом оборудовании с правами суперпользователя root
sudo –l –U user1 — посмотреть список команд, доступных для выполнения пользователю user1. Для выполнения данной команды пользователь должен быть root или иметь право на выполнение команды sudo -l, что обеспечивается настройками утилиты sudo в файле /etc/sudoers
sudo ipmitool sensor — выполнить команду ipmitool sensor с правами root .
sudo su — выполнить команду su, т.е. создать сеанс суперпользователя root
sudo -i — запустить командную оболочку с правами суперпользователя root. Для выполнения данной команды пользователь должен иметь право на выполнение программы оболочки в среде sudo, например — /bin/bash
sudo ls /usr/local/protected — получить список файлов каталога, доступного только root
sudo -u user2 ls ~ — получить список файлов домашнего каталога пользователя user2
sudo -u www vi ~www/htdocs/index.html — редактировать файл ~www/htdocs/index.html от имени пользователя www
sudo -g adm view /var/log/syslog — просмотреть файл системного журнала, доступного только суперпользователю root и членам группы adm
sudo -u user1 -g users2 vi /home/users2/textfile.txt — редактировать текстовый файл как пользователь user1, с принадлежностью к первичной группе users2
sudo -E /usr/bin/firefox — запустить браузер firefox от имени суперпользователя root, сохранив параметры среды текущего пользователя. Возможность выполнения команд с сохранением среды пользователя должна быть разрешена параметром SETENV в настройках файла
конфигурации sudo
Файл конфигурации
/etc/sudoers
Настройки sudo определяется содержимым файла /etc/sudoers. Поскольку ошибочные данные в данном файле могут привести к серьезным проблемам доступа к ресурсам системы, рекомендуется выполнять его изменение с помощью специального редактора sudoedit ( в некоторых дистрибутивах — visudo ), который поддерживает функции проверки синтаксиса и значительно снижает риск создания неработоспособной конфигурации sudo.
Содержимое файла /etc/sudoers определяет имена пользователей и групп, перечень выполняемых программ, необходимость введения паролей, и некоторые другие настройки, связанные с формированием переменных окружения при смене пользователя. Кроме данного файла, настройки sudo могут определяться содержимым файлов из каталога /etc/sudoers.d , что позволяет структурировать систему предоставления прав на использование sudo в виде набора файлов с осмысленными именами, что полезно при большом количестве пользователей и сложной системе разграничения прав. Имена файлов конфигураций в каталоге /etc/sudoers.d могут быть любыми, но их содержимое должно полностью соответствовать формату файла /etc/sudoers.
Синтаксис настроек в файле /etc/sudoers позволяет использовать специальные псевдонимы ( Alias-ы ), с помощью которых значительно упрощается как настройка, так и восприятие конфигурационной информации sudo.
В файле конфигурации /etc/sudoers возможно использование четырех разновидностей псевдонимов:
User_Alias — списки пользователей, для которых настраивается политика использования sudo.
Runas_Alias — списки пользователей, от имени которых может быть задано выполнение команд через sudo.
Host_Alias — списки узлов, с которых выполняется подключение к системе.
Cmnd_Alias — списки команд, использующиеся в настройках, выполняемых директивами файла /etc/sudoers
Примеры:
Host_Alias ADMCOMPS = localhost, server, admin — определяет псевдоним ADMCOMPS, который определяет группу компьютеров с именами localhost, server, admin.
Host_Alias MAILSERVERS = 192.168.0.100, smtp2 — определяет группу из двух компьютеров с указанными IP и именем. Возможно использование
адресов подсетей.
User_Alias ADMINS = jsmith, admusr — определяет группу ADMINS, в которую входят пользователи с именами jsmith и admusr.
Аналогичным образом можно создать псевдонимы для различных наборов команд, доступных для выполнения в sudo:
## Группа команд, для работы в сети, псевдоним Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
# Группа команд для управления установкой и удалением программ, псевдоним SOFTWARE
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
# Группа команд для управления системными службами, псевдоним SERVICES
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
Аналогичным образом можно создать псевдонимы для групп команд, выполнение которых делегируется одиночным или объединенных псевдонимами пользователей.
Основная часть настроек в файле /etc/sudoers задает правила, определяющие, какие пользователи, каких компьютеров, какие команды могут выполнять. Формат записей:
user MACHINE=COMMANDS
user — имена или псевдонимы пользователей.
MACHINE — имена или псевдонимы компьютеров
COMMANDS — секция команд, включающая имена или псевдонимы команд и
дополнительные параметры.
Обычно, в файле /etc/sudoers присутствует директива, разрешающая выполнение пользователю root любых команд при любом подключении к системе:
## Allow root to run any commands anywhere root ALL=(ALL) ALL
Аналогичным образом можно разрешить выполнение через sudo всех команд для пользователя, например, с именем user
user ALL=(ALL) ALL
При данной настройке, у пользователя будет запрашиваться пароль ( его личный, а не пароль суперпользователя root ). При необходимости, можно настроить секцию команд таким образом, чтобы пароль не запрашивался, с использованием параметра NOPASSWD:
user ALL=(ALL) NOPASSWD: /usr/bin/su, /usr/bin/drakxconf — пароль будет запрашиваться при выполнении пользователем user через sudo всех команд, кроме su и drakxconf
Использование псевдонимов позволяет уменьшить необходимое число записей для определения прав пользователей, которые могут подключаться к системе с разных компьютеров и входить в разные группы:
ADMINS localhost=(ALL) NOPASSWD:ALL — разрешить группе пользователей, определенной псевдонимом “ADMINS” выполнять любые команды при подключении через петлевой интерфейс “localhost” без ввода пароля..
ADMINS ALL= NETWORKING, SOFTWARE — разрешить группе пользователей, объединенных псевдонимом “ADMINS” выполнять группы команд, объединенные псевдонимами “NETWORKING” и “SOFTWARE”.
Для существующих в системе групп пользователей можно также разрешать выполнение отдельных команд или групп команд:
%users localhost=/sbin/shutdown -h now — разрешить локальным пользователям выключение компьютера.
%operators ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom — разрешить членам группы “operators” монтирование и размонтирование указанных устройств.
%powerusers ALL=NETWORKING, NOPASSWD: /usr/bin/su — разрешить членам группы “powerusers” выполнять команды группы “NETWORKING” с вводом пароля и команду “su” без пароля.
Довольно часто возникает необходимость исключения разрешения на выполнение отдельных команд из списка, объединенных псевдонимом . В этом случае, перед именем команды или псевдонима ставится восклицательный знак – !
ADMINS ALL= ALL, !NETWORKING — разрешить группе пользователей, объединенных псевдонимом “ADMINS” выполнение всех команд, кроме команд, объединенных псевдонимом “NETWORKING”
В следующем примере, используется конфигурация команд, разрешающая выполнение через sudo для всех пользователей группы “ADMINS”, всех команд, кроме команд смены оболочки :
ADMINS ALL= ALL, !/bin/bash, !/usr/bin/su
Кроме настроек доступа, в файле /etc/sudoers присутствуют директивы Defaults, определяющие некоторые
настройки путей исполняемых файлов и создание переменных окружения при выполнении команд:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults env_reset
Defaults env_keep = «COLOS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS»
Defaults env_keep += «MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE»
Defaults env_keep += «LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES»
Defaults env_keep += «LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE»
Defaults env_keep += «LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY»
По умолчанию, если интервал выполнения команд с использованием sudo, не превышает 5 минут, то повторный ввод пароля не требуется.
Однако, это значение можно изменить, добавив значение timestamp_timeout в минутах:
Defaults timestamp_timeout=1
В данном случае, если команда sudo будет выполняться не позже, чем через 1 минуту после ввода пароля для предыдущей команды, то повторно пароль запрашиваться не будет.
Если значение “timestamp_timeout” сделать равным нулю, то пароль будет запрашиваться при каждом запуске sudo, если сделать отрицательным ( -1 ), — то повторный ввод пароля не будет запрашиваться никогда.
Для исключения возможности выполнения sudo-команд при подключении через ssh без авторизации, по умолчанию, должна использоваться команда “ssh –t “:
# Disable «ssh hostname sudo «, because it will show the password in clear.
# You have to run «ssh -t hostname sudo «.
#
Defaults requiretty
Для определения дополнительного каталога с файлами конфигурации пользователей sudo
используется директива:
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
Подробную справку по использовании sudo можно получить с помощью команд:
man sudo
man sudoers
Сайт проекта sudo ( на английском языке )
Если вы желаете помочь развитию проекта, можете воспользоваться кнопкой «Поделиться» для своей социальной сети
В начало страницы       |       На главную страницу сайта
Fail2ban ▷ Настройка на Linux: Debian, Ubuntu, CentOS
В этой статье мы вновь вернемся к теме безопасности сервера и расскажем, как защитить VPS при помощи программы Fail2ban. Основное ее предназначение — защита хоста от несанкционированного доступа, что возможно благодаря тщательному отслеживанию сетевой активности на основных портах и чтению журналов записей (лог-файлов). Программа особенно эффективна против так называемых brute-force атак, поскольку она нейтрализует атакующего таким образом, что все пакеты, отправленные с устройства, IP-адрес которого по той или иной причине попал в черный список, отбрасываются. Блокировка настраивается путем внесения изменений в правила iptables. Итак, приступим к настройке арендованного VPS сервера.
Содержание
Установка на Ubuntu 14.04
1. Для установки программы Fail2ban выполните следующие команды:
sudo apt-get update sudo apt-get install fail2ban
2. Для того, чтобы установленное программное обеспечение работало должным образом, вам необходимо внести поправки в конфигурационный файл. По умолчанию таковым является /etc/fail2ban/jail.conf.
Однако разработчики крайне не рекомендуют редактировать его напрямую, чтобы избежать осложнений при работе с сервером. Поэтому создайте локальную копию данного файла командой:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Далее вам нужно будет выполнять редактирование только /etc/fail2ban/jail.local. Он будет подключен системой автоматически и имеет высший приоритет при исполнении.
3. Откройте файл jail.local для редактирования одной из команд: Если вам удобнее работать с редактором nano:
sudo nano /etc/fail2ban/jail.local
Если для вас предпочтительнее редактор vi:
sudo vi /etc/fail2ban/jail.local
Обратите внимание на секцию [DEFAULT].
Она содержит в себе основные правила, заданные по умолчанию для Fail2ban.
ignoreip — значения этого параметра говорят о том, какие IP-адреса блокироваться не будут вовсе. Если вы хотите, чтобы Fail2ban игнорировал при проверке несколько IP-адресов, их необходимо указать в значении ignoreip через пробел.
bantime — данный параметр означает время в секундах, в течение которого подозрительный IP будет заблокирован. Изначально его значение составляет 10 минут.
findtime — определяет промежуток времени в секундах, в течение которого программой будет определяться наличие подозрительной активности.
maxretry — допустимое число неуспешных попыток получения доступа к серверу. При превышении указанного значения IP попадает в бан.
Ниже будут представлены другие секции, при помощи которых можно настроить защиту различных сервисов, установленных на ваш виртуальный сервер, например, ssh, ftp и прочих. Подробная процедура их настройки будет рассмотрена в конце данной статьи в разделе «Настройка Fail2ban».
4. После редактирования jail.local обязательно сделайте перезапуск Fail2ban командами
sudo service fail2ban restart tail /var/log/fail2ban.log
Установка Fail2ban на CentOS 6.*
1. Чтобы установить программу на виртуальный сервер, выполните поочередно такие команды:
yum update rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install fail2ban
2. По аналогии с п. 2 в инструкции для Ubuntu создайте локальную копию конфигурационного файла и откройте этот файл для редактирования командами:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
3. Активируйте защиту своего VPS там, где нужно, редактируя содержимое jail.local. Подробная инструкция по настройке представлена далее в разделе «Настройка Fail2ban». Внимательно следите за корректностью пути к файлу хранения логов в значении параметра logpath.
4. После редактирования конфигурационного файла перезапустите Fail2ban командой
sudo service fail2ban restart
Установка Fail2ban на Debian 7
1. Установка программы на VPS выполняется следующим набором команд:
apt-get update && apt-get upgrade sudo apt-get install fail2ban
2. Повторите п. 2 из двух предыдущих разделов для создания локальной копии конфигурационного файла jail.conf:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
3. Настройка алгоритма работы Fail2ban задается точно таким же образом, как и для операционных систем Ubuntu и CentOS. Вам необходимо активировать нужные секции jail.local ([ssh], [apache] и прочие, в зависимости от портов, защиту которых вы хотите активировать) и сохранить результаты редактирования конфигурационного файла. Более подробное описание этой процедуры представлено ниже в разделе «Настройка Fail2ban».
4. После правки конфигурационного файла выполните перезапуск Fail2ban командой
sudo service fail2ban restart
Настройка Fail2ban
Первым делом настройте защиту своего VPS по протоколу SSH при помощи программы Fail2ban. Для этого найдите в файле jail.local секцию [ssh].
Она должна быть активна по умолчанию. Тем не менее, на всякий случай, убедитесь, что в значении параметра enabled установлено true, а не false.
Укажите значения параметров, на основании которых Fail2ban должен выполнять отслеживание активности:
filter — фильтр, который будет использоваться. По умолчанию это /etc/fail2ban/filter.d/sshd.conf;
action — действия, которые будет выполнять Fail2ban при обнаружении атакующего IP-адреса, все правила реагирования на действия злоумышленника описаны в файле /etc/fail2ban/action.d. Соответственно, в качестве значения параметра action не может быть указана информация, которой нет в файле /etc/fail2ban/action.d;
logpath — полный путь к файлу, в который будет записываться информация о попытках получения доступа к VPS.
findtime — время в секундах, в течение которого наблюдается подозрительная активность;
maxretry — разрешенное количество повторных попыток подключения к серверу;
bantime — промежуток времени, в течение которого попавший в черный список IP будет оставаться заблокированным.
Стоит обратить внимание на тот факт, что вовсе необязательно прописывать значения вышеуказанных параметров в каждой секции. Если их не упоминать, в действие вступят настройки, указанные в главном разделе [DEFAULT]. Главное, чтобы для переменной enabled было указано значение true.
Защита протокола SSH
Рассмотрим применение параметров реагирования более детально. Пример конфигурации Fail2ban на порту SSH:
[ssh] enabled = true port = ssh filter = sshd action = iptables[name=sshd, port=ssh, protocol=tcp] sendmail-whois[name=ssh, dest=****@yandex.ru, sender=fail2ban@***.ru] logpath = /var/log/auth.log maxretry = 3 bantime = 600
Запись выше означает, что, если выполнено более 3 неудачных попыток подключения к VPS через основные порты SSH, то IP-адрес, с которого выполнялась авторизация, попадет в бан на 10 минут. Правило запрета будет добавлено в iptables. В то же время владелец сервера получит уведомление на e-mail, указанный в значении переменной dest, о том, что указанный IP был заблокирован за попытку получения несанкционированного доступа по протоколу SSH. Также в сообщении будет указана WHOIS информация о заблокированном IP. Пример такого уведомления от Fail2ban:
Hi, The IP 61.147.103.113 has just been banned by Fail2Ban after 3 attempts against SSH. Here are more information about 61.147.103.113: % [whois.apnic.net] % Whois data copyright terms http://www.apnic.net/db/dbcopyright.html % Information related to '61.147.0.0 - 61.147.255.255' inetnum: 61.147.0.0 - 61.147.255.255 netname: CHINANET-JS descr: CHINANET jiangsu province network descr: China Telecom descr: A12,Xin-Jie-Kou-Wai Street descr: Beijing 100088 country: CN admin-c: CH93-AP tech-c: CJ186-AP mnt-by: MAINT-CHINANET mnt-lower: MAINT-CHINANET-JS mnt-routes: maint-chinanet-js changed: [email protected] 20020209 changed: [email protected] 20030306 status: ALLOCATED non-PORTABLE source: APNIC role: CHINANET JIANGSU address: 260 Zhongyang Road,Nanjing 210037 country: CN phone: +86-25-86588231 phone: +86-25-86588745 fax-no: +86-25-86588104 e-mail: [email protected] remarks: send anti-spam reports to [email protected] remarks: send abuse reports to [email protected] remarks: times in GMT+8 admin-c: Ch460-AP tech-c: CS306-AP tech-c: CN142-AP nic-hdl: CJ186-AP remarks: www.jsinfo.net notify: [email protected] mnt-by: MAINT-CHINANET-JS changed: [email protected] 20090831 changed: [email protected] 20090831 changed: [email protected] 20090901 source: APNIC changed: [email protected] 20111114 person: Chinanet Hostmaster nic-hdl: CH93-AP e-mail: [email protected] address: No.31 ,jingrong street,beijing address: 100032 phone: +86-10-58501724 fax-no: +86-10-58501724 country: CN changed: [email protected] 20070416 changed: [email protected] 20140227 mnt-by: MAINT-CHINANET source: APNIC % Information related to '61.147.0.0/16AS23650' route: 61.147.0.0/16 descr: CHINANET jiangsu province network country: CN origin: AS23650 mnt-by: MAINT-CHINANET-JS changed: [email protected] 20030414 source: APNIC % This query was served by the APNIC Whois Service version 1.69.1-APNICv1r0 (UNDEFINED) Regards, Fail2Ban
В качестве значения переменной sender после fail2ban@ укажите домен либо хостнейм VPS.
Важно! Для того чтобы сообщение о блокировке злоумышленника отправлялось на ваш e-mail, необходимо наличие почтового сервера на VPS.
Дополнительно для защиты SSH активируйте следующую секцию:
[ssh-ddos] enabled = true port = ssh filter = sshd-ddos logpath = /var/log/auth.log maxretry = 2
Для хранения больших списков заблокированных IP-адресов можно использовать комбинацию Netfilter/Iptables и IPsets. Чтобы настроить работу Fai2ban таким образом, активируйте раздел [ssh-iptables-ipset4]:
[ssh-iptables-ipset4] enabled = true port = ssh filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] logpath = /var/log/auth.log findtime = 300 maxretry = 3 bantime = 600
После правки конфигурационного файла сохраните внесенные изменения.
Аналогичным образом можно защитить и прочие сервисы.
Защита почтового сервера
Ниже представлены примеры настроек конфигурационного файла для защиты почтового сервера postfix.
[postfix] enabled = true port = smtp,ssmtp,submission action = iptables[name=Postfix-smtp, port=smtp, protocol=tcp] filter = postfix logpath = /var/log/mail.log bantime = 86400 maxretry = 3 findtime = 3600 ignoreip = 127.0.0.1
Важно! Следите за тем, чтобы путь к файлу хранения логов (logpath) был указан корректно. В противном случае перезапуск Fail2ban завершится сообщением об ошибке. Если какой-то из лог-файлов отсутствует на вашем VPS, вы можете его создать самостоятельно командой touch, например, touch /var/log/mail.log. Обязательно назначьте ему необходимые права доступа командой chmod 755 /var/log/mail.log
[sasl] enabled = true port = smtp,ssmtp,submission,imap2,imap3,imaps,pop3,pop3s filter = postfix-sasl action = iptables[name=Postfix-smtp, port=smtp, protocol=tcp] logpath = /var/log/mail.log bantime = 86400 maxretry = 3 findtime = 3600
Защиту почтового сервера dovecot можно активировать следующим образом:
[dovecot] enabled = true port = smtp,ssmtp,submission,imap2,imap3,imaps,pop3,pop3s filter = dovecot action = iptables-multiport[name=dovecot-pop3imap,port="pop3,pop3s,imap,imaps", protocol=tcp] logpath = /var/log/mail.log maxretry = 3 findtime = 3600 bantime = 86400
Пример конфигурации jail.local для защиты roundcube:
[roundcube-auth] enabled = true filter = roundcube-auth port = http,https logpath = /var/log/mail.log action = iptables-multiport[name=roundcube, port="http,https"] bantime = 86400 maxretry = 3 findtime = 3600
Защита веб-сервера (apache)
Для защиты веб-сервера Apache можно использовать следующие настройки Fail2ban:
[apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/error.log maxretry = 3
[apache-multiport] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/error.log maxretry = 3
[apache-noscript] enabled = true port = http,https filter = apache-noscript logpath = /var/log/apache2/error.log maxretry = 3
[apache-overflows] enabled = true port = http,https filter = apache-overflows logpath = /var/log/apache2/error.log maxretry = 2
Как вы уже могли заметить, в используемых выше секциях файла jail.local отсутствуют значения параметра action. В этом случае при обнаружении атаки на сервис apache программа Fail2ban будет выполнять действие, определенное в секции [DEFAULT], а именно action = iptables-multiport. Это значит, что атакующий IP-адрес будет заблокирован в iptables при помощи так называемого модуля multiports. Модуль multiports позволяет настроить правило сразу для диапазонов портов.
Защита FTP сервера
Для защиты FTP-сервера vsftpd с помощью Fail2ban можно использовать следующие параметры:
[vsftpd] enabled = true port = ftp,ftp-data,ftps,ftps-data filter = vsftpd logpath = /var/log/vsftpd.log action = iptables[name=VSFTPD, port=21, protocol=tcp] bantime = 600 maxretry = 3 findtime = 1800
Не забудьте о необходимости перезапуска Fail2ban после каждого редактирования конфигурационного файла.
На этом настройка Fail2ban завершена. Ознакомиться с полным списком правил, которыми программа будет руководствоваться при мониторинге активности на вашем VPS, можно с помощью команды sudo iptables –L
Основные моменты по установке и настройке программы рассмотрены. В случае, если какой-то IP-адрес будет заблокирован Fail2ban по ошибке, удалить его из черного списка можно командой:
sudo fail2ban-client set JAIL unbanip IP
Где JAIL — название секции конфигурационного файла jail.local, в соответствии с правилами которой была активирована блокировка, IP — адрес, который нужно разблокировать.
Пример команды разблокировки:
sudo fail2ban-client set ssh-iptables unbanip 61.147.103.113
Как изменить файл Sudoers | Как настроить пользовательские правила
Вступление
Разделение привилегий является одной из фундаментальных парадигм безопасности, реализованных в Linux и Unix-подобных операционных системах. Обычные пользователи работают с ограниченными привилегиями, чтобы уменьшить объем своего влияния на свою собственную среду, а не на более широкую операционную систему.
У специального пользователя, называемого root
, есть привилегии суперпользователя. Это административная учетная запись без ограничений, которые имеются у обычных пользователей. Пользователи могут выполнять команды с привилегиями «суперпользователя» или «root» несколькими способами.
В этой статье мы обсудим, как правильно и безопасно получать root
привилегии, уделяя особое внимание редактированию /etc/sudoers
файла.
Мы выполним эти шаги на сервере Ubuntu 16.04, но большинство современных дистрибутивов Linux должны работать аналогичным образом.
В этом руководстве предполагается, что вы уже выполнили начальную настройку сервера,описанную здесь. Войдите в свой сервер как обычный пользователь без полномочий root и продолжите работу ниже.
Как получить корневые привилегии
Существует три основных способа получения root
привилегий, которые различаются по уровню сложности.
Вход как корень
Самый простой и самый прямой метод получения root
привилегий — это просто войти в свой сервер в качестве root
пользователя с самого начала.
Если вы входите на локальный компьютер (или используете вне конфигурированный доступ к консоли, если используете DigitalOcean), просто введите «root» в качестве своего имени в приглашении для входа и введите root
пароль при запросе.
Если вы регистрируетесь через SSH, укажите root
пользователя до IP-адреса или имени домена в строке подключения SSH:
- ssh root@server_domain_or_IP
Если вы не настроили SSH-ключи для root
пользователя, введите root
пароль при появлении запроса.
Используйте «su», чтобы стать корнем
Вход в систему, как root
правило, не рекомендуется, потому что легко начать использовать систему для не административных задач, что опасно.
Следующий способ получить привилегии суперпользователя позволяет вам стать root
пользователем в любое время, когда вам это нужно.
Мы можем сделать это, вызвав su
команду, которая означает «заменить пользователя». Чтобы получить root
привилегии, просто введите:
Вам будет предложено ввести root
пароль пользователя, после чего вы попадете в root
сеанс оболочки.
Когда вы закончите задачи, требующие root
привилегий, вернитесь к нормальной оболочке, набрав:
Используйте «sudo» для выполнения команд как корень
Последний и самый сложный способ получения root
привилегий, которые мы обсудим, — это sudo
команда.
Команда sudo
позволяет выполнять одноразовые команды с root
привилегиями, без необходимости создавать новую оболочку. Он выполняется следующим образом:
В отличие от этого su
, sudo
команда запрашивает пароль пользователя, вызывающего команду, а не root
пароль.
Из-за его последствий для безопасности sudo
доступ по умолчанию не предоставляется пользователям и должен быть настроен до того, как он будет функционировать правильно. Если вы следовали первоначальному руководству по настройке сервера , вы уже выполнили конфигурацию bare-bones.
В следующем разделе мы обсудим, как изменить конфигурацию более подробно.
Что такое Visudo?
Команда sudo
настраивается через файл, расположенный в /etc/sudoers
.
Предупреждение
Никогда не редактируйте этот файл с помощью обычного текстового редактора! Всегда используйте visudo
команду вместо этого!
Поскольку неправильный синтаксис в /etc/sudoers
файле может оставить вас в системе, где невозможно получить повышенные привилегии, важно использовать visudo
команду для редактирования файла.
Команда visudo
открывает текстовый редактор, как обычно, но он сохраняет синтаксис файла при сохранении. Это предотвращает ошибки конфигурации из sudo
операций блокировки , которые могут быть единственным способом получения root
привилегий.
Традиционно visudo
открывается /etc/sudoers
файл с помощью vi
текстового редактора. Однако Ubuntu настроил visudo
на использование nano
текстового редактора.
Если вы хотите изменить его vi
, выполните следующую команду:
- sudo update-alternatives —config editor
Output
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/ed -100 manual mode
2 /bin/nano 40 manual mode
3 /usr/bin/vim.basic 30 manual mode
4 /usr/bin/vim.tiny 10 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Выберите номер, который соответствует выбору, который вы хотите сделать.
В CentOS вы можете изменить это значение, добавив следующую строку ~/.bashrc
:
- export EDITOR=`which name_of_editor`
Отправьте файл, чтобы выполнить изменения:
После того, как вы настроили visudo
, выполните команду для доступа к /etc/sudoers
файлу:
Как изменить файл Sudoers
Вам будет представлен /etc/sudoers
файл в выбранном текстовом редакторе.
Я скопировал и вложил файл из Ubuntu 16.04, удалив комментарии. В /etc/sudoers
файле CentOS есть еще много строк, некоторые из которых мы не будем обсуждать в этом руководстве.
/ и т.д. / sudoers
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
#includedir /etc/sudoers.d
Давайте посмотрим, что делают эти строки.
Строки по умолчанию
В первой строке «По умолчанию env_reset» сбрасывается среда терминала для удаления любых пользовательских переменных. Это мера безопасности, используемая для очистки потенциально опасных переменных окружающей среды от sudo
сеанса.
Вторая строка Defaults mail_badpass
сообщает системе об отправке уведомлений о неудачных sudo
попытках пароля настроенному mailto
пользователю. По умолчанию это root
учетная запись.
Третья строка, начинающаяся с «Defaults secure_path = …», указывает PATH
(места в файловой системе, в которой операционная система будет искать приложения), которые будут использоваться для sudo
операций. Это предотвращает использование путей пользователя, которые могут быть вредными.
Пользовательские привилегированные линии
Четвертая строка, определяющая привилегии root
пользователя sudo
, отличается от предыдущих строк. Давайте посмотрим, что означают разные поля:
root ALL=(ALL:ALL) ALL
В первом поле указывается имя пользователя, которое правило применимо к (root
).demo ALL=(ALL:ALL) ALL
Первый «ALL» указывает, что это правило применяется ко всем хостам.demo ALL=(ALL:ALL) ALL
Это «ВСЕ» указывает, чтоroot
пользователь может запускать команды как все пользователи.demo ALL=(ALL:ALL) ALL
Это «ВСЕ» указывает, чтоroot
пользователь может запускать команды как все группы.demo ALL=(ALL:ALL) ALL
Последний «ВСЕ» указывает, что эти правила применяются ко всем командам.
Это означает, что наш root
пользователь может использовать любую команду sudo
, если они предоставляют свой пароль.
Групповые привилегированные линии
Следующие две строки аналогичны линиям привилегий пользователя, но они определяют sudo
правила для групп.
Имена, начинающиеся с «%», указывают имена групп.
Здесь мы видим, что группа «admin» может выполнять любую команду как любой пользователь на любом хосте. Аналогичным образом, sudo
группа может иметь одинаковые привилегии, но может также выполняться как любая группа.
Включена линия /etc/sudoers.d
Последняя строка может выглядеть как комментарий на первый взгляд:
/ и т.д. / sudoers
. . .
#includedir /etc/sudoers.d
Это действительно начать с #
, который обычно указывает на комментарий. Однако эта строка фактически указывает, что файлы в /etc/sudoers.d
каталоге будут также получены и применены.
Файлы в этом каталоге соответствуют тем же правилам, что и /etc/sudoers
сам файл. Любой файл, который не заканчивается ~
и который не имеет .
в нем, будет считан и применен к sudo
конфигурации.
Это в основном предназначено для приложений для изменения sudo
привилегий при установке. Включение всех связанных правил в один файл в /etc/sudoers.d
каталоге позволяет легко увидеть, какие привилегии связаны с этими учетными записями, и легко ли отменить учетные данные, не пытаясь /etc/sudoers
напрямую манипулировать файлом.
Как и в случае с /etc/sudoers
самим файлом, вы всегда должны редактировать файлы в /etc/sudoers.d
каталоге visudo
. Синтаксис для редактирования этих файлов:
- sudo visudo -f /etc/sudoers.d/file_to_edit
Как предоставить пользователям Sudo привилегии
Наиболее распространенной операцией, которую пользователи хотят выполнить при управлении sudo
разрешениями, является предоставление нового общего sudo
доступа пользователей . Это полезно, если вы хотите предоставить учетной записи полный административный доступ к системе.
Самый простой способ сделать это в системе, настроенной с помощью группы администрирования общего назначения, такой как система Ubuntu в этом руководстве, состоит в том, чтобы просто добавить пользователя к этой группе.
Например, на Ubuntu 16.04 sudo
группа имеет полные права администратора. Мы можем предоставить пользователю эти же привилегии, добавив их в группу следующим образом:
- sudo usermod -aG sudo username
Команда gpasswd
также может использоваться:
- sudo gpasswd -a username sudo
Они оба совершают одно и то же.
В CentOS это обычно wheel
группа, а не sudo
группа:
- sudo usermod -aG wheel username
Или, используя gpasswd
:
- sudo gpasswd -a username wheel
В CentOS, если добавление пользователя в группу не работает сразу, вам может потребоваться отредактировать /etc/sudoers
файл, чтобы раскомментировать имя группы:
/ и т.д. / sudoers
. . .
%wheel ALL=(ALL) ALL
. . .
Как настроить пользовательские правила
Теперь, когда мы знакомы с общим синтаксисом файла, давайте создадим некоторые новые правила.
Как создать псевдонимы
sudoers
Файл может быть организован более легко группировать вещи с различными видами «псевдонимы».
Например, мы можем создать три группы пользователей с перекрывающимся членством:
/ и т.д. / sudoers
. . .
User_Alias GROUPONE = abby, brent, carl
User_Alias GROUPTWO = brent, doris, eric,
User_Alias GROUPTHREE = doris, felicia, grant
. . .
Имена групп должны начинаться с заглавной буквы. Затем мы можем позволить членам GROUPTWO
обновить apt
базу данных, создав следующее правило:
/ и т.д. / sudoers
. . .
GROUPTWO ALL = /usr/bin/apt-get update
. . .
Если мы не укажем пользователя / группу для запуска, как указано выше, по sudo
умолчанию root
пользователю.
Мы можем разрешить членам команды GROUPTHREE
завершить работу и перезагрузить компьютер, создав «псевдоним команды» и используя это в правиле для GROUPTHREE
:
/ и т.д. / sudoers
. . .
Cmnd_Alias POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
GROUPTHREE ALL = POWER
. . .
Мы создаем псевдоним POWER
команды, который содержит команды для выключения и перезагрузки компьютера. Затем мы разрешаем членам GROUPTHREE
выполнять эти команды.
Мы также можем создавать псевдонимы «Запуск от имени», которые могут заменить часть правила, определяющего пользователя для выполнения команды как:
/ и т.д. / sudoers
. . .
Runas_Alias WEB = www-data, apache
GROUPONE ALL = (WEB) ALL
. . .
Это позволит любому, кто участвует GROUPONE
в выполнении команд в качестве www-data
пользователя или apache
пользователя.
Просто имейте в виду, что более поздние правила будут отменять предыдущие правила, если есть конфликт между ними.
Как заблокировать правила
Существует несколько способов, которыми вы можете добиться большего контроля над тем, как sudo
реагировать на вызов.
Команда, updatedb
связанная с mlocate
пакетом, относительно безвредна для однопользовательской системы. Если мы хотим разрешить пользователям выполнять его с root
привилегиями без ввода пароля, мы можем сделать следующее правило:
/ и т.д. / sudoers
. . .
GROUPONE ALL = NOPASSWD: /usr/bin/updatedb
. . .
NOPASSWD
является «тегом», что означает, что пароль не запрашивается. Он имеет команду сопутствующей команды PASSWD
, которая является поведением по умолчанию. Тег релевантен для остальной части правила, если не будет отменен его «близнецом» тегом позже по строке.
Например, у нас может быть такая строка:
/ и т.д. / sudoers
. . .
GROUPTWO ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill
. . .
Еще один полезный тег NOEXEC
, который можно использовать для предотвращения некоторых опасных действий в определенных программах.
Например, некоторые программы, такие как «меньше», могут порождать другие команды, введя это из интерфейса:
!command_to_run
Это в основном выполняет любую команду, которую пользователь дает ему с теми же правами, что и «меньше», что может быть довольно опасным.
Чтобы ограничить это, мы могли бы использовать такую строку:
/ и т.д. / sudoers
. . .
username ALL = NOEXEC: /usr/bin/less
. . .
Разнообразная информация
Есть еще несколько фрагментов информации, которые могут быть полезны при работе с ними sudo
.
Если вы указали, что пользователь или группа «запускаются как» в файле конфигурации, вы можете выполнять команды как те пользователи, используя флаги «-u» и «-g», соответственно:
- sudo -u run_as_user command
- sudo -g run_as_group command
Для удобства по умолчанию sudo
вы сохраняете данные аутентификации в течение определенного периода времени в одном терминале. Это означает, что вам не придется вводить пароль снова, пока не истечет таймер.
В целях безопасности, если вы хотите очистить этот таймер, когда вы закончите выполнение административных команд, вы можете запустить:
Если, с другой стороны, вы хотите « sudo
перенести » команду, чтобы вам не было предложено позже или возобновить sudo
аренду, вы всегда можете ввести:
Вам будет предложено ввести пароль, который будет кэшироваться для последующего sudo
использования до sudo
истечения срока.
Если вам просто интересно, какие права определены для вашего имени пользователя, вы можете ввести:
В этом списке будут указаны все правила в /etc/sudoers
файле, которые применяются к вашему пользователю. Это дает вам представление о том, что вам будет или не будет разрешено делать с sudo
любым пользователем.
Существует много раз, когда вы выполняете команду, и она терпит неудачу, потому что вы забыли ее предисловие sudo
. Чтобы избежать повторного ввода команды, вы можете воспользоваться функцией bash, которая означает «повторить последнюю команду»:
Двойной восклицательный знак повторит последнюю команду. Нам предшествовало sudo
быстрое изменение непривилегированной команды на привилегированную команду.
Для некоторой забавы вы можете добавить следующую строку в свой /etc/sudoers
файл visudo
:
/ и т.д. / sudoers
. . .
Defaults insults
. . .
Это приведет sudo
к возврату глупого оскорбления, когда пользователь вводит неверный пароль sudo
. Мы можем использовать sudo -k
для очистки предыдущего sudo
кэшированного пароля, чтобы попробовать:
Output
[sudo] password for demo: # enter an incorrect password here to see the results
Your mind just hasn't been the same since the electro-shock, has it?
[sudo] password for demo:
My mind is going. I can feel it.
Заключение
Теперь у вас должно быть общее представление о том, как читать и модифицировать sudoers
файл, а также понять различные методы, которые можно использовать для получения root
привилегий.
Помните, что привилегии суперпользователя не предоставляются постоянным пользователям по какой-либо причине. Важно понимать, что каждая команда выполняет с root
привилегиями. Не принимайте на себя ответственность легкомысленно. Изучите лучший способ использования этих инструментов для вашего прецедента и заблокируйте любую функциональность, которая не нужна.
Как создать пользователя Sudo в Debian
Команда sudo (сокращение от Super-user do) — это программа, позволяющая пользователям выполнять команды с привилегиями безопасности другого пользователя, по умолчанию — пользователя root.
В этом руководстве мы покажем вам, как создать нового пользователя в системе Debian и предоставить ему доступ sudo.
Вы можете использовать эту учетную запись для выполнения административных команд без необходимости входа на сервер Debian в качестве пользователя root.
Создайте пользователя sudo #
Выполните следующие действия, чтобы создать новую учетную запись пользователя и предоставить ей доступ sudo.Если вы хотите настроить sudo для существующего пользователя, перейдите к шагу 3.
1. Войдите на свой сервер. #
Сначала войдите в систему как пользователь root:
ssh root @ server_ip_address
2. Создайте новую учетную запись пользователя. #
Создайте новую учетную запись пользователя с помощью команды adduser
. Не забудьте заменить имя пользователя
желаемым именем пользователя:
adduser username
Команда предложит вам установить и подтвердить новый пароль пользователя.Убедитесь, что пароль для новой учетной записи максимально надежный (комбинация букв, цифр и специальных символов).
Добавление имени пользователя ...
Добавление новой группы «имя пользователя» (1001) ...
Добавление нового пользователя username (1001) с группой username ...
Создание домашнего каталога `/ home / username '...
Копирование файлов из `/ etc / skel '...
Новый пароль:
Введите повторно новый пароль:
passwd: пароль успешно обновлен
После того, как вы установите пароль пользователя, команда создаст для пользователя домашний каталог, скопирует несколько файлов конфигурации в домашний каталог и предложит вам ввести информацию о новом пользователе.Если вы хотите оставить всю эту информацию пустой, просто нажмите ENTER
, чтобы принять значения по умолчанию.
Изменение информации о пользователе для имени пользователя
Введите новое значение или нажмите ENTER для значения по умолчанию.
Полное имя []:
Номер комнаты []:
Рабочий телефон []:
Домашний телефон []:
Другой []:
Информация верна? [Д / Н]
3. Добавьте пользователя в группу
sudo
#
По умолчанию в системах Debian членам группы sudo
предоставляется доступ sudo.Чтобы добавить пользователя в группу sudo, используйте команду usermod
:
usermod -aG sudo username
Протестируйте доступ sudo #
Переключитесь на вновь созданного пользователя:
su - username
Используйте команда sudo для запуска команды whoami
:
sudo whoami
Если у пользователя есть доступ sudo, то вывод команды whoami
будет root
:
root
Как использовать sudo #
Чтобы использовать sudo, просто добавьте к команде префикс sudo
и пробел:
sudo ls -l / root
При первом использовании sudo в сеансе вы будете предлагается ввести пароль пользователя:
[sudo] пароль для имени пользователя:
Заключение #
Вы узнали, как создать пользователя с привилегиями sudo.Теперь вы можете войти на свой сервер Debian с этой учетной записью и использовать sudo для выполнения административных команд.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Как использовать Sudo в Debian, CentOS и FreeBSD
Используете другую систему?
Использование пользователя sudo
для доступа к серверу и выполнения команд на корневом уровне является очень распространенной практикой среди системных администраторов Linux и Unix.Использование пользователя sudo
часто связано с отключением прямого корневого доступа к своему серверу, чтобы предотвратить несанкционированный доступ.
В этом руководстве мы рассмотрим основные шаги по отключению прямого корневого доступа, созданию пользователя 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 установить sudo
Шаг 2. Добавление пользователя sudo
Пользователь sudo
— это обычная учетная запись пользователя на машине Linux или Unix.
Debian
adduser mynewusername
CentOS
adduser mynewusername
FreeBSD
adduser mynewusername
Шаг 3: Добавление нового пользователя в колесную группу
(необязательно)
Группа 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
эффективно использовать команду sudo
.Для этого мы просмотрим содержимое / etc / sudoers
и редактируем его, где это возможно.
Debian
vim / и т. Д. / Sudoers
или
visudo
CentOS
vim / и т. Д. / Sudoers
или
visudo
FreeBSD
vim / и т. Д. / Sudoers
или
visudo
Примечание: Команда visudo
откроет файл / etc / sudoers
с помощью системного текстового редактора (обычно vi или vim) .
Начните просмотр и редактирование ниже этой строки:
# Разрешить членам группы sudo выполнять любую команду
Этот раздел / etc / sudoers
часто выглядит так:
# Разрешить членам группы sudo выполнять любую команду
% sudo ALL = (ВСЕ: ВСЕ) ВСЕ
В некоторых системах вы можете не найти % wheel
вместо % sudo
; в этом случае это будет строка, под которой вы начнете изменять.
Если строка, начинающаяся с % sudo
в Debian или % wheel
в CentOS и FreeBSD, не закомментирована (с префиксом #) , это означает, что sudo уже настроен и включен. Затем вы можете перейти к следующему шагу.
Шаг 5. Разрешение пользователю, который не принадлежит ни к группе
wheel
, ни к группе sudo
, выполнять команду sudo
Можно разрешить пользователю, не входящему ни в одну из групп пользователей, выполнять команду sudo
, просто добавив их в / etc / sudoers
следующим образом:
anotherusername ВСЕ = (ВСЕ) ВСЕ
Шаг 6. Перезагрузка сервера SSHD
Чтобы применить изменения, внесенные вами в / etc / sudoers
, вам необходимо перезапустить сервер SSHD следующим образом:
Debian
/ etc / init.d / sshd перезапуск
CentOS 6
/etc/init.d/sshd перезапуск
CentOS 7
systemctl перезапустить sshd.service
FreeBSD
/etc/rc.d/sshd start
Шаг 7: Тестирование
После перезапуска сервера SSH выйдите из системы, а затем снова войдите в нее как пользователь sudo
, затем попытайтесь выполнить некоторые команды тестирования следующим образом:
sudo время безотказной работы
судо whoami
Любая из следующих команд позволит пользователю sudo
стать root
.
судо су -
судо -i
sudo -S
Примечания:
- Команда
whoami
вернетroot
в сочетании сsudo
. - Вам будет предложено ввести пароль пользователя при выполнении команды
sudo
, если вы явно не укажете системе не запрашивать пароли упользователей sudo
. Обратите внимание, что это не рекомендуется.
Дополнительно: разрешение
sudo
без ввода пароля пользователя
Как объяснялось ранее, это не рекомендуется и включен в данное руководство только в демонстрационных целях.
Чтобы позволить вашему пользователю sudo
выполнять команду sudo
без запроса пароля, добавьте суффикс строки доступа в / etc / sudoers
с NOPASSWD: ALL
следующим образом:
% sudo ВСЕ = (ВСЕ: ВСЕ) ВСЕ NOPASSWD: ВСЕ
Примечание: Вам необходимо перезапустить сервер SSHD, чтобы изменения вступили в силу.
Шаг 8: Отключите прямой root-доступ
Теперь, когда вы подтвердили, что можете без проблем использовать свой sudo user
, пришло время для восьмого и последнего шага, отключив прямой root-доступ.
Сначала откройте / etc / ssh / sshd_config
с помощью вашего любимого текстового редактора и найдите строку, содержащую следующую строку. Он может иметь префикс #
.
PermitRootLogin
Независимо от префикса или значения параметра в / etc / ssh / sshd_config
, вам необходимо изменить эту строку на следующее:
PermitRootLogin нет
Наконец, перезапустите сервер SSHD.
Примечание: Не забудьте проверить свои изменения, попытавшись подключиться к серверу по SSH как root
.Если вы не можете этого сделать, это означает, что вы успешно выполнили все необходимые шаги.
На этом наш урок завершен.
Хотите внести свой вклад?
Вы можете заработать до 300 $ , добавляя новые статьи
Как установить sudo на минимальный сервер Debian
После установки Debian для работы в качестве сервера вы можете заметить, что в нем отсутствует что-то важное — sudo.Джек Уоллен проведет вас через процесс установки sudo и включения его для пользователя.
Изображение: Джек Уоллен
Debian — отличная платформа для ваших серверов. Когда вы переходите с Debian, вы знаете, что получаете невероятно стабильную и надежную операционную систему, которая была опробована, протестирована и оказалась достаточно хорошей, чтобы служить основой для многих других дистрибутивов Linux.
Однако знаете ли вы, что при установке Debian будет отсутствовать важный пакет — по крайней мере, один, от которого вы, вероятно, стали зависеть при выполнении административных задач в Linux. Этот пакет — sudo. Верно. При установке Debian, если вам нужно позаботиться об административных задачах, вы должны выполнить su для пользователя root (как нам приходилось возвращаться в старые времена), выполнить свои команды, а затем запомнить выход из пользователя root.
Для многих это проблема безопасности, ожидающая своего часа. Если вы попадаете в эту категорию, вы, вероятно, предпочли бы, чтобы ваши серверы Debian включали sudo.Хорошие новости … это не только возможно, это просто.
Я проведу вас через процесс установки sudo на минимальный сервер Debian 8. Вы заметите, что если вы работаете со стандартной установкой Debian (например, с настольной установкой), sudo, вероятно, включен, поэтому вам не придется беспокоиться о такой установке. Но для тех, кто установил минимальную версию Debian, потребуется установка sudo.
См .: Как установить минимальный сервер Debian
Установка sudo
Первое, что необходимо сделать, это установить пакет sudo.Для этого войдите на минимальный сервер Debian как root. Перед установкой sudo давайте обновим и обновим операционную систему с помощью следующих команд:
apt update подходящее обновление
Обратите внимание: при обновлении ядра потребуется перезагрузка, чтобы изменения вступили в силу. Из-за этого вы можете захотеть запустить вышеуказанные команды в непроизводственные периоды, перезагрузить сервер (если применимо), а затем установить sudo позже.
Чтобы установить sudo, введите команду:
apt install sudo
После завершения команды устанавливается sudo.Мы еще не закончили. На данный момент единственный пользователь, который может использовать sudo, — это root, и это не отвечает нашим потребностям. Давай изменим это.
Добавление пользователей в sudo
Чтобы пользователь без полномочий root мог использовать sudo, их нужно либо добавить в файл sudoers с помощью visudo, , либо добавить в группу sudo. Поскольку это Debian, все участники группы sudo имеют полный доступ к sudo. Поэтому вместо того, чтобы возиться с файлом sudoers, мы собираемся добавить наших пользователей в группу sudo.Я всегда считал этот метод более чистым в Debian. Для этого откройте окно терминала su для пользователя root и введите следующую команду:
usermod -aG sudo ИМЯ ПОЛЬЗОВАТЕЛЯ
Где USERNAME — имя добавляемого пользователя.
Как только пользователь выйдет из системы и снова войдет в систему, он получит полный доступ к sudo. На этом этапе вам больше не нужно входить на минимальный сервер Debian с правами root, чтобы все было сделано. Войдите в систему как пользователь, принадлежащий к группе sudo, и вы получите полные права администратора на своем сервере.
Важный шаг
Последнее, что вам нужно, — это войти на сервер Debian как пользователь root. Не делай этого. Именно по этой причине был создан sudo — чтобы администраторы не входили в систему как root и не могли оказаться уязвимыми для атак. Установите sudo, добавьте пользователей в эту группу и забудьте об этом корневом пользователе, если в этом нет крайней необходимости. Это важный шаг в обеспечении безопасности вашего сервера Debian.
Информационный бюллетень для инсайдеров по кибербезопасности
Усильте защиту ИТ-безопасности вашей организации, следя за последними новостями, решениями и передовыми практиками в области кибербезопасности.Доставка по вторникам и четвергам
Зарегистрироваться Сегодня
См. Также
Все о Sudo в системе Debian 10 Buster — Linux-совет
Итак, вы недавно перешли на Debian 10, и вам нужен способ для себя или кого-то еще, чтобы иметь возможность выполнять в системе операции с ограниченными правами доступа.Эти операции включают в себя задачи, связанные с информацией и конфиденциальностью, такие как изменение конфигурации системы, управление пользователями, редактирование всех файлов, установка / удаление программного обеспечения и обновление вашей системы и ее компонентов. В качестве первой учетной записи пользователя по умолчанию после установки «root» — самый мощный пользователь Debian, который может выполнять все вышеперечисленное. Хотя имя «root» происходит от доступа и разрешений этого пользователя в корневом каталоге, его также называют администратором, супервизором и суперпользователем.
Итак, если root может делать все, что такое sudo и зачем нам нужны пользователи sudo в нашем Debian?
Sudo или «superuser do» — это набор привилегий, которые администратор / root может предоставить другим пользователям, чтобы они также могли выполнять некоторые операции с ограниченными полномочиями в Debian, сохраняя при этом высокий уровень безопасности и полномочий на система.
Один из способов предоставить пользователям права доступа — просто поделиться с ними корневым паролем, не вдаваясь в суть sudo, но у Linux есть свои причины:
- Sudo предоставляет временные привилегии пользователям, которые могут быть в любой момент отозваны пользователем root.Если бы вместо этого мы поделились своим корневым паролем, потребовалось бы изменить его, когда привилегии должны были быть прекращены.
- Постоянная работа с правами суперпользователя не является хорошей практикой безопасности, так как можно по ошибке нарушить важные системные настройки. Поэтому лучше переключиться на sudo, а затем обратно, когда ограниченная операция будет завершена.
- Все команды, выполняемые как sudo, регистрируются вместе с именем пользователя, который их выполнил. Это обеспечивает подотчетность и аудит для всех таких пользователей
В этой статье мы объясним, как вы можете сделать следующее в системе Debian 10 Buster:
- Предоставить пользователю права sudo
- Использовать sudo после его предоставления
- Удалить привилегию sudo у пользователя
- Проверить, какие пользователи имеют права sudo в системе
Примечание: Обратите внимание, что только авторизованный пользователь может выполнять все эти операции в Debian.
Предоставление привилегии Sudo пользователю
В большинстве установок Debian по умолчанию не устанавливается утилита sudo. Поэтому сначала мы установим его на наш Debian — от имени администратора. Откройте приложение Терминал через панель поиска Application Launcher, а затем войдите в систему как root с помощью следующей команды:
Система спросит у вас пароль для root; при условии, что вы войдете в систему как root.
Теперь выполните следующие команды, чтобы установить sudo в вашей системе:
# apt-get update
# apt-get install sudo
Утилита sudo теперь должна быть установлена в вашем Debian.
Файл / etc / sudoers содержит список пользователей, имеющих права sudo в системе. Хотя это текстовый файл, мы не рекомендуем открывать его в любом из доступных текстовых редакторов. Одна небольшая ошибка может стоить пользователю доступа к правам sudo навсегда.
Поэтому давайте воспользуемся наиболее предпочтительным и безопасным способом редактирования файла sudoers, выполнив следующую команду:
Это откроет файл sudoers в безопасном режиме. Найдите раздел файла, отмеченный на следующем снимке экрана, и добавьте следующую строку:
% пользователь ВСЕ = (ВСЕ: ВСЕ) ВСЕ
Я добавил пользователя с именем «sana» в качестве пользователя sudo.Выйдите из файла, нажав Ctrl + X. Затем введите Y, чтобы сохранить измененный файл.
Теперь пользователь помечен как пользователь sudo и может выполнять множество привилегированных операций на вашем Debian.
Как использовать Sudo после того, как он был предоставлен
Войдите в систему как пользователь, которому предоставлены права sudo в Debian, а затем откройте приложение «Терминал». Давайте теперь проверим логин sudo, а также можем ли мы выполнить какие-либо операции с ограниченными полномочиями.
Если вы введете следующую команду для установки проигрывателя VLC, вы получите сообщение об ошибке, показанное на скриншоте:
Причина в том, что только авторизованный пользователь (root или sudo) может добавлять и удалять программы в Debian.Поэтому сейчас мы запустим ту же команду, что и sudo:
$ sudo apt-get install vlc
Когда пользователь sudo запускает эту команду, ему будет предложено ввести свой собственный пароль.
После проверки как sudo начнется процесс установки, как показано выше.
Как удалить права пользователя Sudo
Процесс удаления пользователя из списка sudoers так же прост, как его добавление. От имени пользователя root или пользователя sudo откройте файл sudoers следующим образом:
Или,
Затем удалите или закомментируйте строку, которая помечает пользователя как sudo.
Сохраните файл, и указанный пользователь больше не распознается системой как авторизованный пользователь sudo.
Как проверить, какие пользователи имеют права Sudo в системе
Это хорошая административная проверка, чтобы время от времени видеть, каким пользователям предоставлены права sudo в системе. Это помогает решить, чей статус sudo следует сохранить, а чей отпустить. Мы ищем способ составить список членов группы «sudo».
Следующее использование команды getent в Linux позволит администратору проверить, какие пользователи имеют права sudo в вашем Debian:
Если вы хотите проверить, является ли определенный пользователь членом группы sudo, вы можете использовать команду Linux groups следующим образом:
Прочитав эту статью, вы не только сможете различать термины sudo, root, администратор, супервизор и т. Д., Но и безопасно управлять тем, которым вы хотите предоставить права sudo в вашем Debian.
Как добавить пользователя в Sudoers в Debian 10 Buster — devconnected
В сегодняшнем руководстве мы увидим, как добавить пользователя в sudoers в дистрибутивах Debian.
Команда sudo позволяет авторизованным пользователям выполнять команды от имени другого пользователя, который по умолчанию является пользователем root.
Есть два способа добавить пользователя в sudoers: вы можете добавить этого пользователя в группу sudo или вы можете добавить этого пользователя в файл sudoers, расположенный по адресу и т. Д.
Вот подробности двух методов.
I — Добавление существующего пользователя в группу sudo
В качестве предварительных условий убедитесь, что команда sudo доступна по умолчанию. Если это не так, вы можете установить его, запустив (с учетной записью с правами администратора)
$ apt-get обновить
$ apt-get install sudo
Первый способ — добавить пользователя в группу sudo.
Для этого воспользуемся командой «usermod» с большой буквы G (для групп)
$ sudo usermod -a -G пользователь sudo
Вы также можете использовать команду gpasswd для выдачи прав sudo.
$ sudo gpasswd -a bob sudo
Добавление пользователя в группу sudo
Убедитесь, что пользователь принадлежит к группе sudo с помощью команды groups.
$ su - пользователь
(пароль для пользователя)
$ группы
пользователь sudo
Теперь вы можете выполнить sudo-запрос в Debian 10.
В зависимости от конфигурации, выбранной вами в процессе установки Debian 10, вы можете иметь или не иметь доступ к учетной записи root. Если вы выбрали пароль для своей учетной записи root, вы сможете подключиться к ней.В противном случае учетная запись администратора по умолчанию — это та, которую вы создали в процессе установки.
II — Добавление существующего пользователя в файл sudoers
Файл sudoers находится по адресу / etc / sudoers .
Этот файл содержит набор правил, которые применяются для определения того, кто имеет права sudo в системе, какие команды они могут выполнять с привилегиями sudo, и должен ли им запрашиваться пароль или нет.
Однако вы никогда не должны изменять файл sudoers с помощью текстового редактора.
Сохранение плохого sudoers может лишить вас возможности когда-либо снова получить права sudo.
Вместо этого вы собираетесь использовать visudo, инструмент, предназначенный для того, чтобы вы не допускали ошибок.
$ Судо Визудо
Это то, что вы должны увидеть.
В конце файла добавьте новую строку для пользователя.
john ALL = (ВСЕ: ВСЕ) ВСЕ
По умолчанию пароль учетной записи будет запрашиваться каждые пять минут для выполнения операций sudo.
Однако, если вы хотите удалить эту проверку пароля, вы можете установить опцию NOPASSWD
.
john ALL = (ВСЕ: ВСЕ) NOPASSWD: ALL
Если вы хотите, чтобы проверка пароля пропускалась на более длительный период времени, вы можете перезаписать параметр timestamp_timeout (в минутах) в вашем файле sudoers.
# / и т.д. / sudoers
#
# Этот файл ДОЛЖЕН быть отредактирован с помощью команды 'visudo' от имени пользователя root.
#
# См. Справочную страницу для получения подробной информации о том, как написать файл sudoers.#
По умолчанию env_reset
По умолчанию mail_badpass
По умолчанию secure_path = / sbin: / bin: / usr / sbin: / usr / bin
По умолчанию timestamp_timeout = 30
III — Добавление группы в файл sudoers
Через visudo вы можете добавить всю группу в sudoers.
Это может быть удобно, например, если у вас есть группа системных администраторов. В этом случае вам просто нужно добавить пользователя в группу системных администраторов, чтобы ему были предоставлены привилегии sudo.
Чтобы добавить группу в файл sudoers, просто добавьте символ процента в начало файла.
% sysadmins ALL = (ВСЕ: ВСЕ) NOPASSWD: ВСЕ
Убедитесь, что ваш пользователь является частью созданной группы с помощью команды groups.
$ su - пользователь
$ группы
пользователь sysadmins
Вы можете проверить свои новые права sudo, изменив пароль, например
$ sudo пароль
IV — Наиболее частые ошибки
- пользователя нет в файле sudoers.Об этом инциденте будет сообщено.
Это стандартное сообщение об ошибке, которое вы получаете, когда пользователь не принадлежит к группе sudo в Debian 10.
При добавлении этого пользователя в файл sudoers в Debian это сообщение об ошибке больше не должно появляться.
Как: настроить sudo в Debian
По-видимому, программа установки Debian не устанавливает и не активирует sudo по умолчанию. Это означает, что команда sudo не найдена, единственный доступный метод повышения привилегий — это стать пользователем root с помощью команды su.Поскольку мне нравится sudo и я использую его ежедневно, я решил установить и настроить его на виртуальной машине Debian.
Установить пакет sudo в Debian
Это самый первый шаг, который вам нужно сделать: использовать apt для установки sudo. Конечно, вам нужно стать пользователем root, прежде чем вы это сделаете (поэтому вы должны знать пароль пользователя root для установки Debian ):
[адрес электронной почты защищен]: ~ $ su -
Пароль:
[электронная почта защищена]: ~ # apt install sudo
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие НОВЫЕ пакеты:
судо
0 обновлено, 1 установлено заново, 0 удалено и 0 не обновлено.Необходимо получить 0 B / 1,245 kB архивов.
После этой операции будет использовано 3 886 КБ дополнительного дискового пространства.
Выбор ранее невыбранного пакета sudo.
(Чтение базы данных… В настоящее время установлено 174742 файлов и каталогов.)
Подготовка к распаковке… / sudo_1.8.27-1_amd64.deb…
Распаковка sudo (1.8.27-1)…
Настройка sudo (1.8.27-1)…
Обработка триггеров для man-db (2.8.5-2)…
Обработка триггеров для systemd (241-5)…
[электронная почта защищена]: ~ # sudo
использование: sudo -h | -K | -k | -V
использование: sudo -v [-AknS] [-g группа] [-h хост] [-p приглашение] [-u пользователь]
использование: sudo -l [-AknS] [-g группа] [-h хост] [-p приглашение] [-U пользователь] [-u пользователь] [команда]
использование: sudo [-AbEHknPS] [-r роль] [-t тип] [-C номер] [-g группа] [-h хост] [-p приглашение] [-T тайм-аут] [-u пользователь] [VAR = значение] [-i | -s] []
использование: sudo -e [-AknS] [-r роль] [-t тип] [-C номер] [-g группа] [-h хост] [-p приглашение] [-T тайм-аут] [-u пользователь] файл …
Настроить файл / etc / sudoers
/ etc / sudoers — это основной файл конфигурации для команды sudo.Он содержит список пользователей и групп, которым разрешено становиться root (или становиться другими пользователями, вызывая команду su от имени root).
Вот файл по умолчанию в Debian 10 Buster:
[адрес электронной почты защищен]: ~ # cat / etc / sudoers
#
# Этот файл ДОЛЖЕН быть отредактирован с помощью команды 'visudo' от имени пользователя root.
#
# Пожалуйста, рассмотрите возможность добавления локального контента в /etc/sudoers.d/ вместо
# непосредственно изменяя этот файл.
#
# См. Справочную страницу для получения подробной информации о том, как написать файл sudoers.
#
По умолчанию env_reset
По умолчанию mail_badpass
По умолчанию secure_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin"
# Спецификация псевдонима хоста
# Спецификация псевдонима пользователя
# Спецификация псевдонима команды
# Спецификация привилегий пользователя
root ВСЕ = (ВСЕ: ВСЕ) ВСЕ
# Разрешить членам группы sudo выполнять любую команду
% sudo ALL = (ВСЕ: ВСЕ) ВСЕ
# См. Sudoers (5) для получения дополнительной информации о директивах "#include":
#includedir / etc / sudoers.d
Я выделил 3 наиболее важных элемента этого файла на этой ранней стадии:
root ALL = (ALL: ALL) ALL
Это строка, которая позволяет вам отлаживать команды sudo как пользователь root.
Это означает, что любому пользователю, который принадлежит группе sudo, также будет разрешено использовать команды sudo:
% sudo ALL = (ALL: ALL) ALL
Наконец, эта часть включает дополнительные файлы конфигурации из каталога /etc/sudoers.d:
#includedir / etc / sudoers.d
… это означает, что вам не нужно редактировать файл / etc / sudoers , но вместо этого вы можете создать определенный файл в /etc/sudoers.d и назвать его самоописательно, например:
/etc/sudoers.d/web-server-admins
означает, что этот файл будет содержать имена пользователей и привилегии, требуемые администраторами веб-сервера (обычно такие команды, как остановка / запуск веб-сервера Apache или nginx).
Поскольку это очень базовое руководство, нам совсем не нужно редактировать файл — просто нужно добавить нашего пользователя (у меня серый, как вы помните) в группу sudo и проверить.
Добавить пользователя в группу sudo
Шаг 1. Прежде чем приступить к работе с
, убедитесь, что sudo недоступен.
Это необходимо запускать от имени обычного пользователя, а не от имени пользователя root:
[адрес электронной почты защищен]: ~ $ sudo -i
[sudo] пароль для серых:
серого нет в файле sudoers. Об этом инциденте будет сообщено.
[email protected]: ~ $
Давайте проверим мои группы, чтобы убедиться, что среди них нет sudo:
[адрес электронной почты защищен]: ~ $ id greys
uid = 1000 (серые) gid = 1000 (серые) группы = 1000 (серые), 24 (cdrom), 25 (гибкий диск), 29 (аудио), 30 (падение), 44 (видео), 46 (plugdev), 108 (netdev), 112 (bluetooth), 116 (сканер)
Шаг 2: добавьте пользователя в группу sudo
Отлично, теперь пора добавить серых пользователей в группу sudo (мы должны снова стать root, чтобы запустить команду usermod)
[адрес электронной почты защищен]: ~ # usermod -a -G sudo greys
[электронная почта защищена]: ~ # серого идентификатора
uid = 1000 (серые) gid = 1000 (серые) группы = 1000 (серые), 24 (cdrom), 25 (гибкий диск), 27 (sudo), 29 (аудио), 30 (падение), 44 (видео), 46 (plugdev), 108 (netdev), 112 (bluetooth), 116 (сканер)
Как видите, я теперь член группы sudo!
Шаг 3: Выйдите из системы и войдите снова, чтобы членство в группе было распознано
Теперь вам нужно отключиться от сеанса сервера или рабочего стола и снова войти в систему, чтобы член вашей группы был распознан.После повторного подключения проверьте свои группы с помощью команды id и попробуйте снова sudo:
[адрес электронной почты защищен]: ~ $ id
uid = 1000 (серые) gid = 1000 (серые) группы = 1000 (серые), 24 (cdrom), 25 (гибкий диск), 27 (sudo), 29 (аудио), 30 (падение), 44 (видео), 46 (plugdev), 108 (netdev), 112 (bluetooth), 116 (сканер)
так что да, мы теперь члены группы sudo… Это момент истины! Попробуем стать root:
[адрес электронной почты защищен]: ~ $ sudo -i
[электронная почта защищена]: ~ # id
uid = 0 (root) gid = 0 (root) groups = 0 (root)
На сегодня все!
См. Также
Как добавить пользователя в Sudoers в Debian
При установке новой системы Debian создается учетная запись root по умолчанию.Пользователь root имеет полный доступ к системе и привилегии и может делать в системе практически все, что не может обычный пользователь. Некоторые из задач, выполняемых только пользователем root, включают установку, обновление, обновление и удаление пакетов программного обеспечения, изменение файлов конфигурации, запуск и остановку системных служб, а также завершение работы и перезагрузку сервера. Пользователь root обладает широкими полномочиями, но чрезвычайно опасен, поскольку выполненные действия невозможно отменить. Некоторые команды, если они введены, могут сделать систему непригодной для использования.
Чтобы снизить этот риск, необходимо добавить нового обычного пользователя, а затем назначить пользователю привилегии root для выполнения повседневных административных привилегий, когда это необходимо. Это возможно, введя sudo перед командой, которая временно повысит права пользователя.
В этом руководстве мы расскажем, как создать нового пользователя, а затем добавить пользователя в группу sudoers в Debian.
Шаг 1: Войдите на свой сервер
Для начала войдите на свой сервер Debian как пользователь root через SSH
# ssh root @ IP-адрес сервера
Шаг 2. Создайте новую учетную запись пользователя
Чтобы создать нового пользователя в системе Linux, мы собираемся использовать команду adduser
, за которой следует имя пользователя
Синтаксис показан ниже:
# имя пользователя adduser
В нашем случае мы добавим нового пользователя с именем jack.
# приводной разъем
Эта команда запросит у вас пароль нового пользователя и позже потребует его подтверждения. Всегда помните о необходимости установить надежный пароль (с комбинацией прописных, строчных, цифровых и специальных символов).
Пример вывода
После успешной установки пароля команда запросит у вас дополнительную информацию о пользователе, как показано ниже. Заполните необходимые данные и, наконец, нажмите кнопку «Y» на клавиатуре в конце приглашения, чтобы сохранить изменения.
Если вы хотите опустить всю эту информацию, просто нажмите ENTER
, чтобы принять значения по умолчанию.
Информация о новом пользователе хранится в файле / etc / password
. Поэтому для просмотра информации о пользователе запустите
# кот / etc / passwd
Шаг 3. Добавьте нового пользователя в группу sudoers
Чтобы добавить вновь созданного пользователя в группу sudoers, используйте команду usermod, как показано в синтаксисе ниже:
# usermod -aG имя пользователя sudo
В нашем случае, чтобы добавить пользователя Джека в группу sudoers, мы запустим
# usermod -aG Судо Джек
Вы можете проверить, добавлен ли пользователь в группу sudo, выполнив команду id.
Следующий вывод показывает, что пользователь jack добавлен в группу sudo:
# id jack uid = 1000 (jack) gid = 1000 (jack) группы = 1000 (jack), 27 (sudo)
Вы также можете использовать команду gpasswd для добавления пользователя в группу sudo.
В следующем примере я добавил пользователя johnny в группу sudo с помощью gpasswd:
# gpasswd -a Джонни Судо Добавление пользователя johnny в группу sudo
Примечание. Если вы получаете сообщение «sudo: command not found», установите пакет sudo с помощью apt-get:
$ apt-get install sudo
Шаг 4: Тестирование пользователя с помощью sudo
Последний шаг — подтверждение, есть ли у нового пользователя привилегии sudo.
Переключитесь на нового пользователя, как показано
# su - домкрат
Теперь вызовите команду sudo, за которой следует любая команда. в этом случае мы запустим команду whoami.
$ судо whoami
Далее следует список из нескольких моментов, о которых следует помнить, работая как пользователь root.