Установка

Debian 9 установка sudo: Настройка sudo в Linux | Losst

Содержание

Настройка sudo в Linux | Losst

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

Казалось бы, такая небольшая команда, с минимумом возможностей и максимально простым использованием, но на самом деле она может намного больше. В этой статье мы рассмотрим как выполняется настройка sudo в linux для контроля доступа к функциям системы и возможностей пользователя.

Содержание статьи:

Как работает sudo?

Перед тем, как переходить к настройке доступа к утилите sudo давайте рассмотрим как она работает. В Linux есть два способа получить права администратора. Вы можете переключиться на пользователя root с помощью команды su или можете передать в параметре нужную команду утилите sudo, которая выполнит ее с правами администратора. Причем второй способ предпочтительнее, потому что вы не забудете что используете права root и не наделаете ничего лишнего.

Имя команды означает substitute user do или super user do. Утилита позволяет запускать программы от имени другого пользователя, но чаще всего от имени корневого. Утилита была разработана еще в 1980 году Бобом Когшелом и Клиффом Спенсером. За это время сменилось много разработчиков и было добавлено много функций.

Работает sudo благодаря флагу доступа SUID. Если этот флаг установлен для программы, то она выполняется не от имени того пользователя который ее запустил, а от имени владельца, учитывая что файл sudo принадлежит, то утилита выполняется от имени root. Затем она читает свои настройки, запрашивает пароль пользователя и решает можно ли ему разрешать выполнение команд от имени администратора. Если да, то выполняется переданная в параметре команда.

Теперь, когда вы знаете теорию, давайте рассмотрим как настроить sudo в Linux.

Настройка sudo в Linux

Все настройки sudo находятся в файле /etc/sudores. Здесь можно настроить очень много параметров, начиная от кому будет позволено выполнять команды от имени суперпользователя и заканчивая ограничением набора доступных команд.

Чтобы открыть файл для редактирования наберите такую команду от имени суперпользователя:

visudo

Вы также можете указать текстовый редактор, в котором вы хотите редактировать файл настройки:

EDITOR=nano visudo

Дальше мы рассмотрим самые интересные настройки, которые вы можете задать в этом файле. Но сначала давайте рассмотрим основной синтаксис файла. Он состоит из двух типов строк, это псевдонимы, которые позволяют создавать списки пользователей и флагов, а также сами правила, которые задают как будет вести себя команда sudo. Синтаксис алиасов выглядит вот так:

тип имя_алиаса = элемент1, элемент2, элемент3

Тип указывает какого типа нужно создать алис, имя — имя, которое будет использовано, а список элементов — те элементы, которые будут подразумеваться при обращении к этому имени.

Описание разрешений для пользователей имеет немного другой синтаксис:

пользователь хост  = (другой_пользователь:группа) команды

Пользователь указывает пользователя или группу, для которых мы создаем правило, хост — компьютер, для которого будет действовать это правило. Другой пользователь — под видом какого пользователя первый может выполнять команды, и последнее — разрешенные команды. Вместо любого из параметров может использоваться алиас. А теперь настройка sudo в Debian и других дистрибутивах.

Основные параметры

Алиас Defaults позволяет задать стандартные параметры для работы утилиты, их мы и рассмотрим в этом разделе. Начинается такой алиас со слова Defaults, дальше идет имя флага. Если перед именем есть символ !, это значит, что флаг нужно включить, в обратном случае выключить:

Отключаем введение при первом использовании:

Defaults !lecture

Суперпользователь не может выполнять sudo:

Defaults !root_sudo

Теперь если вы попытаетесь выполнить sudo sudo ничего не сработает:

Изменять домашнюю директорию для целевого пользователя, по умолчанию остается папка текущего пользователя в качестве домашней директории:

Defaults set_home

Сохранять список групп текущего пользователя:

Defaults !preserve_groups

Запрашивать пароль суперпользователя вместо пароля пользователя:

Defaults rootpw

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

Задать количество попыток ввода пароля перед тем, как sudo прекратит работу, по умолчанию — 3:

Defaults passwd_tries=5

Количество минут, которое пройдет перед тем, как sudo будет спрашивать пароль снова, по умолчанию 5. Если установить значение в 0, то пароль будет спрашиваться всегда, независимо от того как давно вы использовали утилиту:

Defaults timestamp_timeout=10

Следующий параметр задает количество минут, пока sudo будет ожидать повторного ввода пароля при неправильном вводе:

Defaults passwd_timeout=10

Вы можете изменить сообщение, которое будет выводится при запросе пароля:

