Deux programmes setuid /usr/bin/bar
et /usr/bin/baz
partagent un seul fichier de configuration foo
. Le mode du fichier de configuration est 0640
, car il contient des informations sensibles. Les pistes de l' un programme en tant que bar:bar
(qui est, en tant qu'utilisateur bar, groupe bar ); l'autre comme baz:baz
. Changer les utilisateurs n'est pas une option, et même changer de groupe ne serait pas préférable.
Je souhaite lier en dur le fichier de configuration unique en tant que /etc/bar/foo
et /etc/baz/foo
. Cependant, cela échoue car le fichier doit, à ma connaissance, appartenir à root:bar
ou à root:baz
.
Solution potentielle: Créez un nouveau groupe barbaz
dont les membres sont bar
et baz
. Laisser foo
appartenir à root:barbaz
.
Cela ressemble à une solution assez lourde pour moi. N'y a-t-il pas un moyen plus simple et plus simple de partager le fichier de configuration foo
entre les deux programmes?
Pour le moment, je conserve deux copies identiques du fichier. Cela fonctionne, mais est évidemment faux. Quel serait le droit?
Pour information: j'ai peu d'expérience avec les groupes Unix et aucun avec setgid (2).
ssl-cert
groupe, qui est à peu près votrebarbaz
groupe. La norme consiste à définir toutes les clés privées appartenant aussl-cert
groupe et à placer les UID associés aux programmes devant accéder à ce groupe.ssl-cert
dont le script postinst, lors de l'installation, crée le groupe dont vous parlez. Je n'avais pas été au courantssl-cert
. Apache2 (installé sur mon hôte) recommandessl-cert
. Les différents forfaits Exim et Dovecot ne le font pas, mais Postfix (non installé sur mon hôte) dépend dessl-cert
. En raison de Apache, mon hôte a un groupe ssl-cert , mais ce groupe n’a pas encore de membres. Merci pour le conseil.Réponses:
Vous pouvez utiliser des listes de contrôle d'accès pour que le fichier puisse être lu par les personnes des deux groupes.
Maintenant , les deux
bar
et lesbaz
groupes peuvent lire le fichier.Par exemple, voici un fichier appartenant à bin: bin avec le mode 640.
Les
+
moyens il y a un ensemble ACL, donc nous allons jeter un coup d' oeil.Nous pouvons voir la ligne
group:sweh:r--
: cela signifie que les membres du groupesweh
peuvent la lire.Hé, c'est moi!
Et oui, je peux lire le fichier.
la source
Vous voudrez peut-être reconsidérer ces affirmations:
Pourquoi est-ce lourd de créer un nouveau groupe? Cela présente les avantages suivants par rapport aux ACL:
/usr/bin/bar
et/usr/bin/baz
, il est pertinent que ces deux programmes peuvent partager un fichier de configuration. Cela suggère que les programmes sont naturellement liés. Créer un nouveau groupe pour eux semblerait décrire une relation qui existe réellement et devrait déclencher un comportement (tel que les autorisations pour lire le fichier de configuration commun).Personnellement, je considère les ACL comme la solution à la main lourde ici, et les groupes comme la méthode Unix plus simple et traditionnelle.
la source
Je penserais que ce serait une utilisation typique des listes de contrôle d'accès (ACL). Ajoutez les deux utilisateurs (ou groupes) à la liste de contrôle d'accès du fichier de configuration:
Vous devrez peut-être d'abord installer le paquet acl.
la source
Rendre le mode du fichier
0660
(ou même0440
si l'écriture n'est pas requise) et la propriétébar:baz
. Ensuite, un processus peut accéder au fichier grâce aux autorisations de l’utilisateur, l’autre grâce aux autorisations du groupe. Cela fonctionne même sur les systèmes de fichiers où les ACL ne fonctionnent pas.la source
La "nouvelle" "voie" consiste à faire en sorte que toute la configuration soit gérée par un système de gestion de la configuration (type chef , marionnette ou ansible ). Peu importe alors que vous avez deux fichiers distincts mais identiques sur le serveur, car les deux sont une copie du fichier unique à partir du système de gestion de la configuration.
Le principal avantage de procéder ainsi est que votre configuration est versionnée (avec le reste de vos configurations) et que le déploiement d'un nouveau serveur identique ou presque identique devient si facile qu'il est impossible de l'automatiser.
(Pour mémoire, puisque vous n'utilisez pas la gestion de la configuration, j'utiliserais le système de groupe comme dans la réponse de @ drg).
la source