Il existe deux manières de procéder :définissez le répertoire sur "monde" accessible en écriture ou créez un nouveau groupe pour les deux utilisateurs et rendez le répertoire accessible en écriture à ce groupe.
Évidemment, le rendre inscriptible par le monde entier est une mauvaise chose, donc la deuxième option est préférable.
Les utilisateurs de Linux peuvent appartenir à plusieurs groupes. Dans ce cas, vous souhaitez créer un tout 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
Il ne reste plus qu'à définir les permissions 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 des commandes chmod et chgrp :cela leur indique de parcourir chaque sous-répertoire du répertoire cible et de modifier chaque fichier et répertoire qu'il trouve.
Vous pouvez également remplacer 770 par quelque chose comme 774
si vous voulez que d'autres puissent lire les fichiers, 775
si vous voulez que d'autres lisent et exécutent les fichiers, etc. Les changements d'affectation de groupe ne prendront effet que lorsque les utilisateurs se déconnecteront et se reconnecteront.
Si vous voulez aussi (vous voulez probablement) que les nouveaux fichiers créés dans le répertoire par l'un des utilisateurs soient automatiquement inscriptibles par les autres membres du groupe, alors voyez ici.
Le script suivant montre un exemple pour donner r (read) / w (write) / x (execute)
autorisation pour le chemin de dossier donné /path/to/the/directory
pour USER1
et USER2
. Si vous souhaitez donner uniquement un accès en écriture, veuillez remplacer rwx
avec w
.
#!/bin/bash
# Block others and people in the same group to do `r/w/x` on the 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
Réponse avisée :
- J'aime placer mon dossier partagé dans un endroit central. Pas dans le dossier personnel de quelqu'un d'autre, mais
/srv/common
ou encore (pour des chemins impitoyablement courts...)/repo
ou similaire. - définissez un nouveau groupe (généralement pour tous les utilisateurs locaux, que vous souhaitez rejoindre. Cependant, certains utilisateurs techniques comme
wwwuser
ne le sont pas , sauf raison valable) root
est bon d'avoir en tant que membre, également d'avoir un propriétaire neutre de ce dossier partagé- setGid est très important, de sorte que les nouveaux fichiers deviennent des membres communs du groupe, donc
frank:common
, pasfrank:frank
sudo groupadd -f common
usermod -aG common root
usermod -aG common frank
usermod -aG common mike
# sort of hack for instant group refresh w/o logout
# superuser.com/a/345051
su - frank
# sanity test1:
cat etc/group | grep common
common:x:1008:root,frank,mike
# sanity test2:
groups
frank adm cdrom ... common
sudo chown root:common /repo
# (if you have shareable stuff setting somewhere else,
# copy it to here now)
# no right to the world, the right rights to user and group
chmod -R ug+rwXs,o-rwx $dest
# why uppercase X ? → unix.stackexchange.com/a/416885
# why s ? → superuser.com/a/277785
# as there is no such thing as an uppercase S (directories only)
# settings the s attribute on preexisting content would have to happen
# like so:
# find /repo -type d -exec chmod g+s {} \\\;