Управление пользователями нужно для обеспечения безопасности системы. Неэффективная настройка доступа часто приводит к тому, что система оказывается под угрозой.
Мы расскажем, как защитить свой сервер с помощью простых и эффективных методов управления учетными записями. Инструкция будет полезна начинающим системным администраторам и другим IT-специалистам.
В Ubuntu права пользователя влияют на безопасность системы в целом. Если вы настроите их правильно — злоумышленникам будет сложнее получить доступ к ресурсам.
twc
Основные пользовательские настройки
С помощью команд можно управлять доступом к системе. Они предназначены для создания круга лиц, которые будут читать, редактировать или исполнять записанные на сервер данные. Существуют две пользовательские единицы в Ubuntu — пользователь и группа. Попробуем создать их, а затем удалить.
Создать юзера
Пользователь — это отдельный аккаунт, который может выполнять команды, иметь доступ к данным системы.
Есть несколько способов создания юзера. Самый простой:
sudo adduser имя_пользователя
Система попросит создать пароль.
Как заблокировать и удалить юзера
Заблокировать юзера можно этой командой в консоли:
sudo usermod -L имя_пользователя
Если в дальнейшем вам нужно будет его разблокировать, то вместо флага -L напишите -U.
Для удаления нужен другой синтаксис:
sudo userdel -r имя_пользователя
Флаг -r удаляет также домашний каталог юзера и все принадлежащие ему данные. Этот шаг необратим. Функция аналогична форматированию пользовательских папок. Если хотите сохранить всю информацию, которая принадлежала пользователю, то уберите флаг -r.
Создать группу
Группа — набор из одного или нескольких аккаунтов, объединенных для совместного доступа к данным системы.
Для создания новой группы введите в консоли команду ниже, заменив имя_группы на нужное вам имя:
sudo addgroup имя_группы
Также вы можете проверить принадлежность юзера к группам, используя:
groups имя_пользователя
Чтобы добавить аккаунт в группу, используйте:
sudo usermod -aG имя_группы имя_пользователя
Здесь -a означает «добавить», -G указывает на группу.
Как удалить группу
Чтобы удалить группу в Ubuntu, нужно ввести в консоль:
sudo delgroup имя_группы
Список всех юзеров и групп
Таблицу с учетными записями системы можно получить, введя в консоль:
cat /etc/passwd
Команда cat используется для отображения аккаунтов, содержащихся в файле passwd, он находится в системной папке /etc.
Аналогично, ту же команду можно применить и для групп. Чтобы ее исполнить, введите в консоль:
cat /etc/group
Эта команда возвращает на экран все записи, которые содержатся в group. По умолчанию, там расположены все группы.
Просмотр всех групп пользователя и его прав
В файле /etc/group есть информация обо всех группах в системе. Также здесь содержится список юзеров с принадлежностью к каждой группе.
Для просмотра всех групп, в которых состоит юзер, используйте синтаксис:
groups имя_пользователя
При выполнении только команды groups отображаются те группы, в которых состоит текущий юзер. Она не показывает все группы, существующие в системе.
Чтобы в Ubuntu посмотреть права пользователя на использование команд sudo, достаточно посмотреть его принадлежность к sudo, о котором мы напишем ниже.
Поменять пароль юзеру
Чтобы изменить пароль юзеру, нужно ввести:
sudo passwd имя_пользователя
После запуска passwd вам нужно будет придумать и ввести новый пароль для указанного аккаунта. Введите новый пароль и нажмите Enter.
Usermod и ID
Каждый процесс (запущенная программа) в системе ассоциируется с идентификатором аккаунта, который указывает на юзера, инициировавшего процесс.
Это позволяет отслеживать и управлять процессами, применять политики безопасности на уровне процессов и определять происхождение различных действий в системе.
По умолчанию список User ID (UID) от 0 до 999 зарезервирован для системных целей, а когда мы создаем учетную запись, она получает идентификатор от 1000.
Для проверки свойств учетной записи нужно ввести:
grep имя_пользователя /etc/passwd
grep ищет строку с именем в файле passwd, где хранятся записи о пользователях, и выводит всю строку, в которой встречается строка. Всего доступно семь полей, которые разделены знаком двоеточия.
имя_пользователя:x:1001:1001: :/home/имя_пользователя:/bin/bash
Чтобы сменить идентификатор, нужно ввести:
usermod -u 2025 имя_пользователя
В таком случае UID сменится на 2025.
Для установки комментария к учетной записи можно ввести:
usermod -c "Ненадежный работник" имя_пользователя
Также можно создать и изменить домашний каталог с помощью:
Mkdir -p /catalog1/catalog
usermod -d /catalog1/catalog имя_пользователя
Для изменения оболочки входа в систему:
usermod -s /sbin/nologin имя_пользователя
Если установить оболочку
/sbin/nologinдля учетной записи пользователя, то он не сможет войти в оболочкуbash. В таком случае он не сможет открыть терминал.
Для установки срока действия пароля:
usermod -e "2023-12-30" имя_пользователя
По истечении срока юзер не сможет войти в аккаунт.
Файл sudoers и права root
В Ubuntu root-права пользователю по умолчанию выдаются только на 15 минут. Это продумано для того, чтобы юзер не представлял потенциальной опасности для системы.
Sudo — это команда, позволяющая юзеру использовать привилегии root.
Основная идея заключается в том, чтобы предоставить юзеру как можно меньше привилегий и при этом позволить ему выполнить поставленную задачу. Здесь su означает «заменять», а do — «выполнить».
Утилита предназначена для управления правами учетных записей на основе файла конфигурации системы. Команда позволяет юзерам запускать программы с привилегиями суперпользователя.
В этом разделе мы рассмотрим, как правильно и безопасно разделять привилегии root, уделив особое внимание редактированию файла /etc/sudoers.
Способы дать root-права
Существует два основных способа, чтобы в Ubuntu дать права пользователю:
- Добавить его в группу sudo. Таким образом он сможет исполнять команды с повышенными привилегиями.
- Редактировать файл sudoers. Нужно внести изменения в системный файл и прописать привилегии вручную.
Эти способы дают постоянные права root. Таким образом, помимо администратора исполнять функции суперпользователя смогут и другие.
Редактирование файла sudoers и его значение
Sudoers — это файл, который определяет, кто имеет право доступа к sudo. Через него можно предоставить пользователю права суперпользователя в Ubuntu. Юзер с sudo имеет административные привилегии, то есть возможность редактировать файлы, которые не могут быть отредактированы через обычный аккаунт.
Суперпользователь может:
- Изменять системные файлы.
- Редактировать системные настройки.
- Устанавливать и удалять программы.
Предполагается, что вы используете nano в качестве текстового редактора по умолчанию. Это важно для данной статьи, в противном случае вам придется изменить подход в соответствии с выбранным вами текстовым редактором.
Неправильный синтаксис /etc/sudoers может привести к тому, что система сломается и получить повышенные привилегии будет невозможно. Важно использовать команду visudo для редактирования. Утилита проверяет правильность синтаксиса кода при исполнении.
Чтобы отредактировать файл sudoers, достаточно выполнить:
sudo visudo
После исполнения вы увидите это:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
#includedir /etc/sudoers.d
Чтобы в Ubuntu создать пользователя с правами root, достаточно добавить существующего пользователя его в sudoers:
имя_пользователя ALL=(ALL) NOPASSWD:ALL
Поместите сюда желаемого юзера. Будьте внимательны, нужно избежать опечаток. Затем сохраните файл. Так как мы используем nano, то для сохранения файла нужно нажать CTRL + X, затем Y, а затем ENTER — и файл будет сохранен.
Заменить юзера на суперпользователя
Также есть одна интересная команда:
sudo su
Она представляет собой комбинацию sudo и su, где su — означает «заменить юзера».
Используя sudo su, вы можете переключиться на пользователя root. Следовательно, все действия в рамках текущего сеанса будут выполняться с правами root.
Тогда вам не нужно будет перед каждой новой командой писать sudo. Перед использованием в Ubuntu нужно создать пользователя с правами sudo.
Alias
Следующим способом можно создать группу юзеров, к которой позже мы сможем обращаться:
User_Alias (название) = [имя_пользователя_1, имя_пользователя_2…]
В файле sudoers вы можете использовать директиву Alias для создания псевдонимов для групп хостов, пользователей, команд и других параметров. Алиасы позволяют сократить и упростить правила доступа.
Пример использования директивы Alias в файле sudoers:
User_Alias ADMINS = user12, user13
User_Alias WEBADMINS = www-data
ADMINS ALL=(ALL:ALL) ALL
WEBADMINS ALL=(www-data) /usr/sbin/apachectl
В этом примере:
- Сначала определили два алиаса:
ADMINSиWEBADMINS.ADMINSсодержит двух пользователей, аWEBADMINSсодержит группу пользователейwww-data. - Затем устанавливаются правила доступа.
ADMINSозначает, что все пользователи, входящие в группуADMINS, имеют разрешение выполнять любые команды на всех хостах.WEBADMINSпозволяет пользователям из группыWEBADMINSвыполнять только команду/usr/sbin/apachectlот имени пользователяwww-data.
Интерактивный и неинтерактивный sudo
Перед использованием sudo -i система может запросить ваш пароль, чтобы подтвердить вашу личность и убедиться, что у вас есть права sudo, которые обычно предоставляются администраторам или юзерам.
sudo -s запускает оболочку с правами суперпользователя, sudo -i также получает среду пользователя root. Это удобно, если вам нужно запускать последовательные команды с привилегиями суперпользователя в текущей оболочке.
Управление доступом к файлам
Также можно в Ubuntu дать права пользователю на работу с папками. Существует три варианта групп разрешений. К ним относятся:
- Владельцы. эти разрешения будут применяться только к владельцам и не будут влиять на другие группы.
- Группы. Вы можете назначить определенные разрешения, которые будут действовать только для нее.
- Остальные пользователи (не владельцы и не участники группы). Эти разрешения будут применяться ко всем учетным записям, поэтому они представляют наибольший риск для безопасности и должны назначаться с осторожностью.
Теперь рассмотрим шаблоны команд для выдачи прав доступа к файлам и выполним типовые задачи, которые пригодятся в системном администрировании.
Чтобы добавить разрешение, введите:
chmod +rwx имя_файла
Чтобы убрать:
chmod -rwx имя_файла
Разрешить исполнение:
chmod +x имя_файла
Удалить права на запись:
chmod -wx
По приведенным примерам видно, что r означает чтение, w — запись, а x — выполнение.
Разберем каждый тип по-отдельности:
- Чтение (r). Позволяет учетной записи или группе просматривать файл.
- Запись (w). Разрешает аккаунту записывать или изменять файл или каталог.
- Исполнение (x). Аккаунт или группа с правами
executeможет выполнять файл или просматривать каталог.
Команда для изменения прав доступа к каталогам для владельцев групп аналогична, но добавьте g для группы или o для аккаунтов.
Посмотрим на примерах. Разрешим запись для групп:
chmod g+w имя_файла
Отнимем у групп возможность записывать и исполнять каталог:
chmod g-wx имя_каталога
Дадим аккаунтам возможность записи каталога:
chmod o+w имя_каталога
Удалим права на чтение, запись и выполнение для пользователей, которые не являются владельцами каталога или не принадлежат к группе, имеющей права доступа к этому файлу:
chmod o-rwx имя_каталога
Чтобы изменить права доступа к каталогу для всех, используйте u для пользователей, g для группы, o для остальных, а также ug — если меняем права пользователя и группы или a (для всех).
Здесь разрешаем чтение, запись и выполнение для всех:
chmod ugo+rwx
Даем право только на чтение для всех:
chmod a=r имя_каталога
Выполнив эти команды, можно изменить принадлежность каталогов:
chgrp имя_группы имя_каталога
Обратите внимание, что перед назначением групп файлам и каталогам необходимо выйти из группы.
Еще одна полезная команда — изменение владельца файлов и каталогов:
chown имя_пользователя имя_файла
Эти команды меняют владельца, но все файлы и подкаталоги по-прежнему принадлежат первоначальному владельцу.
Изменить владельца и группу рекурсивно для всех файлов и подкаталогов, находящихся в указанном каталоге, можно командой:
chown -R имя_пользователя:имя_группы /путь/к/каталогу
R указывает на рекурсивное изменение владельца и группы для всех файлов и подкаталогов внутри указанного каталога.
Изменить разрешения можно в числовом коде, для этого вместо r, w или x используются цифры:
- 0 = Нет разрешения.
- 1 = Исполнение.
- 2 = Запись.
- 4 = Чтение.
По сути, вы складываете числа в зависимости от того, какой уровень прав вы хотите предоставить.
Номера разрешений следующие:
- 0 = нет
- 1 = --x
- 2 = -w-
- 3 = -wx
- 4 = r-
- 5 = r-x
- 6 = rw-
- 7 = rwx
Например:
chmod 777 имя_директории
— предоставляет права на чтение, запись и выполнение для всех.
chmod 700 имя_файла
— даст права на чтение, запись и выполнение только для владельца.
chmod 327 foldername
— даст права на запись и выполнение (3) для пользователя, w (2) для группы, и чтение, запись и выполнение для прочих пользователей.
Подготовили для вас выгодные тарифы на облачные серверы
Итог
В этой инструкции мы рассмотрели принципы регулирования прав доступа в Ubuntu. Также эти правила работают в других популярных Linux-системах. С помощью этой статьи вы научитесь создавать юзеров, группы и контролировать их доступ к файлам и привилегиям root, а также проверять права пользователя в Ubuntu.
