Donner des autorisations d'écriture à plusieurs utilisateurs sur un dossier dans Ubuntu

80

Il y a un dossier qui appartient à l'utilisateur tomcat6:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

Je veux autoriser un autre utilisateur (ruser) à écrire des autorisations sur le dossier du document. Les deux utilisateurs (tomcat6 et ruser) n'appartiennent pas au même groupe. J'ai essayé d'utiliser setfacl:

sudo setfacl -m  u:ruser:rwx document

mais cela me donne une setfacl: document: Operation not supportederreur. Aidez-moi gentiment.

TheVillageIdiot
la source

Réponses:

144

Il existe deux façons de procéder: définissez le répertoire sur "monde" en écriture ou créez un nouveau groupe pour les deux utilisateurs et créez le répertoire en écriture pour ce groupe.

De toute évidence, rendre le monde accessible en écriture est une mauvaise chose, alors la deuxième option est préférable.

Les utilisateurs de Linux peuvent appartenir à plusieurs groupes. Dans ce cas, vous voulez créer un nouveau groupe, appelons-le tomandruser:

sudo groupadd tomandruser

Maintenant que le groupe existe, ajoutez-y les deux utilisateurs:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

Maintenant, tout ce qui reste à faire est de définir les autorisations sur le répertoire:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

Désormais, seuls les membres du groupe tomandruser peuvent lire, écrire ou exécuter quoi que ce soit dans le répertoire. Notez l'argument -R dans les commandes chmod et chgrp: cela leur dit de rentrer dans chaque sous-répertoire du répertoire cible et de modifier tous les fichiers et répertoires qu'il trouve.

Vous pouvez également vouloir changer 770 en quelque chose comme 774si vous voulez que les autres puissent lire les fichiers, 775si vous voulez que les autres lisent et exécutent les fichiers, etc. dans.

Si vous souhaitez également (vous le souhaitez probablement) que les nouveaux fichiers créés dans le répertoire par l'un des utilisateurs soient automatiquement écrits par les autres membres du groupe, cliquez ici .

Andrew Lambert
la source
2
Vous voudrez probablement également définir l'indicateur set-group-ID pour les répertoires, afin que les nouveaux fichiers et sous-répertoires soient automatiquement possédés par le groupe de droite:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio
8
Je voudrais éviter d'utiliser chmod 770, 775 ou autre. Cela dérange avec les autorisations de tous les fichiers. Utilisez plutôt quelque chose comme chmod -R g+wpour ajouter des autorisations d’écriture sans tout gâcher.
Christian Varga
2
Si un utilisateur crée un nouveau fichier à cet endroit (par exemple, mysql by SELECT INTO OUTFILE), il attribue des autorisations à son groupe principal ( mysqldans ce cas) et le fichier n'est de toute façon pas accessible à un autre utilisateur. Comment résoudre ce problème?
Olexa
2
Que se passe-t-il si vous souhaitez accorder aux utilisateurs un accès en écriture à un dossier sans changer la propriété du dossier, par exemple si vous ne voulez pas gâcher les autorisations d'Apache sur un dossier public_html?
codecowboy
2
Remarque: "Les modifications d'affectation de groupe ne prendront effet que lorsque les utilisateurs se déconnecteront puis se reconnecteront." J'ai raté ça :)
Vladimir Vukanac
3

Exemple de script montre un exemple pour w (write)/ r (read) / x (execute)autoriser le chemin de dossier donné /path/to/the/directorypour USER1et USER2. Si vous souhaitez donner uniquement un accès en écriture, veuillez remplacer rwxpar w.


#!/bin/bash

# Block others and people in the same group to do read/write/execute on give folder:    
sudo chmod 700 /path/to/the/directory 

#Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx  /path/to/the/directory 

#Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx  /path/to/the/directory 
alper
la source