Sur mon serveur, j'ai un répertoire /srv/svn
.
Est-il possible de définir ce répertoire pour avoir plusieurs propriétaires de groupe, par exemple devFirmA
, devFirmB
et devFirmC
?
Le point est, je veux subversion
contrôler la version gérer plusieurs utilisateurs sur plusieurs référentiels et je ne sais pas comment fusionner /srv/svn
, le répertoire racine des référentiels, les autorisations. J'ai, par exemple, trois entreprises FirmA
, FirmB
et FirmC
. Maintenant, à l' intérieur , /srv/svn
je l' ai créé trois répertoires, FirmA
, FirmB
, FirmC
et à l' intérieur eux , je l' ai créé pour référentiel chaque projet et maintenant je ne sais pas comment établir système d'autorisation puisque tous elementes intérieur /srv/svn
appartiennent à root:root
, ce qui est correct, ou suis - je faux?
la source
Réponses:
Il s'agit d'un problème extrêmement courant, si je le comprends bien et que je le rencontre constamment. Si j'utilisais des listes de contrôle d'accès pour chaque problème de regroupement trivial, j'aurais des tonnes de systèmes ingérables. Ils utilisent les meilleures pratiques lorsque vous ne pouvez pas le faire autrement, pas pour cette situation. C'est la méthode que je recommande fortement.
Vous devez d'abord définir votre umask sur 002, afin qu'un groupe puisse partager avec lui-même. Je crée généralement un fichier comme
/etc/profile.d/firm.sh
, puis j'ajoute une commande de test avec l'umask.[ $UID -gt 10000 ] && umask 002
Ensuite, vous devez définir les répertoires dans leurs groupes respectifs,
Enfin, vous devez définir correctement le bit SGID, afin que le groupe reste toujours celui que vous avez défini. Cela empêchera un fichier écrit d'être défini sur le GID de l'auteur.
Maintenant enfin si vous voulez empêcher les autres utilisateurs d'accéder aux répertoires.
la source
svnadmin
:sudo usermod -a -G FirmA,FirmB,FirmC svnadmin
Cela s'ajouterasvnadmin
à tous ces groupes. Étant donné que les fichiers de tous ces groupes ont activé l'écriture de groupe (c'estchmod 664
ce que vous avez fait), vous, ainsi que firmX, serez les seuls auteurs de fichiers appartenant à firmX.find /srv/svn/FirmA -type f -print0 | xargs -0 chmod ug+rw,o+r,o-wx
Vous ne pouvez avoir qu'un seul groupe en tant que propriétaire .
Cependant, en utilisant des listes de contrôle d'accès, vous pouvez définir des autorisations pour d'autres groupes.
Vérifiez si ACL est installé en émettant la commande
getfacl
. Si votre système n'a pas installé ACL, installez les outils de ligne de commande qui sont dans leacl
package avec:sudo apt-get install acl
Avec
getfacl
vous pouvez lire les informations ACL d'un répertoire ou d'un autre fichier, et avecsetfacl
vous pouvez ajouter des groupes à un fichier.Par exemple:
Ajoute le groupe
devFirmB
avec r ead, w rite, e x autorisations ecute au répertoire/srv/svn
.Si vous souhaitez également que les fichiers créés dans ce répertoire appartiennent à plusieurs groupes, définissez l'ACL comme ACL par défaut. L'
X
entrée dans le groupe par défaut signifie «autoriser l'exécution si exécutable par le propriétaire (ou toute autre personne)».la source
Il n'est pas possible d'avoir un fichier appartenant à plusieurs groupes Linux avec des autorisations Unix traditionnelles. (Cependant, c'est possible avec ACL .)
Mais vous pouvez utiliser la solution de contournement suivante et créer un nouveau groupe (par exemple appelé
devFirms
) qui inclura tous les utilisateurs des groupesdevFirmA
,devFirmB
etdevFirmC
.Vous créez de nouveaux groupes d'utilisateurs avec:
Tout d'abord, vous devrez peut-être installer
id-utils
pour obtenir lalid
commande-:Ensuite , vous pouvez exécuter la ligne de code suivante pour copier facilement tous les utilisateurs de
SOURCEGROUP
àTARGETGROUP
. Bien sûr, vous devez exécuter la commande une fois pour chaque groupe que vous souhaitez copier. N'oubliez pas de remplacer les espaces réservés capitalisés par les noms de groupe réels.Donc, dans votre cas, vous devrez exécuter la commande (toutes les lignes à la fois):
Notez que ces commandes copient uniquement tous les utilisateurs qui sont actuellement membres des groupes source. Chaque utilisateur qui sera ajouté plus tard devra également être ajouté manuellement à votre groupe commun avec la
adduser
commande. Remplacez encore une fois les espaces réservés en majuscule par le nom d'utilisateur et de groupe réel (devFirms
):Merci à Justin Ethier pour sa réponse sur Unix & Linux.SE: Ajouter tous les utilisateurs d'un groupe à un autre groupe?
la source
Non, ce n'est pas possible.
Chaque fichier (et donc aussi les répertoires) ne peut avoir qu'un seul utilisateur et un seul groupe.
la source
Afin de fournir des droits différents à plusieurs groupes ou utilisateurs, utilisez les commandes suivantes (testées sur RHEL 6 et 7):
Pour faire un nouveau propriétaire du groupe:
Pour vérifier les paramètres actuels d'ACL:
la source