Defaults passprompt="Ваш пароль:"

 

Можно указать другого пользователя, не root, от которого будут выполняться все команды, для этого используйте:

Defaults runas_default="пользователь"

Вы можете записывать в лог все попытки подключения к sudo:

Defaults logfile=/var/log/sudo

Затем пробуем проверить работу лога:

sudo cat /var/log/sudo

Это были все самые интересные параметры настройки работы sudo, которые могут вам понадобиться, дальше мы рассмотрим как задать права доступа sudo для пользователей.

Настройка пользователей sudo

Мы уже рассматривали выше синтаксис настройки действий для пользователей, здесь все сложнее чем с псевдонимами, но разобраться можно. Например, разрешим любому пользователю использовать sudo, от любого хоста и выполнять любые команды:

ALL ALL = (ALL) ALL

Такая команда очень небезопасна, она разрешает всем и все. Первое ALL — разрешить всем пользователям, второе ALL — для всех хостов, третье ALL — разрешить вход под любым пользователем и четвертое — разрешить выполнять любою команду. Но куда более часто используется другая конструкция:

%wheel ALL = (ALL) ALL

 

Означает то же самое, что и предыдущее, только здесь мы разрешаем использовать sudo не всем пользователям, а только тем, которые состоят в группе wheel.

%wheel ALL = (root) ALL

Тут мы уже ограничили возможный выбор пользователей только пользователем root. Также можно указать группу пользователя, от имени которого он может выполнять команды:

%wheel ALL = (root:admins) ALL

Это значит что можно выполнить команду от имени root или другого пользователя из группы admins.  Еще мы можем указать команды, которые может выполнять пользователь. Например:

%wheel ALL = (root) /bin/mount, /bin/umount

Пользователь может выполнять только команды mount и umount от имени суперпользователя. Теперь сделаем еще интереснее, пользователь может выполнять mount и umount без пароля, а все остальные команды с паролем:

%wheel ALL = (root) ALL
%wheel ALL = (root) NOPASSWD: /bin/mount, /bin/umount

Также можно ограничивать пользователям по хостах, например, разрешаем использование sudo только из host1:

%wheel host1 = (root) ALL

Осталось еще рассмотреть как применять псевдонимы. Псевдонимы могут быть таких типов:

  • User_Alias — псевдоним пользователей, которые будут использовать sudo;
  • Runas_Alias — псевдоним пользователей, от имени которых будут выполняться команды;
  • Host_Alias — псевдоним хоста;
  • Cmnd_Alias — псевдоним команд;

Например, создадим четыре псевдонима и применим их в нашем правиле:

User_Alias Users = user1,user2,user3
Runas_Alias Admins = root,admin
Host_Alias Hosts = host1,host2
Cmd_Alias Cmds = /bin/mount,/bin/umount

Далее применяем все это в правиле:

Users Hosts = (Admins) Cmds

Это значит, что пользователи из списка Users смогут выполнять команды Cmds от имени пользователей Amdins на хостах Hosts.

Еще осталось сказать несколько слов о флагах. Флаг NOPASSWD говорит, что не нужно запрашивать пароль при выполнении этого правила. Например, разрешить всем пользователям выполнять команду mount с sudo без пароля:

ALL ALL = (root) NOPASSWD: /bin/mount

Также можно запретить выполнять именно эту команду вообще с помощью флага NOEXEC:

ALL ALL = (root) NOEXEC /bin/mount

Вы можете проверить правильно ли была проведена настройка файла /etc/sudores и посмотреть все созданные правила с помощью команды:

sudo -l

Здесь отображены все установленные флаги и настройки, а также полномочия данного пользователя.

Выводы

В этой статье мы рассмотрели как выполняется настройка sudo в linux. Как видите, несмотря на то, что это очень простая утилита, она скрывает очень много полезных настроек, которые можно использовать в своей системе. Если у вас остались вопросы, спрашивайте в комментариях!

Права суперпользователя Debian (sudo, visudo)

В операционных системах семейства Linux реализован принцип разграничения пользовательских привилегий, то есть у разных учетных записей разный объем прав доступа к каталогам, файлам и программам. Максимальными правами наделена встроенная учетная запись root. Вновь создаваемые пользовательские аккаунты обычно существенно ограничены в доступе к системным конфигурационным файлам, управлении сервисами, установке и удалении программных пакетов. При этом работа в операционной системе под учетной записью root настоятельно не рекомендуется, прежде всего в целях безопасности. В этом случае на помощь приходит утилита командной строки sudo.

