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

43

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 appartenant à 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

le chaos
la source
Il semble que le triade de permissions soit propriétaire-groupe-monde. Ci-dessus, vous pouvez voir drwxr-sr-x pour le répertoire. Donc, la permission du groupe est rs. Il semble que chmod -R n'ait pas défini de manière récursive les autorisations sur rwx. Lorsque je retourne le bit w pour l'autorisation de groupe du dossier, cela fonctionne.
Chaos

Réponses:

70

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 fax, mais

$ groups ps

montre fax.

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

$ su ps
$ id

La sortie contient maintenant aussi fax.

peschü
la source
1
C'est vraiment utile de savoir. Surtout la partie 'sudo <nom d'utilisateur>'.
Chaos
4
Log in / out est tellement évident que j'ai raté le point, merci beaucoup mon pote!
nicolallias
1
@ peschü je l'ai sudoet l'utilise régulièrement. L'erreur que je vous ai montrée est de se plaindre que la commande ubuntu(c'est-à-dire le nom d'utilisateur) n'est pas une commande reconnue. Je ne pense pas que votre suggestion soit syntaxiquement correcte - cela fonctionne peut-être dans votre cas, car psil s’agit également d’une commande et d’un nom d’utilisateur.
Beldaz
1
@beldaz oh non! Vous avez raison! c'est syntaxiquement correct su <username>. J'ai édité le post.
peschü
1
putain l'ancien se déconnecter / se connecter à nouveau travail à chaque fois.
Steampunkery
9

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

Je ne sais pas 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, vous pouvez supprimer le sbit, il suffit de faire g+rwx. Une fois que vous avez modifié les autorisations, vous devez ls -lafficher les privilèges correspondants.

Vivek Kapoor
la source
2
J'ai enlevé la faute de frappe avec le nom du groupe. Le répertoire a les permissions wrx dessus quand vous faites ls -l, et il n’appartient à personne: mygroup. Même si mon utilisateur fait partie de mon groupe, ce dernier ne peut toujours pas créer / supprimer de fichiers. J'espère que cela à du sens.
Chaos
3

Vous ne pouvez pas supprimer le fichier car le groupe mygroupne dispose pas d'autorisations en écriture sur le fichier test.pngainsi 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 utilisateur r ead, w rite et e x ecute. Les trois prochains espaces réservés gggsont destinés au groupe et oooaux autres. Dans l'extrait publié par le groupe OP manque le w rite permission.

Ashoka Lella
la source
2

Pour ajouter à la réponse acceptée (car 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. Cela fera des choses comme recharger votre ~/.bashrc, mais n'effectuera pas les mises à jour réelles du groupe (si vous avez ajouté le groupe dans votre session "de connexion"). Pour que cela prenne effet, vous devez vous déconnecter complètement et vous reconnecter avec votre clé / identifiant SSH.

Figidon
la source
2

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 est pour tree -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 un /répertoire racine ou des répertoires système détruira votre système d'exploitation (en réalité, tout ce qui est récursif sur un /répertoire ou des 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

Eduard Florinescu
la source
1
Grand merci! Les mots "Les répertoires ont besoin de x bits définis" ont résolu mon problème! J'ai fait "sudo chmod g + x <chemin du répertoire parent>" et cela a fonctionné.
kinORnirvana le