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

«Как выдать права только на чтение для группы пользователей в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Чтобы предоставить группе пользователей права только на чтение к файлу или директории, используется комбинация команд chown (или chgrp) и chmod.

Пошаговый пример для файла /shared/docs/report.pdf:

  1. Создайте группу (если её нет):

    sudo groupadd readers
  2. Добавьте пользователей в группу:

    sudo usermod -aG readers alice
    sudo usermod -aG readers bob

    Пользователям нужно выйти и заново войти в систему, чтобы изменения вступили в силу.

  3. Назначьте файлу целевую группу:

    sudo chown :readers /shared/docs/report.pdf
    # Или используйте chgrp:
    sudo chgrp readers /shared/docs/report.pdf
  4. Установите права для группы на чтение (r), убрав запись (w) и выполнение (x):

    sudo chmod g=r,o= /shared/docs/report.pdf
    # Альтернативно, цифровой записью:
    sudo chmod 640 /shared/docs/report.pdf  # rw-r-----
    • g=r — устанавливает для группы только право на чтение.
    • o= — убирает все права у других пользователей (не владельца и не группы).

Для директории и всего её содержимого рекурсивно:

sudo chown -R :readers /shared/docs/
sudo chmod -R g=rX,o= /shared/docs/

Важно: Использование заглавной X (а не x) даёт право на выполнение только для директорий и уже исполняемых файлов, что корректно для навигации по каталогам.

Проверка:

ls -l /shared/docs/report.pdf
# Должно отображаться: -rw-r----- 1 owner readers ...

Теперь все пользователи, входящие в группу readers, смогут читать файл, но не смогут его изменять или удалять.