Wie kann ich Setup die Berechtigungen in Linux, so dass zwei Benutzer die gleiche SVN Arbeitskopie auf dem Server aktualisieren?

StackOverflow https://stackoverflow.com/questions/164597

  •  03-07-2019
  •  | 
  •  

Frage

Ihr Server verfügt sowohl über Subversion und Apache installiert, und das Apache Web-Verzeichnis ist auch eine Subversion-Arbeitskopie. Der Grund dafür ist, dass der einfache Befehl svn update /server/staging die letzte Quelle in den Staging-Server bereitstellen.

Apache öffentliches Web-Verzeichnis: /server/staging - (. Dies ist eine SVN Arbeitskopie)

Ich habe zwei Benutzer auf meinem Server, 'richard' und 'Austin'. Beide sind Mitglieder der ‚Entwickler‘ Gruppe. Ich rekursiv Festlegen von Berechtigungen auf dem / Server-Verzeichnis richard: Entwickler, mit "sudo chown -R richard: Entwickler / Server".

Ich habe dann die Berechtigungen zum Lesen, Schreiben und Ausführen für beide ‚richard‘ und die Gruppe ‚Entwickler‘.

So sicher, ‚austin‘ soll nun in der Lage sein, den svn update /server/staging Befehl zu benutzen? Allerdings, wenn er versucht, bekommt er den Fehler:

svn: Can't open file '/server/staging/.svn/lock': Permission denied

Wenn ich rekursiv den Besitzer / Server nach Austin ändern:. Entwickler, kann er den Befehl ausführt ganz gut, aber dann ‚richard‘ kann nicht

Wie behebe ich das Problem? Ich möchte mit einem post-commit Haken erstellen, um automatisch die Staging-Standort bereitstellen, wenn Dateien begangen werden, aber ich kann nicht einen Weg für die Arbeit für beide Benutzer sehen. Der Haken wäre:

/usr/bin/svn update /server/staging

Mit dem gleichen Benutzerkonto für beide von ihnen nicht wirklich eine akzeptable Lösung sein würde, und ich bin nicht von irgendeiner Weise bewusst den Befehl innerhalb des Haken als ‚root‘.

laufen

Jede Hilfe ist willkommen!

War es hilfreich?

Lösung

Verzeichnis Set-Gruppen-ID

Wenn das setgid-Bit auf einem Verzeichniseintrag festgelegt ist, Dateien in diesem Verzeichnis werden die Gruppenzugehörigkeit als das Verzeichnis haben, statt als die Gruppe des Benutzers, der die Datei erstellt wurde.

Dieses Attribut ist hilfreich, wenn mehrere Benutzer Zugriff auf bestimmte Dateien benötigen. Wenn die Benutzer festgelegt in einem Verzeichnis mit dem Setgid Attribute arbeiten dann alle in dem Verzeichnis erstellt Dateien, die von einem des Benutzer die Erlaubnis der Gruppe haben. Zum Beispiel kann der Administrator eine Gruppe namens spcprj erstellen und die Benutzer Kathy und Mark zur Gruppe spcprj hinzuzufügen. Das Verzeichnis spcprjdir kann mit dem Satz erstellt wird GID-Bit gesetzt und Kathy und Mark obwohl in verschiedenen primären Gruppen im Verzeichnis arbeiten können und haben vollen Zugriff auf alle Dateien in diesem Verzeichnis, aber noch nicht in der Lage sein, den Zugriff auf Dateien in jedem primären Gruppe der anderen .

Mit dem folgenden Befehl wird die GID Bit auf einem Verzeichnis fest:

chmod g+s spcprjdir

Die Verzeichnisliste des Verzeichnisses "spcprjdir":

drwxrwsr-x 2 kathy spcprj 1674 Sep 17 1999 spcprjdir

Die „s‚‘anstelle des Execute-Bit in den Gruppenberechtigungen bewirkt, dass alle Dateien in dem Verzeichnis geschrieben‚spcprjdir spcprj‘zu der Gruppe gehört‚‘.

edit: source = Linux-Dateien und Dateiberechtigungen

Andere Tipps

Ich würde einrichten svnserve die eine einfache Subversion-Server mit dem svn:// Protokoll ist. Sie können dies so einrichten, es unter seinem eigenen Benutzerkonto ausgeführt wird, dann würde das Repository nur von diesem einem Benutzer zugegriffen werden. Dieser Benutzer könnte dann die richtigen Berechtigungen hat svn update /server/staging auf einem post-commit auszuführen.

in Ihrem SVN Repo, können Sie ein ‚conf‘ Verzeichnis, in dem Sie Berechtigungen festlegen. Sie haben 3-Dateien gibt:

  • authz
  • passwd
  • svnserve.conf

Sie setzen in der authz Datei, die Benutzer haben, welche Art von Zugang, pro Benutzer oder pro Gruppe. Sie setzen Gruppen gibt, SVN Gruppen nicht Linux-Benutzergruppen (gehasht Zeilen sind Kommentare):

[groups]
# harry_and_sally = harry,sally
projectgroup = richard,austin

# [/foo/bar]
# harry = rw  -- user harry has read/write access
# * =  -- everybody have no access

# [repository:/baz/fuz]
# @harry_and_sally = rw  -- harry_and_sally group members have read/write access
# * = r  -- everyone has read access

[/server/staging]
@projectgroup = rw
* = r

Arbeit, um dieses Beispiel und stellen Sie Ihre Konfiguration. in der ‚passwd‘ Datei, die Sie Benutzer Passwörter einrichten. ausführen

cat passwd

Sie Datei mit Erläuterungen kommentiert erhalten, wie es eingerichtet werden.

Ich verwende WebDAV - alle SVN-Updates und Commits über Apache behandelt werden, und ich habe nie solche Probleme

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top