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

Разграничение прав пользователей в Ubuntu

Альберт Гильмутдинов
Альберт Гильмутдинов
Технический писатель
22 ноября 2023 г.
851
11 минут чтения
Средний рейтинг статьи: 5

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

Мы расскажем, как защитить свой сервер с помощью простых и эффективных методов управления учетными записями. Инструкция будет полезна начинающим системным администраторам и другим IT-специалистам. 

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

Основные пользовательские настройки

С помощью команд можно управлять доступом к системе. Они предназначены для создания круга лиц, которые будут читать, редактировать или исполнять записанные на сервер данные. Существуют две пользовательские единицы в 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. 

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону