Источник: Linux User Groups and Permissions Guide
Alex Carter · 8 ноября 2024 · 11 мин
Кратко
Узнайте, как эффективно управлять группами пользователей и правами в Linux, чтобы повысить безопасность и организованность системы.
Хотите, чтобы ваша система Linux была защищена и организована? Вот что нужно знать о группах пользователей и правах:
- Группы пользователей: цифровые клубы, управляющие доступом к файлам и ресурсам
- Права (permissions): правила, определяющие, кто может читать, записывать или исполнять файлы
Ключевые моменты:
- Группы облегчают управление множеством пользователей
- Права бывают трёх типов: чтение, запись, исполнение
- Используйте команды вроде
chmod,chownиgroupaddдля управления доступом - Следуйте принципу «минимальных привилегий» для лучшей безопасности
- Регулярно проводите аудит учётных записей пользователей и членств в группах
Основные команды:
| Команда | Назначение |
|---|---|
| useradd | Создание новых пользователей |
| groupadd | Создание новых групп |
| chmod | Изменение прав на файлы |
| chown | Изменение владельца файлов |
Помните: одно маленькое изменение в правах может существенно повлиять на безопасность вашей системы. Будьте бдительны и продолжайте изучать лучшие практики безопасности Linux.
Это руководство объясняет группы пользователей и права на файлы в Linux от начала до конца: разницу между первичными и вторичными группами, как работают права на чтение/запись/исполнение для владельцев, групп и остальных, числовую и символьную системы записи, ключевые команды (useradd, groupadd, chmod, chown, chgrp, usermod, gpasswd), специальные права (SUID, SGID, sticky bit), ACL для тонкого контроля и лучшие практики безопасности, включая принцип минимальных привилегий и настройку umask по умолчанию.
Группы пользователей в Linux — это как цифровые клубы, которые контролируют, к чему их члены могут получить доступ и что менять в системе. Это ключевой инструмент для системных администраторов, позволяющий эффективно управлять множеством пользователей.
Группа пользователей Linux — это множество пользователей, которые разделяют одинаковые права доступа к файлам и системным ресурсам. Это как команда на работе: каждый в команде может пользоваться определёнными инструментами, но не всем, что есть в компании.
Например, у вас может быть группа «developers», которая может работать с исходным кодом, тогда как группа «marketing» может только смотреть готовую документацию продукта. Такая схема облегчает управление правами и повышает безопасность системы.
В Linux пользователи могут состоять в двух типах групп:
- Первичная группа (Primary Group)
Это группа по умолчанию, которую получает пользователь при создании учётной записи. Это как ваша домашняя база.
- Вторичные группы (Secondary Groups)
Это дополнительные группы, в которые пользователь может входить — всего до 15. Это как участие в разных рабочих комитетах.
Вот реальный пример:
Когда вы создаёте нового пользователя с именем «bob» этой командой:
$ sudo useradd --create-home bobLinux автоматически создаёт первичную группу, тоже названную «bob». Это можно проверить в файле /etc/passwd:
$ grep bob /etc/passwdЭта команда показывает User ID (UID) и Group ID (GID) пользователя bob, подтверждая его основную группу.
Linux поставляется с некоторыми предустановленными группами для системных нужд, но вы также можете создавать собственные группы.
Встроенные группы: это готовые группы вроде «root», «sudo» или «users». Они критичны для работы системы и имеют определённые права.
Пользовательские группы: это группы, которые вы создаёте под свои нужды. Например, вы можете сделать группу «projects» для командной работы.
Управление членами групп довольно простое с помощью нескольких ключевых команд:
Добавить пользователя в группу:
$ sudo gpasswd -a username groupnameИсключить пользователя из группы:
$ sudo gpasswd -d username groupnameСоздать новую группу:
$ sudo groupadd groupnameИзменить первичную группу пользователя:
$ sudo usermod -g newgroup usernameХорошее управление группами — ключ к безопасности и бесперебойной работе Linux-системы. Помещая пользователей в правильные группы, вы можете упростить контроль доступа и задачи администрирования.
«Причина, по которой Linux так элегантно поддерживает многопользовательскую систему, — это права (permissions). Права дают пользователям возможность доступа к файлам и директориям в системе». — Żimuzo Obiechina, автор
Права на файлы в Linux — это основа безопасности системы. Они контролируют, кто может получать доступ, изменять или запускать файлы и папки. Если вы управляете Linux-системой, вам нужно знать, как они работают.
У каждого файла и папки в Linux есть три набора прав:
- Владелец (Owner): человек, который создал файл
- Группа (Group): пользователи из назначенной файлу группы
- Остальные (Others): все остальные в системе
Эти наборы определяют, что каждый тип пользователя может делать с файлом или папкой.
У каждой категории пользователей есть три возможных права:
- Чтение (r): смотреть содержимое файла или видеть, что в папке
- Запись (w): менять содержимое файла или добавлять/удалять файлы в папке
- Исполнение (x): запускать файл как программу или открывать папку
Для файлов и папок они работают немного по-разному:
| Право | Файл | Папка |
|---|---|---|
| Чтение (r) | Видеть содержимое | Видеть, что внутри |
| Запись (w) | Менять содержимое | Добавлять/удалять файлы |
| Исполнение (x) | Запускать как программу | Открывать и использовать |
Linux показывает права двумя способами: буквами (символьная запись) и числами (числовая запись).
Буквы выглядят так: rwxr-xr-x
Это означает:
rwxдля владельца (можно всё)r-xдля группы (смотреть и запускать)r-xдля остальных (смотреть и запускать)
Числа используют следующие значения:
- 4 (чтение)
- 2 (запись)
- 1 (исполнение)
Вы складываете их для комбинированных прав. Например:
- 7 (4+2+1) = чтение, запись, исполнение
- 5 (4+1) = чтение, исполнение
- 6 (4+2) = чтение, запись
Таким образом, rwxr-xr-x в числах — это 755.
Права работают похоже для файлов и папок, но есть несколько ключевых различий:
- Право исполнения (x)
Для файлов: можно ли запустить его как программу? Для папок: можно ли открыть её и посмотреть, что внутри?
- Право записи (w)
Для файлов: можно ли изменить его содержимое? Для папок: можно ли добавлять, удалять или переименовывать файлы внутри?
- Право чтения (r)
Для файлов: можно ли увидеть его содержимое? Для папок: можно ли получить список того, что внутри?
Знание этих различий — ключ к грамотному управлению правами. Например, чтобы использовать файл в папке, нужны права на чтение И исполнение самой папки.
«Права на файлы в Linux — мощный инструмент для контроля доступа к файлам и директориям вашей системы». — Ricmedia, автор руководства по правам на файлы в Linux
Давайте погрузимся в управление группами пользователей Linux. Это ключевой навык для системных администраторов, позволяющий поддерживать порядок и безопасность.
Создавать группы просто. Понадобится доступ root или sudo:
sudo groupadd new_group_nameНапример:
sudo groupadd developersПроверьте, что получилось:
sudo tail /etc/groupХотите системную группу? Используйте -r:
sudo groupadd -r mysystemgroupДобавить пользователя в группу:
sudo usermod -aG group_name usernameФлаг -a важен. Он добавляет пользователя, не удаляя его из других групп.
Пример:
sudo usermod -aG developers bobПроверить группы пользователя:
groups usernameНужно подправить настройки группы? Вот как:
- Изменить основную группу пользователя:
sudo usermod -g new_primary_group username- Добавить пользователя в несколько групп:
sudo usermod -aG group1,group2,group3 username- Изменить ID группы:
sudo groupmod -g new_gid group_nameБудьте здесь осторожны. Перепроверяйте, прежде чем что-то удалять.
Удалить пользователя из группы:
sudo gpasswd -d username group_nameУдалить группу:
sudo groupdel group_nameСначала убедитесь, что ни у кого эта группа не является основной.
Удалить пользователя:
sudo userdel usernameХотите удалить и его домашнюю папку? Используйте:
sudo userdel -r usernameВот краткая шпаргалка:
| Команда | Что делает |
|---|---|
| groupadd | Создать новую группу |
| groupdel | Удалить группу |
| groupmod | Изменить настройки группы |
| usermod | Изменить настройки пользователя |
| gpasswd | Управлять файлом /etc/group |
| groups | Показать членство в группах |
Грамотное управление группами держит вашу Linux-систему в безопасности и порядке. Всегда перепроверяйте перед запуском команд, особенно с системными группами или важными учётными записями.
«С этими командами вы можете легко создавать и удалять группы, добавлять и удалять пользователей по мере необходимости». — Hivelocity Hosting
Права на файлы в Linux? Они ключевые для безопасности вашей системы и контроля того, кто к чему имеет доступ. Разберём основные команды и концепции, которые нужно знать.
chmod — это команда, которую вы будете использовать для изменения прав на файлы. Она работает двумя способами: символьным и числовым.
Символьная запись использует буквы и знаки:
u(user),g(group),o(others),a(all)+(добавить),-(убрать),=(задать точно)
Например:
chmod u+x script.shЭто даёт пользователю право исполнения.
Числовая запись использует трёхзначное число:
- Каждая цифра представляет пользователя, группу и остальных
- Каждая цифра — это сумма 4 (чтение), 2 (запись), 1 (исполнение)
Например:
chmod 755 script.shЭто даёт пользователю полные права (7), а группе и остальным — чтение и исполнение (5).
chown меняет владельца файла. Вот как это работает:
chown new_owner:new_group filenameПример:
sudo chown john:developers important_file.txtТеперь Джон владеет файлом, и файл входит в группу developers.
chgrp похож на chown, но меняет только группу:
chgrp new_group filenameНапример:
sudo chgrp marketing project_files/Это помещает директорию «project_files» в группу marketing.
Хотите изменить права для кучи файлов? Используйте опцию -R с chmod, chown или chgrp. Но будьте осторожны — это затрагивает всё в директории.
Пример:
chmod -R a+rx /var/www/htmlЭто даёт всем права на чтение и исполнение для всех файлов в /var/www/html.
Также можно использовать find для большего контроля:
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;Это задаёт конкретные права для файлов и директорий в /var/www/html.
В Linux есть три специальных права:
- SUID (Set User ID)
Когда установлено на исполняемом файле, он запускается с правами владельца файла.
- SGID (Set Group ID)
Похоже на SUID, но для групп. На директориях новые файлы наследуют группу директории.
- Sticky Bit
На директориях только владелец файла может удалять или переименовывать файлы.
Чтобы их установить, используйте chmod с четвёртой цифрой:
chmod 4755 file # SUID
chmod 2755 directory # SGID
chmod 1755 directory # Sticky BitИспользуйте эти специальные права осторожно — они могут быть опасны при неправильном применении.
«Правильные права на файлы — краеугольный камень безопасности Linux. Всегда следуйте принципу минимальных привилегий — давайте пользователям только те права, которые им абсолютно необходимы». — Linus Torvalds, создатель Linux
Давайте разберём ключевые практики, чтобы ваша Linux-система была защищена и хорошо организована.
Принцип минимальных привилегий (PoLP) — большая тема в безопасности Linux. Он прост: давайте пользователям только тот доступ, который нужен им для работы. И ничего больше.
Вот реальный пример:
Вместо того чтобы давать всем разработчикам полный доступ к продакшн-серверам, создайте группу «deploy». Эта группа получает ограниченные права для выкатки обновлений кода. Если учётную запись разработчика взломают, ущерб будет ограничен.
«Эти практики могут остановить угрозы безопасности, заблокировать несанкционированный доступ и защитить вашу систему и данные». — Rohan Timalsina, автор
Введите umask. Эта команда задаёт права по умолчанию для файлов. Вот как это работает:
- Файлы обычно начинаются с 666 (rw-rw-rw-)
- Директории начинаются с 777 (rwxrwxrwx)
- Значение umask вычитается из этих чисел
Так, если вы зададите umask 022, новые файлы получатся 644 (rw-r--r--), а директории — 755 (rwxr-xr-x).
Хотите задать umask по умолчанию? Добавьте это в /etc/profile или ~/.bashrc:
umask 027Этот umask (027) балансирует безопасность и удобство:
- Директории: 750 (rwxr-x---)
- Файлы: 640 (rw-r-----)
«Чтобы получить итоговое право на файл, просто вычтите umask из 666». — Ashish Jaiswal, пользователь Linux
Хорошее планирование групповых прав держит вашу Linux-систему безопасной и эффективной. Вот как:
- Группируйте пользователей логично (например, developers, marketing, hr).
- Используйте управление доступом на основе ролей (RBAC). Назначайте права ролям, а не отдельным пользователям.
- Регулярно проводите аудит членств в группах. Удаляйте пользователей, которым больше не нужен доступ.
- Не используйте учётную запись root. Используйте
sudoдля ограниченного административного доступа.
Списки контроля доступа (Access Control Lists, ACL) дают больше контроля, чем стандартные права Linux. Они позволяют задавать права для нескольких пользователей и групп на один файл или директорию.
Посмотреть ACL на файле:
getfacl filenameЗадать ACL:
setfacl -m u:username:rwx filenameЭто даёт конкретному пользователю права на чтение, запись и исполнение файла.
Права не применяются автоматически к подпапкам и файлам. Но можно использовать команду chmod с -R, чтобы это изменить:
chmod -R 755 /path/to/directoryБудьте осторожны с рекурсивными правами. Они могут случайно раскрыть чувствительные данные, если не быть внимательным.
Группы пользователей и права в Linux — ключ к безопасности системы и управлению пользователями. Подведём итоги того, что мы узнали.
Группы пользователей: организация доступа
Группы пользователей в Linux помогают эффективно управлять доступом. Они позволяют администраторам управлять правами множества пользователей сразу. Хорошее управление группами держит вашу систему в безопасности и порядке.
Права: тонкая настройка контроля
Права Linux (чтение, запись, исполнение) дают детальный контроль над доступом к файлам и директориям. Всегда следуйте принципу минимальных привилегий (PoLP) при назначении прав. Как говорит эксперт по безопасности Linux Rohan Timalsina:
«Следование этим лучшим практикам может снизить риски безопасности, предотвратить несанкционированный доступ и защитить вашу систему и данные от потенциальных угроз».
Ключевые команды
Вот основные команды, которые мы рассмотрели:
| Команда | Что делает |
|---|---|
| useradd | Создаёт новые учётные записи |
| usermod | Изменяет существующие учётные записи |
| groupadd | Создаёт новые группы |
| groupmod | Изменяет существующие группы |
| chmod | Меняет права на файлы |
| chown | Меняет владельца файлов |
Знание этих команд — обязательное условие хорошего управления системой.
Быть в безопасности
Безопасность Linux никогда не останавливается. Регулярно проверяйте учётные записи и членства в группах. Удаляйте или отключайте неиспользуемые учётные записи. Всегда давайте минимально необходимые привилегии при назначении прав.
Продолжайте учиться
Безопасность Linux постоянно меняется. Harel Erez из JFrog предупреждает:
«Подводя итог: безопасность и права в Linux очень важно учитывать. Одно маленькое изменение может открыть доступ к вашему файлу кому угодно!»
Это показывает, почему администраторам нужно быть в курсе лучших практик безопасности.
Права в Linux — одна из тех областей, где одна неверная команда может иметь немедленные последствия. Вот ошибки, которые чаще всего ловят разработчиков и сисадминов.
Использование chmod 777 как ярлыка
Давать полные права на чтение, запись и исполнение всем на файл или директорию — почти никогда не правильное решение. Это часто применяют как шаг отладки, чтобы «просто заработало», а потом оставляют. Используйте минимальные права, при которых задача работает: 755 для директорий и исполняемых файлов, которые должны быть доступны для чтения всем, 644 для файлов, и строже для чего-либо чувствительного.
Рекурсивный chmod -R не на том пути
Запуск chmod -R 755 / вместо chmod -R 755 /var/www/html — известная мина. Всегда перепроверяйте путь перед выполнением рекурсивных изменений прав. Если вы применяете разные права к файлам и директориям (а вы почти всегда должны), используйте find с -type f и -type d вместо одного рекурсивного chmod.
Забывание, что изменения групп требуют нового сеанса входа
Когда вы добавляете пользователя в группу через usermod -aG groupname username, изменение не вступает в силу в текущем терминальном сеансе пользователя. Нужно выйти и снова войти (или выполнить newgrp groupname, чтобы начать новый сеанс с активной группой). Это частый источник путаницы, когда кажется, что изменения не сработали.
Путаница между chown user file и chown user:group file
Форма с двоеточием меняет и владельца, и группу одной командой. Пропуск части с группой меняет только владельца. Проверяйте через ls -la после chown, чтобы убедиться, что и владелец, и группа такие, как вы задумали.
Установка права исполнения на файлы данных Право исполнения на неисполняемых файлах (например, текстовых файлах, изображениях или конфигурационных файлах) не служит никакой цели и немного расширяет поверхность атаки. При копировании файлов или массовом назначении прав проверяйте, что скрипты случайно не устанавливают биты исполнения на неисполняемое содержимое.
Надежда на права файлов как единственный слой безопасности Права контролируют доступ к файловой системе, но не защищают от атакующего, который уже получил доступ к учётной записи пользователя с подходящими правами. Рассматривайте права как один слой в эшелонированной обороне наряду с SSH-аутентификацией по ключам, регулярным аудитом учётных записей и своевременным удалением неиспользуемых учётных записей.
Команда chmod в Linux меняет права на файлы. Вот простой пример:
sudo chmod 755 /var/www/html/index.phpЭто даёт владельцу полный контроль, а остальным позволяет читать и запускать файл. Это часто используется для файлов веб-сервера, чтобы сбалансировать доступ и безопасность.
«Вы можете использовать sudo chmod 755 на бинарном файле, чтобы все пользователи могли его запускать. Или применить это к директории с логами сервера, чтобы другие могли их читать», — говорит эксперт по Linux Ajit Fawade.
chmod 777 даёт всем полный доступ к файлу или директории. Например:
chmod 777 /home/user/public_filesЭто открывает директорию «public_files» для всех. Но будьте осторожны — это рискованно.
«chmod 777 foldername даёт права на чтение, запись и исполнение всем», — объясняет Ajit Fawade.
Хотя иногда это нужно, обычно это плохая идея. Вместо этого попробуйте более ограниченные права, например 755 для директорий или 644 для файлов. Они держат всё в большей безопасности, при этом позволяя людям делать то, что им нужно.
