Auf meinem Server habe ich Verzeichnis /srv/svn
.
Ist es möglich, dieses Verzeichnis so einzustellen, dass es beispielsweise mehrere Gruppeneigentümer hat devFirmA
, devFirmB
und devFirmC
?
Der Punkt ist, ich möchte die subversion
Versionskontrolle verwalten mehrere Benutzer mehrere Repositories accross und ich weiß nicht , wie zu verschmelzen /srv/svn
, das Stammverzeichnis von Endlagern, Berechtigungen. Ich habe zum Beispiel drei Firmen, FirmA
, FirmB
und FirmC
. Nun innerhalb /srv/svn
ich drei Verzeichnisse erstellt haben, FirmA
, FirmB
, FirmC
und in ihnen Ich habe für jedes Projekt erstellt Repository und jetzt weiß ich nicht , wie die Erlaubnis Schema zu etablieren , da alle innerhalb elementes /srv/svn
von Besitz sind root:root
, was nicht in Ordnung ist, oder ich bin falsch?
quelle
Antworten:
Dies ist ein äußerst häufiges Problem, wenn ich es richtig verstehe und es ständig erlebe. Wenn ich ACLs für jedes triviale Gruppierungsproblem verwenden würde, hätte ich Tonnen von nicht verwaltbaren Systemen. Sie verwenden die bewährte Methode, wenn Sie es nicht anders können, nicht für diese Situation. Dies ist die Methode, die ich sehr empfehlen kann.
Zuerst müssen Sie Ihre umask auf 002 setzen, damit eine Gruppe mit sich selbst teilen kann. Normalerweise erstelle ich eine Datei wie
/etc/profile.d/firm.sh
und füge dann einen Testbefehl mit der umask hinzu.[ $UID -gt 10000 ] && umask 002
Als nächstes müssen Sie die Verzeichnisse auf ihre jeweiligen Gruppen einstellen,
Schließlich müssen Sie das SGID-Bit richtig einstellen, damit die Gruppe immer auf der von Ihnen eingestellten bleibt. Dies verhindert, dass eine geschriebene Datei auf die GID des Schreibers gesetzt wird.
Nun zum Schluss, wenn Sie verhindern möchten, dass andere Benutzer auf die Verzeichnisse zugreifen.
quelle
svnadmin
:sudo usermod -a -G FirmA,FirmB,FirmC svnadmin
Dies fügtsvnadmin
all diesen Gruppen hinzu. Da für die Dateien in all diesen Gruppen "Gruppenschreiben" aktiviert ist (chmod 664
haben dies getan), sind Sie und firmX die einzigen Schreiber von Dateien, die firmX gehören.find /srv/svn/FirmA -type f -print0 | xargs -0 chmod ug+rw,o+r,o-wx
Sie können nur eine Gruppe als Eigentümer haben .
Mithilfe von Zugriffssteuerungslisten können Sie jedoch Berechtigungen für andere Gruppen definieren.
Überprüfen Sie, ob Sie die ACL installiert haben, die den Befehl ausgibt
getfacl
. Wenn auf Ihrem System keine ACL installiert ist, installieren Sie die Befehlszeilentools, die imacl
Paket enthalten sind, mit:sudo apt-get install acl
Mit
getfacl
können Sie die ACL-Informationen eines Verzeichnisses oder einer anderen Datei lesen und mitsetfacl
einer Datei Gruppen hinzufügen.Beispielsweise:
Fügt die Gruppe
devFirmB
mit r ead, w rite, e x ecute Berechtigungen Verzeichnis/srv/svn
.Wenn Dateien, die in diesem Verzeichnis erstellt wurden, auch mehreren Gruppen gehören sollen, legen Sie die ACL als Standard-ACL fest. Der
X
Eintrag in der Standardgruppe bedeutet "Ausführung zulassen, wenn sie vom Eigentümer (oder einer anderen Person) ausgeführt werden kann".quelle
Es ist nicht möglich, dass eine Datei mehreren Linux-Gruppen mit herkömmlichen Unix-Berechtigungen gehört. (Dies ist jedoch mit ACL möglich .)
Aber Sie könnten die folgende Abhilfe verwenden und eine neue Gruppe erstellen (zB genannt
devFirms
) , die alle Benutzer der Gruppen umfassen wirddevFirmA
,devFirmB
unddevFirmC
.Sie erstellen neue Benutzergruppen mit:
Möglicherweise müssen Sie zuerst installieren
id-utils
, um denlid
Befehl -command zu erhalten:Anschließend können Sie die folgende Codezeile ausführen, um alle Benutzer von
SOURCEGROUP
auf einfache Weise zu kopierenTARGETGROUP
. Natürlich müssen Sie den Befehl für jede Gruppe, die Sie kopieren möchten, einmal ausführen. Vergessen Sie nicht, die großgeschriebenen Platzhalter durch die tatsächlichen Gruppennamen zu ersetzen.In Ihrem Fall müssten Sie also den Befehl ausführen (alle Zeilen auf einmal):
Beachten Sie, dass diese Befehle nur alle Benutzer kopieren, die derzeit Mitglieder der Quellgruppen sind. Jeder Benutzer, der später hinzugefügt wird, muss mit dem
adduser
Befehl auch manuell zu Ihrer allgemeinen Gruppe hinzugefügt werden . Ersetzen Sie einfach noch einmal die großgeschriebenen Platzhalter durch den tatsächlichen Benutzer- und Gruppennamen (devFirms
):Vielen Dank an Justin Ethier für seine Antwort bei Unix & Linux.SE: Alle Benutzer einer Gruppe zu einer anderen Gruppe hinzufügen?
quelle
Nein das ist nicht möglich.
Jede Datei (und damit auch Verzeichnisse) kann nur einen Benutzer und eine Gruppe haben.
quelle
Um mehreren Gruppen oder Benutzern unterschiedliche Rechte zu erteilen, verwenden Sie die folgenden Befehle (Getestet auf RHEL 6 und 7):
So legen Sie einen neuen Eigentümer für die Gruppe fest:
So überprüfen Sie die aktuellen ACL-Einstellungen:
quelle