Команда sudo позволяет запускать отдельные команды с повышением привилегий (по умолчанию с правами root) пользуясь непривилегированной учетной записью. Давайте разберемся, что же требуется для работы этой утилиты.

Установка и настройка

В ОС Ubuntu sudo включена по умолчанию, а в Debian, если в процессе установки не был выбран соответствующий пакет, скорее всего будет следующая картина:

[email protected]:~# sudo
-bash: sudo: command not found

Значит, требуется установить недостающий пакет. Обновляем информацию о репозиториях и устанавливаем sudo:

apt-get update
apt-get install sudo

Дожидаемся окончания процесса:

Скриншот №1. Процесс установки sudo

После успешной установки потребуется сконфигурировать sudo, определив, какие пользователи или группы смогут использовать повышение привилегий и в каком объеме. Все эти настройки хранятся в конфигурационном файле /etc/sudoers, однако вносить в него изменения напрямую настоятельно не рекомендуется. Для этих целей используется специальная команда:

visudo

которая запускает текстовый редактор с конфигурационным файлом:

Скриншот №2. Текстовый редактор

За предоставление прав здесь отвечают две строки:

root    ALL=(ALL:ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

Первая строка назначает права для учетной записи root, вторая устанавливает права для членов группы sudo, которая была создана при установке пакета (знак % перед названием означает, что имя относится к группе пользователей). Соответственно, у нас есть два основных способа предоставить пользовательской учетной записи право использовать sudo:

Добавить учетную запись пользователя (например, user) в группу sudo на сервере:

usermod –a –G sudo user

После изменения членства в группе, потребуется заново авторизоваться в этой учетной записи для применения новой конфигурации. Данный метод рекомендуется в тех случаях, когда пользователю необходимо предоставить полные права.

Создать в файле новую запись, например, для учетной записи user. Мы добавляем строку по аналогии с root:

user ALL=(ALL:ALL) ALL

Добавлять новую запись рекомендуется в тех случаях, когда список привилегий будет корректироваться (об этом чуть позднее). Если мы внесли изменения в файл, нужно их сохранить нажатием сочетания клавиш Ctrl-O и выйти из редактора — Ctrl-X.

Теперь можно проверить корректность работы:

[email protected]:~$ sudo cat /etc/sudoers
[sudo] password for user:

Команда sudo запрашивает пароль текущего пользователя (в данном случае это user) — вводим его, и, если все сделано правильно, мы увидим содержание системного конфигурационного файла.

Тонкая настройка

Таким образом, обычный пользователь может запускать команды с правами учетной записи root не зная ее пароль. Это очень удобно, но может быть небезопасно — есть ли возможность ограничить круг команд, которые можно исполнять посредством sudo? Да, и поможет нам в этом тот же самый конфигурационный файл. Снова запускаем visudo и разбираемся дальше. Нас интересуют параметры, указанные после имени пользователя:

Скриншот №3. Настройки ограничения команд

Разберем их подробнее:

  • ALL=(ALL:ALL) ALL — первый параметр определяет к какому хосту применяется конфигурация. При использовании выделенного сервера параметр можно оставить без изменений;
  • ALL=(ALL:ALL) ALL — параметры в скобках определяют с полномочиями какого пользователя (первый параметр) и/или группы (второй параметр) будет выполняться команда. По умолчанию sudo выполняет команду от имени root, однако при запуске с ключом –u можно указать другую учетную запись, а с ключом –g другую группу, чьи полномочия будут использованы при запуске;
  • ALL=(ALL:ALL) ALL — третий параметр определяет к каким файлам и командам относятся данные настройки.

Исходя из вышесказанного, при необходимости определить перечень разрешенных команд заменяем последний параметр ALL тем, что нам требуется, перечисляя команды через запятую. Например, строка:

user    ALL=(ALL:ALL) /sbin/shutdown –r, /bin/cat

дает право пользователю user с помощью sudo осуществлять перезагрузку сервера командой sudo /sbin/shutdown –r и просматривать файлы с помощью sudo /bin/cat. Другие команды через sudo выполняться не будут. Например, при попытке выключить сервер командой sudo /sbin/shutdown –h, получим ответ:

Sorry, user user is not allowed to execute '/sbin/shutdown -h' as root on debian10.

Полезное

Увидеть список привилегий можно, запустив sudo –l (будет отображен список для текущего пользователя), либо sudo –l –U user (будет отображен список привилегий пользователя user):

Скриншот №4. Список привилегий пользователя

В состав sudo входит команда sudoedit, которая запускает текстовый редактор с указанным файлом сразу с повышенными привилегиями, то есть вместо команды:

sudo nano /etc/network/interfaces

можно запустить:

sudoedit /etc/network/interfaces

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

sudo bash

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

Средняя оценка: 5.0
Оценили: 1

220140
Минск
ул. Домбровская, д. 9

+375 (173) 88-72-49

700
300

ООО «ИТГЛОБАЛКОМ БЕЛ»

220140
Минск
ул. Домбровская, д. 9

+375 (173) 88-72-49

700
300

ООО «ИТГЛОБАЛКОМ БЕЛ»

700
300

10 операций которые следует выполнить сразу же после установки дистрибутива Debian

Поздравляем, вы только что установили новую версию дистрибутива Debian 10 «Buster» с окружением рабочего стола GNOME! Но какие операции следует выполнить в сразу же после установки для оптимальной настройки дистрибутива?

Я разделил список всех этих операций на три категории:

  1. Десять необходимых операций (часть 1);
  2. Рекомендованные операции (не являются необходимыми, часть 2);
  3. Полезные в некоторых случаях операции (часть 3).

Это всего лишь список операций, благодаря выполнению которых, можно получить практически не требующую обслуживания операционную систему, беспроблемно работающую в течение как минимум года! К тому же, это крэш-курс по работе с дистрибутивом Debian.

Примечание: на данной странице вы найдете лишь описания относительно безопасных операций, так как, по моему мнению, стабильность и надежность вашей операционной системы не должна снижаться ни при каких обстоятельствах. Данный веб-сайт содержит достаточно полезной информации о дистрибутиве Debian, поэтому подход к его настройке будет скорее консервативным.

В тех случаях, когда операции будут связаны с каким-либо риском, их описания будут сопровождаться предупреждениями, позволяющими принимать сбалансированные решения.

Примечание: данная страница посвящена настройке исключительно дистрибутива Debian с окружением рабочего стола GNOME.

Совет: вы можете скачать список операций и распечатать его на бумаге. После этого вы сможете вычеркивать выполненные операции.

Не уверены в том, какая версия дистрибутива Debian используется? В этом случае следует нажать на кнопку «Обзор» на верхней панели, ввести запрос «терминал» в поле поиска в верхней части экрана и выбрать первое предложенное приложение «Терминал». С помощью терминала нужно выполнить следующую команду: (скопируйте и вставьте ее для того, чтобы не ошибиться):

cat /etc/os-release | grep PRETTY_NAME

После окончания ввода команды нажмите клавишу Enter для ее исполнения. В результате с помощью окна терминала будет выведена информация о версии дистрибутива Debian в слкдующем формате:

PRETTY_NAME="Debian GNU/Linux 10 (buster)"

Часть 1. Десять необходимых операций

1.1. Активация утилиты sudo для вашей учетной записи

Утилита sudo активно используется в популярных дистрибутивах для выполнения различных команд с привилегиями суперпользователя (или администратора). Кроме того, она значительно упрощает написание инструкций. Данная утилита не активируется автоматически в процессе установки дистрибутива Debian, поэтому есть смысл активировать ее вручную. Безопасность вашей системы никак не пострадает.

В первую очередь следует уточнить имя вашей учетной записи с помощью следующей команды:

whoami

После окончания ввода команды следует использовать клавишу Enter для ее исполнения.

Теперь нужно получить права суперпользователя. Для этого следует использовать следующую команду:

su -

Для исполнения команды также следует нажать клавишу Enter. Вам будет предложено ввести пароль суперпользователя, указанный в процессе установки дистрибутива. После окончания ввода пароля следует нажать клавишу Enter еще раз. При успешном переходе в режим суперпользователя символ привествия командной оболочки изменится с $ на #.

Для того, чтобы активировать утилиту sudo для вашей учетной записи, следует воспользоваться следующими командами:

apt install sudo
usermod -a -G sudo <имя вашей учетной записи>

Как и раньше, исполнение команд инициируется с помощью клавиши Enter.

Теперь можно использовать утилиту sudo для выполнения всех административных задач. Учетная запись суперпользователя (пользователя с именем root), а также команда su будут также доступны.

Для выхода из режима работы от лица суперпользователя следует использовать следующую команду:

exit

После нажатия на клавишу Enter символ привествия командной оболочки сменится с # на $

1.2. Активация репозиториев дистрибутива с несвободными компонентами

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

Эти репозитории активируются путем редактирования файла конфигурации утилиты apt с помощью текстового редактора. Для его запуска используе

Создание и удаление пользователя, использование sudo Debian