Autoriser un utilisateur à lire les répertoires personnels d'autres utilisateurs


10

Je suis nouveau dans l'administration système et j'ai une requête liée aux autorisations. J'ai un groupe appelé administration. A l' intérieur du administrationgroupe, j'ai les utilisateurs user1, user2, user3, superuser. Tous les utilisateurs sont dans le administrationgroupe. Maintenant, je dois donner des autorisations à l'utilisateur superuserpour pouvoir afficher le /homerépertoire des autres utilisateurs. Cependant, je ne veux pas user1, user2, user3pour voir la maison de tout autre utilisateur autre que lui - même. (Autrement dit, user1devrait être en mesure de voir seulement user1la maison et ainsi de suite).

J'ai créé les utilisateurs et les groupes et affecté tous les utilisateurs au groupe. Comment dois-je spécifier les autorisations pour le superusermoment?

En d'autres termes, je pense à avoir deux groupes (disons NormalUserset Superuser). Le NormalUsersgroupe aura les utilisateurs user1, user2et user3. Le Superusergroupe n'aura que l'utilisateur Superuser. Maintenant, j'ai besoin Superuserd'avoir le plein accès aux fichiers des utilisateurs du groupe NormalUsers. Est-ce possible sous Linux?



Dans ma question précédente, j'étais plus soucieux de modifier le fichier / etc / sudoers et de faire de l'utilisateur un administrateur partiel. Ici, j'essaie de modifier les autorisations d'un utilisateur local. Oui, c'est similaire à ce que j'essaie de réaliser, mais j'essaie d'approcher une méthode différente ici.
Ramesh

Réponses:


10

Si les utilisateurs sont coopératifs, vous pouvez utiliser des listes de contrôle d'accès (ACL). Définissez une ACL sur le répertoire personnel de user1(et vos amis) qui accorde un accès en lecture à superuser. Définissez également l'ACL par défaut pour les fichiers nouvellement créés, ainsi que l'ACL sur les fichiers existants.

setfacl -R -m user:superuser:rx ~user1
setfacl -d -R -m user:superuser:rx ~user1

user1 peut modifier l'ACL sur ses fichiers s'il le souhaite.

Si vous souhaitez toujours donner un superuseraccès en lecture aux user1fichiers de, vous pouvez créer une autre vue des répertoires personnels des utilisateurs avec différentes autorisations, avec bindfs .

mkdir -p ~superuser/spyglass/user1
chown superuser ~superuser/spyglass
chmod 700 ~superuser/spyglass
bindfs -p a+rX-w ~user1 ~superuser/spyglass/user1

Les fichiers accessibles via ~ superuser / spyglass / user1 sont lisibles par tous. Autre que les autorisations, ~superuser/spyglass/user1est une vue du user1répertoire personnel de. Puisque superuserc'est le seul utilisateur qui peut y accéder ~superuser/spyglass, seul superuserpeut en bénéficier.


Sur mon système, les autorisations et le nom d' utilisateur sont permutés: setfacl -R -m user:superuser:rx ~user1.
Aurélien Ooms

10

Vous pouvez utiliser des ACL pour accorder l'accès à un répertoire particulier à un groupe arbitraire.

Par exemple, si vous exécutez setfacl -m g:dba:rwx /home/foo, les membres du groupe dba disposeront des autorisations rwx, quel que soit le groupe propriétaire du répertoire.

Vous souhaiterez probablement également définir l'ACL "par défaut" (l'ACL pour les objets nouvellement créés dans le répertoire) pour inclure également cette autorisation.


oui, exactement .. J'ai découvert la même chose mais je ne sais toujours pas si c'est une bonne idée d'accorder des ACL sur le serveur pour les utilisateurs LDAP.
Ramesh

@Ramesh Eh bien, si ce sont des utilisateurs du système (parce que vous utilisez nss-ldap, sssd, etc.), je ne sais pas pourquoi ce ne serait pas OK.
derobert

J'essayais de reproduire cela dans le banc d'essai. Lorsque je me connecte en tant qu'utilisateur (par exemple foo), je vois un message d'avertissement comme "les autorisations doivent être définies sur 644". Je crois que l'avertissement peut être ignoré. Mais, je ne veux pas que les utilisateurs du laboratoire sachent que leurs comptes d'utilisateurs ont été compromis. Quand je change le rwx en juste r dans la commande setfacl, je ne peux pas voir le répertoire du foo.
Ramesh

2
@Ramesh Vous avez besoin de + x pour parcourir les répertoires. Je ne sais pas ce qui vous dit qu'un répertoire devrait être 644, c'est idiot, il devrait être 755 ou similaire. Mais de toute façon, l'utilisateur verra un + dans le champ d'autorisation de ls et pourra exécuter getfacl pour le voir - ce n'est pas secret.
derobert

D'accord, je recevais le message d'avertissement, le répertoire $ HOME de l'utilisateur doit appartenir à l'utilisateur et ne pas être accessible en écriture aux autres utilisateurs. J'ai supprimé l'autorisation d'écriture dans la commande setacl et maintenant je ne vois pas le message d'avertissement.
Ramesh

0

Malheureusement, il n'y a vraiment aucun moyen de le faire directement sur Linux vanilla.

Vous pourrez peut-être créer un nouveau groupe dans sudoers pour les admins partiels avec une liste blanche de commandes acceptables que vous souhaitez leur permettre de s'exécuter.

Cependant, pour obtenir exactement ce que vous demandez, vous devez utiliser Apparmor ou SELinux pour obtenir ce que vous voulez. Malheureusement, aucun de ces outils n'est facile à configurer et à utiliser, et les exemples sont bien en dehors de la portée d'une réponse rapide ici.


1
Linux prend en charge les ACL depuis un certain temps maintenant. Les ACL vous le permettent.
derobert

Oui, je viens de trouver cette solution et de mettre à jour la réponse. Cependant, je ne sais toujours pas s'il peut être utilisé sur le serveur et cela aussi pour les utilisateurs LDAP.
Ramesh

@derobert D'après ce que je comprends, il est impossible de donner des autorisations de niveau racine à quelqu'un via sudo tout en utilisant simultanément des ACL pour limiter l'accès. Vous devez utiliser SELinux ou un autre MAC pour y parvenir.
Swiss

1
Je pense que lorsque OP dit que l'utilisateur "superutilisateur", cela signifie littéralement - pas root.
derobert
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.