web-dev-qa-db-fra.com

Linux, Pourquoi est-ce que je ne peux pas écrire alors que j'ai des permissions de groupe?

Je souhaite créer un fichier dans un répertoire appartenant au groupe de personnel dont je suis membre. Pourquoi ne puis-je pas faire cela?

bmccann@bmccann-htpc:~$ ls -l /usr/local/lib/R/
total 4
drwxrwsr-x 2 root staff 4096 2010-07-31 16:21 site-library
bmccann@bmccann-htpc:~$ id -nG bmccann
bmccann adm dialout cdrom plugdev staff lpadmin admin sambashare
bmccann@bmccann-htpc:~$ touch /usr/local/lib/R/site-library/tmp
touch: cannot touch `/usr/local/lib/R/site-library/tmp': Permission denied
92
Ben McCann

Avez-vous déconnecté et reconnecté après avoir apporté les modifications de groupe? Voir:
Réponse du super utilisateur avec échec des autorisations tactiles

177
AdamJonR

Pourquoi l'utilisateur Linux ne peut-il pas modifier les fichiers du groupe dont il fait partie?

J'utilise Ubuntu 12.04 et j'ai eu le même problème lorsqu'un utilisateur ne peut pas écrire dans un fichier auquel il est autorisé à accéder à un groupe. Par exemple:

whoami                                        //I am user el
  el                                            

touch /foobar/test_file                       //make a new file

Sudo chown root:www-data /foobar/test_file    //User=root  group=www-data

Sudo chmod 474 /foobar/test_file              //owner and others get only read, 
                                              //group gets rwx


Sudo groupadd www-data                        //create group called www-data    

groups                                        //take a look at the groups and see
 www-data                                     //www-data exists.

groups el                                     //see that el is part of www-data
  el : www-data                               

Redémarrez le terminal maintenant pour vous assurer que les utilisateurs Et les groupes ont pris effet. Connectez-vous en tant que el.

vi /foobar/test_file                          //try to edit the file.

Produit l'avertissement:

Warning: W10: Warning: Changing a readonly file"

Quoi? J'ai tout fait correctement, pourquoi ça ne marche pas?

Réponse:

Faites un redémarrage complet de l'ordinateur. Arrêter le terminal n'est pas suffisant pour résoudre ces problèmes. 

Je pense que ce qui se passe si Apache2 utilise également le groupe www-data. La tâche empêchait donc les utilisateurs et les groupes d'être correctement appliqués. Non seulement vous devez vous déconnecter, mais vous devez également arrêter et redémarrer tous les services qui utilisent votre groupe. Si un redémarrage ne l'obtient pas, vous avez de plus gros problèmes.

11
Eric Leschinski

J'ai eu le même problème, vérifier si le dossier a plus de règles ACL ou pas!

Si vous pouvez voir + (signe plus) lorsque vous répertoriez un dossier, cela signifie que celui-ci a des règles d'accès spéciales. Par exemple:

[user_in_Apache_group@web02 html]$ ls -l
total 16
drwxrwxr-x  16 Apache apache 4096 Sep  4 13:46 ilias
drwxrwxr-x+ 15 Apache apache 4096 Sep  4 13:46 ilias5

Voir la permission:

[user_in_Apache_group@web02 html] getfacl ilias5
# file: ilias5
# owner: Apache
# group: Apache
user::rwx
user:user_in_Apache_group:r-x
group::rwx
mask::rwx
other::r-x

Cela signifie donc que mon utilisateur (user_in_Apache_group) n’a pas d’autorisation en écriture pour ce dossier.

La solution est ce que @techtonik a dit, ajoutez l'autorisation d'écriture pour l'utilisateur:

[user_in_Apache_group@web02 html]$ Sudo setfacl -m u:user_in_Apache_group:rwx ./ilias5

Vérifiez à nouveau l'autorisation:

[user_in_Apache_group@web02 html] getfacl ilias5
...
user:user_in_Apache_group:rwx
...

J'espère que ça aide. ;)

7
Laszlo Lugosi

Utiliser les listes de contrôle d'accès Linux (ACL) - c'est une version plus fine du système de permission,

setfacl -R -m 'group:staff:rwx' -m 'd:group:staff:rwx' /usr/local/lib/R/

Ceci définit à la fois les droits actifs pour le répertoire et les droits par défaut pour tout ce qui est créé dans.

Cela ne fonctionne pas sans reconnexion si vous venez de vous ajouter au groupe staff, mais vous pouvez définir l'autorisation uniquement pour vous-même pour la session en cours.

6
anatoly techtonik

J'ai eu un problème lorsqu'un utilisateur ne pouvait pas accéder au répertoire /foo/bar/baz même s'il disposait d'autorisations, car il n'avait pas d'accès au répertoire bar.

5
Kolyunya

Vérifiez si votre répertoire parent est autorisé avant d'ajouter du contenu à ce fichier.

Sudo chmod -R 777 /yourDir/file.log
0
Mani P