← Назад к вопросам

Как выдать права только на чтение для группы пользователей в Linux

1.0 Junior🔥 151 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Настройка прав только на чтение для группы пользователей в Linux

Для предоставления группе пользователей прав только на чтение в Linux требуется комплексный подход, включающий настройку системных ACL (Access Control Lists) и правильную организацию структуры файлов и директорий. В своей практике я использую комбинацию стандартных UNIX прав и расширенных ACL для достижения точного контроля.

Основные этапы реализации

1. Создание целевой группы и добавление пользователей

Первым шагом создаем группу readonly_users и добавляем в нее необходимых пользователей:

# Создание новой группы
sudo groupadd readonly_users

# Добавление пользователей в группу (пример для user1 и user2)
sudo usermod -a -G readonly_users user1
sudo usermod -a -G readonly_users user2

2. Настройка базовых прав через chown и chmod

Для директории или файла устанавливаем групповое владение и права чтения:

# Устанавливаем группу владельцем директории
sudo chown -R :readonly_users /путь/к/директории

# Даем права только на чтение для группы (4 = read)
sudo chmod -R g=r /путь/к/директории

# Для директорий также нужно разрешить исполнение (X) для просмотра содержимого
sudo chmod -R g+X /путь/к/директории

3. Использование расширенных ACL для точного контроля

Базовые права chmod ограничены, поэтому я предпочитаю расширенные ACL, которые позволяют задавать права для конкретной группы без изменения владельца:

# Установка ACL: разрешить только чтение для группы readonly_users
sudo setfacl -R -m g:readonly_users:r /путь/к/директории

# Для директорий добавляем право на исполнение (для просмотра содержимого)
sudo setfacl -R -m d:g:readonly_users:rX /путь/к/директории

Ключ -m изменяет правила, d: устанавливает маску по умолчанию для новых объектов внутри директории.

4. Проверка установленных прав

Для проверки используем команды:

# Просмотр базовых прав
ls -la /путь/к/директории

# Просмотр расширенных ACL
getfacl /путь/к/директории

Особенности и ограничения прав только на чтения

  • Для директорий: Право r позволяет только просмотреть список файлов, но без права X (execute) пользователи не смогут открыть директорию или прочитать файлы внутри. Поэтому комбинация rX необходима.
  • Маска по умолчанию: При использовании setfacl с параметром d: новые создаваемые файлы и директории автоматически получают заданные ACL правила.
  • Инкапсуляция прав: ACL имеют приоритет над базовыми правами chmod. Это позволяет давать права группе без изменения владельца файла.
  • Запрет записи: Права только на чтение предотвращают любые операции изменения: write, delete, rename. Однако пользователи могут копировать файлы если имеют права на чтение.

Практический пример полной настройки

# Создаем тестовую структуру
sudo mkdir -p /shared/docs
sudo touch /shared/docs/file1.txt /shared/docs/file2.txt

# Создаем группу и добавляем пользователя
sudo groupadd readers
sudo usermod -a -G readers testuser

# Назначаем ACL права
sudo setfacl -R -m g:readers:rX /shared/docs
sudo setfacl -R -m d:g:readers:rX /shared/docs

# Убеждаемся что другие группы не имеют прав
sudo setfacl -R -m o::0 /shared/docs  # Запрещаем все для others (не владельцев и не группы)

Дополнительные меры безопасности

В enterprise-среде я дополняю эту настройку:

  • Audit правил: Регулярная проверка ACL через автоматизированные скрипты.
  • SELinux/AppArmor: Контексты для особо критичных директорий.
  • Мониторинг: Логирование попыток нарушения прав через auditd.
  • Информация для пользователей: Четкое документирование доступных ресурсов и ограничений.

Таким образом, предоставление прав только на чтение группе пользователей является комбинацией управления группами, базовых прав UNIX и расширенных ACL. Этот подход обеспечивает гибкость, безопасность и соответствует принципам минимальных необходимых прав в DevOps-практиках.

Как выдать права только на чтение для группы пользователей в Linux | PrepBro