Пользователи и права — Примеры
Пример 1 — Чтение режима, отказавшего службе
Служба reportd падает при запуске с ошибкой прав. Ниже перечислены её каталог и файл конфигурации. Скажите, кому что можно, какой факт вызвал отказ и единственное изменение, которое это исправит, не расширяя доступ.
$ ls -ld /srv/reportd /srv/reportd/reportd.conf
drwxr-x--- 2 root reportd 4096 /srv/reportd
-rw-r----- 1 root root 812 /srv/reportd/reportd.conf
Решение
каталог: владелец root может пройти и вывести список; группа reportd может пройти; остальные — нет
конфиг: владелец root может читать и писать; группа root может читать; служба не получает ничего
причина: служба работает как reportd, но конфигурация принадлежит root:root
исправить: chown root:reportd reportd.conf (служба читает через свою группу; режим не меняется)
Каталог уже допускает группу службы, поэтому неверно только владение файла, и исправление владельца сохраняет режим прежним. Обычная ошибка — ослабить режим вместо этого: файл становится читаемым каждой учётной записью на хосте, а несовпадение группы, вызвавшее ошибку, остаётся и будет найдено позже.
Пример 2 — Общий каталог, не открытый всему миру
Двум операторам, ana и ben, нужно читать файлы в /srv/exports, и никакой другой учётной записи нельзя. Сейчас каталог даёт всем доступ на чтение. Покажите настройку группы и получившиеся права и объясните, почему доступ продолжит работать для файлов, добавленных завтра.
сейчас: drwxr-xr-x root:root /srv/exports, созданные внутри файлы — root:root, режим 644
требование: ana и ben могут читать; любая другая учётная запись получает отказ
Решение
groupadd exports-read
usermod -aG exports-read ana
usermod -aG exports-read ben
chgrp exports-read /srv/exports
chmod 2750 /srv/exports
результат: drwxr-s--- root exports-read /srv/exports
новые файлы наследуют группу exports-read, поэтому идентификатор set-group сохраняет доступ действительным
Группы — практичный инструмент для общего доступа: набор читателей явен и обозрим в одном месте, а не «все, кто не возразил». Идентификатор set-group на каталоге заставляет созданные внутри файлы наследовать эту группу, поэтому доступ переживает следующую загрузку без ещё одной команды. Обычная ошибка — сделать каталог доступным всем на чтение: это короче набрать и открывает каждый экспорт каждой учётной записи на хосте.