Две программы setuid /usr/bin/bar
и /usr/bin/baz
один общий файл конфигурации foo
. Режим файла конфигурации - 0640
для него хранится конфиденциальная информация. Одна программа запускается как bar:bar
(то есть как пользовательская панель, групповая панель ); другой как baz:baz
. Изменение пользователей не вариант, и даже изменение групп не будет предпочтительным.
Я хочу жестко связать один файл конфигурации как /etc/bar/foo
и /etc/baz/foo
. Однако, это терпит неудачу, потому что файл, насколько я знаю, должен принадлежать root:bar
или к root:baz
.
Потенциальное решение: создайте новую группу barbaz
, членами которой являются bar
и baz
. Пусть foo
принадлежат root:barbaz
.
Это выглядит довольно сложным решением для меня. Нет ли более простого и удобного способа поделиться файлом конфигурации foo
между двумя программами?
На данный момент я поддерживаю две идентичные копии файла. Это работает, но, очевидно, неправильно. Что было бы правильно?
Для информации: у меня мало опыта работы с группами Unix и нет опыта работы с setgid (2).
ssl-cert
группа, которая в значительной степени является вашейbarbaz
группой. Стандарт состоит в том, чтобы установить все закрытые ключи, которые будут принадлежатьssl-cert
группе, и поместить идентификаторы UID, связанные с программами, которым требуется доступ к ним, в эту группу.ssl-cert
чей скрипт postinst при установке создает группу, о которой вы говорите. Я не знал оssl-cert
. Apache2 (установлен на моем хосте) рекомендуетssl-cert
. Различные пакеты Exim и Dovecot этого не делают, но Postfix (не установлен на моем хосте) зависит отssl-cert
. Благодаря Apache у моего хоста есть группа ssl-cert , но в этой группе еще нет участников. Спасибо за совет.Ответы:
Вы можете использовать списки ACL, чтобы файл мог читать человек из обеих групп.
Теперь оба
bar
иbaz
группа, и группа могут читать файл.Например, вот файл, принадлежащий bin: bin с режимом 640.
+
средство есть Заданная ACL, так что давайте посмотрим на него.Мы можем видеть линию
group:sweh:r--
: это означает, что люди в группеsweh
могут читать это.Эй, это я!
И да, я могу прочитать файл.
источник
Вы можете пересмотреть эти заявления:
Почему сложно создать новую группу? Это дает следующие преимущества по сравнению с ACL:
/usr/bin/bar
и/usr/bin/baz
, это важно , что эти две программы могут совместно использовать файл конфигурации. Это говорит о том, что программы естественно связаны между собой. Создание новой группы для них, по-видимому, описывает отношения, которые на самом деле существуют, и должны запускать поведение (например, разрешения на чтение общего файла конфигурации).Лично я вижу ACL как сложное решение здесь, а группы - более простой, традиционный способ Unix.
источник
Я думаю, что это будет типичное использование для списков контроля доступа (ACL). Добавьте обоих пользователей (или группы) в ACL файла конфигурации:
Возможно, вам придется сначала установить acl-пакет.
источник
Сделайте режим файла
0660
(или даже0440
если запись не требуется) и владениеbar:baz
. Тогда один процесс может получить доступ к файлу благодаря разрешениям пользователя, другой - благодаря разрешениям группы. Это работает даже в файловых системах, где ACL не.источник
«Новый» «облачный» способ заключается в том, что вся конфигурация обрабатывается системой управления конфигурацией (например, chef , puppet или ansible ). Тогда не имеет значения, что у вас есть два разных, но идентичных файла на сервере, так как оба являются копией одного файла из системы управления конфигурацией.
Основное преимущество такой работы заключается в том, что ваша конфигурация имеет версии (вместе со всеми остальными вашими конфигурациями), и что развертывание нового идентичного или почти идентичного сервера становится настолько простым, что его нельзя автоматизировать.
(Кстати, поскольку вы не используете управление конфигурацией, я бы использовал систему групп, как в ответе @ drg).
источник