Как выдать права только на чтение для группы пользователей в Linux
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Настройка прав только на чтение для группы пользователей в 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-практиках.