Сначала проверьте пользователя, UID, GID и владельца объекта
Имя пользователя удобно людям, но система сопоставляет его с числовым UID. Группа также имеет числовой GID. Доступ по группе определяется фактическим членством учётной записи в группе и её GID, а не сходством имён пользователя и группы.
idid -u; id -ru; id -g; id -Ggetent passwd trainee; getent group operators; id traineels -ld /srv/training /srv/training/report.txt; stat -c '%U %G %a %n' /srv/training /srv/training/report.txtУчётная запись и процесс — не одно и то же
sudo, обычно действует с effective UID целевого пользователя, часто суперпользователя, хотя интерактивный сеанс был открыт обычной учётной записью.Создать пользователя Linux и отдельную группу
useradd — низкоуровневая системная утилита создания учётной записи. groupadd создаёт группу, passwd задаёт или меняет пароль, usermod изменяет существующую учётную запись, а userdel удаляет её запись. Команда adduser не является единообразной заменой useradd: в Debian и Ubuntu это отдельная интерактивная надстройка, а в RHEL-подобных системах она обычно предоставляется как совместимое имя useradd.
Различия, важные для примеров создания пользователя. Настройки по умолчанию могут быть изменены локальной политикой и файлами конфигурации.
| Система | `useradd` | `adduser` | Как явно создать дом и начальную группу |
|---|---|---|---|
| Debian 13 | Системная утилита; домашний каталог задавайте ключом -m. | Отдельная надстройка пакета adduser; обычно интерактивно создаёт домашний каталог и пользовательскую группу, если это не изменено конфигурацией. | groupadd operators; useradd -m -g operators trainee |
| Ubuntu Server 24.04 LTS | Системная утилита; для переносимого сценария указывайте -m явно. | Отдельная надстройка adduser; её интерактивное поведение и настройки отличаются от useradd. | groupadd operators; useradd -m -g operators trainee |
| RHEL 9 | Системная утилита shadow-utils; -m явно создаёт домашний каталог. | Обычно совместимое имя useradd, а не Debian-подобная интерактивная надстройка. | groupadd operators; useradd -m -g operators trainee |
| Rocky Linux 9 | Поведение следует документации и man-странице shadow-utils данного выпуска; используйте -m явно. | Обычно совместимое имя useradd. | groupadd operators; useradd -m -g operators trainee |
| AlmaLinux 9 | Поведение следует документации и man-странице shadow-utils данного выпуска; используйте -m явно. | Обычно совместимое имя useradd. | groupadd operators; useradd -m -g operators trainee |
Не полагайтесь на неявное создание домашнего каталога или персональной группы: это зависит от параметров useradd, конфигурации дистрибутива и локальной политики. Для целевой системы сверяйте man useradd, man adduser, man groupadd и официальное руководство её выпуска.
Создание учебной группы и пользователя
Пример создаёт группу operators и пользователя trainee с этой группой как основной. Выполняйте команды от имени root либо через уже разрешённый sudo.
- 1Убедитесь, что имена свободныВыполните
getent passwd traineeиgetent group operators. Пустой вывод означает, что соответствующая запись не найдена через текущую конфигурацию NSS. - 2Создайте отдельную группуВыполните
sudo groupadd operators, затемgetent group operators. Группа получит GID, выбранный системой или заданный политикой. - 3Создайте пользователя с домашним каталогомВыполните
sudo useradd -m -g operators trainee. Ключ-mзапрашивает создание домашнего каталога, а-g operatorsназначает основную группу. Не заменяйте эту команду наadduser, не проверив его документацию для своего дистрибутива. - 4Задайте первоначальный парольВыполните
sudo passwd traineeи введите пароль без отображения в терминале. Для смены пароля существующего пользователя применяется та же команда. - 5Проверьте результатВыполните
id trainee,getent passwd traineeиls -ld /home/trainee. Сверьте UID, основную группу, домашний каталог и его владельца.
Добавить пользователя в группу
Дополнительные группы не заменяют основную. Для добавления пользователя в дополнительную группу применяют usermod -aG: -G задаёт список дополнительных групп, а -a добавляет указанные группы к уже существующему списку. Если использовать -G без -a, список дополнительных групп обычно будет заменён указанным — это частая причина потери ранее назначенного членства.
sudo groupadd reviewers && sudo usermod -aG reviewers trainee && id traineeНовое членство не меняет уже работающий сеанс
id trainee показывает запись учётной записи, а id внутри старого сеанса может показывать прежний набор.Настроить sudo Linux: ограниченные и административные права
sudo запускает разрешённые команды от имени целевого пользователя по политике sudoers; чаще всего цель — root. Это не тождественно постоянному входу под root и не делает пользователя безусловным администратором: набор разрешённых команд, целевой пользователь, запрос пароля и другие условия задаются правилами.
Имя административной группы не универсально. В одних системах и политиках используется sudo, в других — wheel; само членство работает только если соответствующее правило есть в sudoers. Для Debian 13 и Ubuntu Server 24.04 LTS, RHEL 9, Rocky Linux 9 и AlmaLinux 9 сверяйте штатные правила, установленный пакет sudo и документацию конкретного выпуска. Не переносите настройку группы между семействами ОС без проверки.
Выдача sudo с минимально необходимыми полномочиями
Правила меняют через visudo: утилита проверяет синтаксис и защищает от одновременного редактирования. Ошибка в sudoers может лишить административного доступа, поэтому держите открытым действующий административный сеанс до проверки нового правила.
- 1Посмотрите действующие разрешенияПод целевой учётной записью выполните
sudo -l. Команда показывает разрешённые и запрещённые правила, если политика позволяет их раскрыть. - 2Создайте отдельный файл правилаОткройте
sudo visudo -f /etc/sudoers.d/trainee-maintenance. Каталог/etc/sudoers.dобычно подключён пакетной конфигурацией sudo в рассматриваемых семействах, но его наличие и директивы@include/@includedirнужно подтвердить в/etc/sudoersиman sudoersцелевой ОС. - 3Разрешите только нужную командуДля учебного примера добавьте
trainee ALL=(root) /usr/bin/systemctl --no-pager status example.service. Параметр--no-pagerисключает запуск пейджера с полномочиями root. Укажите фактический абсолютный путь команды и точное имя разрешённой службы; не заменяйте их масками без понимания последствий. - 4Проверьте синтаксис и доступПосле сохранения
visudoпроверит файл. Дополнительно выполнитеsudo visudo -c, затем войдите какtrainee, проверьтеsudo -lи вызовите точную разрешённую команду:sudo /usr/bin/systemctl --no-pager status example.service. Управление службами рассматривается отдельно в статье systemd и systemctl: управление службами и автозагрузкой Linux.
trainee ALL=(root) /usr/bin/systemctl --no-pager status example.serviceДля полного административного доступа обычно используют уже предусмотренное политикой правило группы либо явное правило пользователя, например trainee ALL=(ALL:ALL) ALL в синтаксисе, поддерживаемом sudo вашей системы. Это широкое разрешение: выдавайте его только когда оно действительно требуется. Правило NOPASSWD не является безопасной настройкой по умолчанию и требует отдельного обоснования.
Как читать права 755 и 644 в Linux
Стандартная модель UNIX разделяет разрешения для владельца файла, группы-владельца и остальных пользователей. Каждая тройка состоит из r — чтение, w — запись и x — выполнение или поиск, но точный смысл зависит от типа объекта.
| Бит | Обычный файл | Каталог |
|---|---|---|
r | Разрешает читать содержимое файла. | Разрешает читать список имён в каталоге. |
w | Разрешает изменять содержимое файла. | Разрешает создавать, удалять или переименовывать записи в каталоге; для конкретных операций обычно также нужен x на каталоге. |
x | Разрешает выполнять файл как программу или сценарий при других выполненных условиях. | Разрешает пройти через каталог и обращаться к объектам по известному имени; этот бит также называют search. |
Число режима состоит из трёх восьмеричных цифр: r=4, w=2, x=1. Поэтому 755 означает rwxr-xr-x: владелец получает 7 (4+2+1), группа и остальные — 5 (4+1). 644 означает rw-r--r--: владелец может читать и изменять файл, остальные — только читать. Это понятные примеры, но не универсальные безопасные значения для любого приложения или данных.
Право на файл не заменяет право на каталог
644, доступ к нему может быть невозможен без x на каждом каталоге в пути. И наоборот, x на каталоге без r обычно позволяет обращаться к объекту по известному имени, но не просматривать список имён. Не пытайтесь исправить отказ в доступе массовым chmod: сначала проверьте весь путь и владельцев.chmod и chown: изменить права, владельца и группу
chmod меняет биты режима, а chown — владельца и, при указании через двоеточие, группу. Символьный синтаксис chmod удобен, когда надо изменить один класс прав, а числовой — когда требуе тся установить точный базовый режим.
chmod u=rw,g=r,o=r report.txtchmod 750 /srv/trainingsudo chown trainee:operators /srv/training/report.txt && ls -l /srv/training/report.txtumask действует при создании, а не задним числом
chmod.У chmod есть также специальные биты setuid, setgid и sticky bit. Они меняют поведение выполнения файлов или совместного доступа к каталогам и требуют отдельной оценки; не устанавливайте их как способ общего исправления прав.
Почему опасны chmod -R и chown -R
Рекурсивная операция затрагивает всё дерево
chmod -R и chown -R могут изменить права и владельцев тысяч объектов, включая файлы с намеренно отличающимися режимами, каталоги, сокеты и данные приложения. Не запускайте их на системных каталогах и не применяйте к рабочему дереву без предварительного списка объектов, резервного плана и понимания ожидаемого результата.Символические ссылки требуют отдельного внимания. Изменение атрибутов самой ссылки, обращение к объекту по её цели и переход по ссылке при рекурсивном обходе — разные действия. Поведение зависит от утилиты, её реализации и в ыбранных параметров обхода; перед массовой операцией прочитайте man chmod и man chown именно на целевой системе и проверьте дерево на тестовой выборке.
find /srv/training -xdev -printf '%y %m %u %g %p\n' | lessЕсли политика требует разные режимы для каталогов и обычных файлов, задавайте их отдельными, сначала проверяемыми выборками. Например, перед изменением можно просмотреть find /srv/training -type d -print и find /srv/training -type f -print; конкретные команды изменения выбирайте только после проверки списка.
Удалить пользователя Linux без потери контроля над данными
Удаление записи пользователя, домашнего каталога, почтового ящика, файлов вне домашнего каталога и группы — независимые действия. userdel без специальных параметров удаляет учётную запись, но не следует считать это удалением всех данных с её UID. Обработка домашнего каталога и почтового ящика при userdel -r определяется документацией утилиты и фактическим расположением этих объектов; файлы вне дома нужно искать и обрабатывать отдельно.
Безопасное удаление пользователя
Пример относится к пользователю trainee. Не удаляйте учётную запись, пока не определили владельцев данных, активные процессы и необходимость сохранить архив.
- 1Зафиксируйте UID и текущие атрибутыВыполните
id traineeиgetent passwd trainee. UID нужен для поиска файлов, поскольку после удаления имя может перестать разрешаться, а объекты сохранят числового владельца. - 2Проверьте процессы пользователяВыполните
ps -u trainee -fлибоpgrep -a -u trainee. Завершение процессов и остановка связанных служб — отдельная задача; сначала установите их назначение. - 3Найдите файлы вне домашнего каталогаПосле подстановки фактического UID выполните, например,
sudo find /srv /var -xdev -uid 12345 -ls. Выберите только релевантные файловые системы и каталоги: поиск от/может быть долгим и затронуть сетевые либо служебные монтирования. - 4Передайте, архивируйте или удалите найденные данныеЕсли файлы нужны другому владельцу, смените владельца адресно, например
sudo chown -R newowner:newgroup /srv/projectтолько после проверки дерева. Если дан ные надо хранить, создайте архив по принятой политике и проверьте его. - 5Удалите учётную записьДля удаления только записи используйте
sudo userdel trainee. Если подтверждено удаление домашнего каталога и связанных с ним локальных данных, применяютsudo userdel -r trainee; последствия для почтового ящика и нестандартного home сверяйте поman userdelцелевого выпуска. - 6Проверьте остатки и решите судьбу группыВыполните
getent passwd trainee, затем повторите поиск по сохранённому UID. Группу удаляйте отдельно командойsudo groupdel operatorsтолько послеgetent group operatorsи проверки, что она не нужна другим пользователям или объектам.
Не удаляйте пользователя с активными задачами вслепую
Проверка после настройки пользователей и прав
id имя_пользователя— UID, основная и дополнительные группы записи.getent passwd имя_пользователяиgetent group имя_группы— видимость записей через системные источники.ls -ld каталогиls -l файл— владелец, группа и символьный режим;statудобен для восьмеричного режима.sudo -lпод целевой учётной записью — фактически видимые правила sudo.- После добавления в группу — новый вход в систему или новый процесс с обновлённым списком групп.
- При неожиданном отказе в доступе — проверка прав каждого каталога в пути, а не только конечного файла.
Эта статья описывает стандартные UNIX-права. ACL могут задавать дополнительные разрешения и ограничения, а SELinux и другие обязательные механизмы могут запретить действие, разрешённое стандартными правами. Поэтому совпадение владельца и режима не всегда полностью объясняет фактический результат.
Термины в статье
- Владелец файла
- Владелец файла — числовой UID, записанный в метаданных объекта и определяющий применение класса прав владельца.
- Группа пользователей
- Группа пользователей — объект разграничения доступа, объединяющий учётные записи под общим GID для назначения прав н а файлы, службы и иные ресурсы нескольким пользователям.
- Командная оболочка
- Командная оболочка — программа-интерпретатор, принимающая команды и запускающая процессы; в отличие от терминала, она обрабатывает синтаксис и сценарии.
- Права доступа к файлам
- Права доступа к файлам — разрешения файловой системы на чтение, запись и выполнение объекта для его владельца, группы-владельца и остальных пользователей.
- Процесс
- Процесс — экземпляр выполняемой программы в Linux с PID, виртуальным адресным пространством, состоянием и связанными с ним ресурсами.
- Системная служба
- Системная служба — программный компонент, которым ОС управляет как логической единицей для фонового выполнения задач или предоставления функций программам и пользователям.
- Суперпользователь
- Суперпользователь — учётная запись с UID 0 или процесс с эффективным UID 0, обладающий административными правами; его полномочия шире, чем у обычного пользователя.
- Учётная запись пользовател я
- Учётная запись пользователя — запись в системе идентификации ОС, связывающая имя и UID с параметрами входа, домашним каталогом и членством в группах.
- AlmaLinux
- AlmaLinux — корпоративный дистрибутив Linux, поддерживаемый сообществом и AlmaLinux OS Foundation, ориентированный на совместимость с интерфейсами и экосистемой RHEL.
- Bash
- Bash — командная оболочка Unix-подобных систем, реализующая язык POSIX shell и добавляющая расширения для интерактивной работы и сценариев.
- Debian
- Debian — универсальный дистрибутив Linux с пакетами DEB и системой APT, известный консервативной веткой Stable и разделением репозиториев по веткам разработки.
- GID
- GID — числовой идентификатор группы в Linux, связывающий пользователей и объекты файловой системы с групповыми правами доступа; это не имя группы и не UID.
- LTS
- LTS — модель выпуска ПО с продлённым периодом сопровождения, в котором исправления безопасности и критических ошибок поставляются дольше обычного релиза.
- RHEL
- RHEL — корпоративный дистрибутив Linux от Red Hat с фиксированными основными версиями, сертификационной экосистемой и моделью сопровождения, зависящей от подписки.
- Rocky Linux
- Rocky Linux — корпоративный дистрибутив Linux, создаваемый из исходных пакетов экосистемы RHEL и ориентированный на совместимость с RHEL без использования его товарных знаков.
- sudo
- sudo — утилита контроля и делегирования привилегий, которая по заданной политике запускает команду от имени целевого пользователя, обычно root.
- Ubuntu Server
- Ubuntu Server — серверный вариант дистрибутива Ubuntu на базе Debian с APT и типовыми средствами автоматизации, доступный в виде установочных и готовых образов.
- UID
- UID — числовой идентификатор учётной записи в Unix-подобной системе, используемый в учётных данных процессов и записываемый как владелец объектов файловой системы.
- umask
- umask — атрибут процесса с маской битов прав, исключаемых при создании файлов и каталогов; существующие объекты он не изменяет. При default ACL действует другой порядок.
