web-dev-qa-db-fra.com

Les autorisations de groupe permettent, mais obtiennent toujours l'autorisation refusée

J'ai une partition ext4 et j'ai défini le propriétaire du groupe pour tous les sous-directeurs sur mon groupe:

# chgrp -R mygroup /mount/abc
# chmod -R g+swrx /mount/abc

Mon utilisateur fait partie de ce groupe. À l'intérieur de cette partition se trouve un dossier qui appartient à l'utilisateur "personne" et maintenant au groupe "mon groupe". Mon utilisateur fait partie de 'mon groupe'. Voici un ls -l:

myuser@Host:/mount/abc/folder$ ls -l
drwxr-sr-x 2 nobody      mygroup      4096 Apr 25 12:08 ./
drwxrwsrwx 6 nobody      mygroup      4096 Apr 24 07:57 ../
-rw-r-xr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

myuser@Host:/mount/abc/folder$ groups myuser
myuser : mygroup {... a list of other groups also...} 

myuser@Host:/mount/abc/folder$ rm test.png 
rm: remove write-protected regular file ‘test.png’? y
rm: cannot remove ‘test.png’: Permission denied

myuser@Host:/mount/abc/folder$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied

Notez que je ne peux ni supprimer ni créer un fichier appartenant à un groupe auquel appartient mon utilisateur.

Je suppose que je ne comprends pas bien comment fonctionnent les groupes. Je pensais que si vous faisiez partie d'un groupe, vous héritez des autorisations de ce groupe. Est-ce que je fais quelque chose de mal?

Merci

40
Chaos

Avez-vous récemment ajouté cet utilisateur à ce groupe sans vous connecter/déconnecter entre? Ensuite, "groupes" affichera le groupe mais l'utilisateur ne dispose pas encore des autorisations de groupe.

Vous pouvez montrer vos groupes efficaces en utilisant

$ id

Par exemple, si j'ajoute mon utilisateur psau groupe faxet que je tape

$ id

il ne montre pas le groupe faxname__, mais

$ groups ps

affiche faxname__.

Faire suà votre propre utilisateur vous donne la nouvelle affiliation au groupe:

$ su ps
$ id

La sortie contient maintenant aussi faxname__.

61
peschü

La méthode que vous avez utilisée semble être correcte. Je viens juste d'essayer de le reproduire, et cela a très bien fonctionné.

Je ne suis pas sûr s'il y a une faute de frappe, mais il y a un léger problème avec la commande. Il n'est pas nécessaire que "mygroup" soit mentionné ici. Les oeuvres suivantes

# chmod -R g+swrx /mount/abc

Même si vous pouvez supprimer le bit s, il suffit de faire g+rwx. Une fois que vous avez modifié les autorisations et que vous avez modifié ls -l, les privilèges correspondants doivent s'afficher.

8
Vivek Kapoor

Vous ne pouvez pas supprimer le fichier car le groupe mygroupne dispose pas d'autorisations en écriture sur le fichier test.png ainsi que sur le dossier. Pour que les opérations d'écriture fonctionnent sur le fichier, les autorisations de fichier doivent ressembler à ceci:

-rw-rwxr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

Si vous regardez de plus près le format de permission

duuugggooo

Les trois premiers espaces réservés uuusont user r ead, w rite et e x ecute. Les trois prochains espaces réservés gggconcernent le groupe et ooopour les autres. L'extrait posté par le groupe OP ne contient pas l'autorisation w rite.

2
Ashoka Lella

Les répertoires doivent ouvrir x bits (pour les répertoires, ce bit est considéré comme un bit de recherche) pour pouvoir être ouverts. J'utilise donc tree pour que je puisse obtenir uniquement le jeu de dossiers et éviter le cauchemar de tous les fichiers en tant qu'exécutables (l'option pour tree est -d List directories only.):

Sudo tree -faid /mount/abc | xargs -L1 -I{} Sudo chmod 755  "{}"

Attention !!! vous devriez avoir ceci en considérations:

  • utiliser chmod ou chown récursif sur le répertoire racine / ou les répertoires système détruira votre système d'exploitation (en réalité, tout ce qui est récursif sur le répertoire / ou les répertoires système est dangereux)

  • ce n'est pas une bonne pratique de sécurité pour définir le volume des autorisations comme ça

2
Eduard Florinescu

Pour ajouter à la réponse acceptée (étant donné que je ne peux pas encore commenter):

Si vous utilisez un logiciel tel que BitVise pour créer une connexion SSH sur votre serveur, la simple fermeture et réouverture d'un terminal ne sera pas considérée comme une connexion ou déconnexion. Il va faire des choses comme recharger votre ~/.bashrc, mais pas effectuer les mises à jour réelles du groupe (si vous avez ajouté le groupe dans votre session "login"). Pour que cela prenne effet, vous devez vous déconnecter complètement et vous reconnecter avec votre clé/identifiant SSH.

1
Figidon