Skip to content

Latest commit

 

History

History
600 lines (364 loc) · 34.1 KB

linux_user_groups_and_permissions_guide.md

File metadata and controls

600 lines (364 loc) · 34.1 KB

Группы и права пользователей в Linux

Источник: Linux User Groups and Permissions Guide

Alex Carter · 8 ноября 2024 · 11 мин

Кратко

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

Хотите, чтобы ваша система Linux была защищена и организована? Вот что нужно знать о группах пользователей и правах:

  • Группы пользователей: цифровые клубы, управляющие доступом к файлам и ресурсам
  • Права (permissions): правила, определяющие, кто может читать, записывать или исполнять файлы

Ключевые моменты:

  1. Группы облегчают управление множеством пользователей
  2. Права бывают трёх типов: чтение, запись, исполнение
  3. Используйте команды вроде chmod, chown и groupadd для управления доступом
  4. Следуйте принципу «минимальных привилегий» для лучшей безопасности
  5. Регулярно проводите аудит учётных записей пользователей и членств в группах

Основные команды:

Команда Назначение
useradd Создание новых пользователей
groupadd Создание новых групп
chmod Изменение прав на файлы
chown Изменение владельца файлов

Помните: одно маленькое изменение в правах может существенно повлиять на безопасность вашей системы. Будьте бдительны и продолжайте изучать лучшие практики безопасности Linux.

Что рассматривает это руководство

Это руководство объясняет группы пользователей и права на файлы в Linux от начала до конца: разницу между первичными и вторичными группами, как работают права на чтение/запись/исполнение для владельцев, групп и остальных, числовую и символьную системы записи, ключевые команды (useradd, groupadd, chmod, chown, chgrp, usermod, gpasswd), специальные права (SUID, SGID, sticky bit), ACL для тонкого контроля и лучшие практики безопасности, включая принцип минимальных привилегий и настройку umask по умолчанию.

Что такое группы пользователей в Linux

Linux

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

Основы групп пользователей

Группа пользователей Linux — это множество пользователей, которые разделяют одинаковые права доступа к файлам и системным ресурсам. Это как команда на работе: каждый в команде может пользоваться определёнными инструментами, но не всем, что есть в компании.

Например, у вас может быть группа «developers», которая может работать с исходным кодом, тогда как группа «marketing» может только смотреть готовую документацию продукта. Такая схема облегчает управление правами и повышает безопасность системы.

Первичные и вторичные группы

В Linux пользователи могут состоять в двух типах групп:

  1. Первичная группа (Primary Group)

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

  1. Вторичные группы (Secondary Groups)

Это дополнительные группы, в которые пользователь может входить — всего до 15. Это как участие в разных рабочих комитетах.

Вот реальный пример:

Когда вы создаёте нового пользователя с именем «bob» этой командой:

$ sudo useradd --create-home bob

Linux автоматически создаёт первичную группу, тоже названную «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 есть три набора прав:

  1. Владелец (Owner): человек, который создал файл
  2. Группа (Group): пользователи из назначенной файлу группы
  3. Остальные (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.

Папки против файлов

Права работают похоже для файлов и папок, но есть несколько ключевых различий:

  1. Право исполнения (x)

Для файлов: можно ли запустить его как программу? Для папок: можно ли открыть её и посмотреть, что внутри?

  1. Право записи (w)

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

  1. Право чтения (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

Изменение настроек групп

Нужно подправить настройки группы? Вот как:

  1. Изменить основную группу пользователя:
sudo usermod -g new_primary_group username
  1. Добавить пользователя в несколько групп:
sudo usermod -aG group1,group2,group3 username
  1. Изменить 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: ваш помощник по изменению прав

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 меняет владельца файла. Вот как это работает:

chown new_owner:new_group filename

Пример:

sudo chown john:developers important_file.txt

Теперь Джон владеет файлом, и файл входит в группу developers.

chgrp: только для смены группы

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 есть три специальных права:

  1. SUID (Set User ID)

Когда установлено на исполняемом файле, он запускается с правами владельца файла.

  1. SGID (Set Group ID)

Похоже на SUID, но для групп. На директориях новые файлы наследуют группу директории.

  1. 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-систему безопасной и эффективной. Вот как:

  1. Группируйте пользователей логично (например, developers, marketing, hr).
  2. Используйте управление доступом на основе ролей (RBAC). Назначайте права ролям, а не отдельным пользователям.
  3. Регулярно проводите аудит членств в группах. Удаляйте пользователей, которым больше не нужен доступ.
  4. Не используйте учётную запись root. Используйте sudo для ограниченного административного доступа.

Использование ACL

Списки контроля доступа (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-аутентификацией по ключам, регулярным аудитом учётных записей и своевременным удалением неиспользуемых учётных записей.

FAQ

Какой пример chmod?

Команда chmod в Linux меняет права на файлы. Вот простой пример:

sudo chmod 755 /var/www/html/index.php

Это даёт владельцу полный контроль, а остальным позволяет читать и запускать файл. Это часто используется для файлов веб-сервера, чтобы сбалансировать доступ и безопасность.

«Вы можете использовать sudo chmod 755 на бинарном файле, чтобы все пользователи могли его запускать. Или применить это к директории с логами сервера, чтобы другие могли их читать», — говорит эксперт по Linux Ajit Fawade.

Что за пример прав chmod 777?

chmod 777 даёт всем полный доступ к файлу или директории. Например:

chmod 777 /home/user/public_files

Это открывает директорию «public_files» для всех. Но будьте осторожны — это рискованно.

«chmod 777 foldername даёт права на чтение, запись и исполнение всем», — объясняет Ajit Fawade.

Хотя иногда это нужно, обычно это плохая идея. Вместо этого попробуйте более ограниченные права, например 755 для директорий или 644 для файлов. Они держат всё в большей безопасности, при этом позволяя людям делать то, что им нужно.


linux permissions users