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
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
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.
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. ;)
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.
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
.
Vérifiez si votre répertoire parent est autorisé avant d'ajouter du contenu à ce fichier.
Sudo chmod -R 777 /yourDir/file.log