Come posso impostare le autorizzazioni in Linux in modo che due utenti possano aggiornare la stessa copia di lavoro SVN sul server?

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

  •  03-07-2019
  •  | 
  •  

Domanda

Sul mio server sono installati sia Subversion che Apache e anche la directory web Apache è una copia funzionante di Subversion. Il motivo è che il semplice comando svn update / server / staging distribuirà la fonte più recente al server di staging.

Directory web pubblica Apache: / server / staging & # 8212; & nbsp; (Questa è una copia di lavoro SVN.)

Ho due utenti sul mio server, "richard" e "austin". Entrambi sono membri del gruppo "sviluppatori". Ho impostato in modo ricorsivo le autorizzazioni sulla directory / server su richard: sviluppatori, usando " sudo chown -R richard: sviluppatori / server " ;.

Ho quindi impostato le autorizzazioni per leggere, scrivere ed eseguire sia il gruppo "richard" che il gruppo "sviluppatori".

Quindi sicuramente "austin" dovrebbe ora essere in grado di usare il comando svn update / server / staging ? Tuttavia, quando ci prova, ottiene l'errore:

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

Se cambio ricorsivamente il proprietario di / server in austin: sviluppatori, può eseguire il comando bene, ma 'richard' non può.

Come posso risolvere il problema? Voglio creare un hook post-commit con per distribuire automaticamente il sito di staging quando i file sono impegnati, ma non riesco a vedere un modo per farlo funzionare per entrambi gli utenti. Il gancio sarebbe:

/usr/bin/svn update /server/staging

L'uso dello stesso account utente per entrambi non sarebbe davvero una soluzione accettabile e non sono a conoscenza di alcun modo per eseguire il comando all'interno dell'hook come 'root'.

Qualsiasi aiuto è apprezzato!

È stato utile?

Soluzione

ID gruppo set directory

Se è impostato il bit setgid su una voce della directory, i file in quella directory avranno la proprietà del gruppo come directory, anziché il gruppo dell'utente che ha creato il file.

Questo attributo è utile quando diversi utenti hanno bisogno di accedere a determinati file. Se gli utenti lavorano in una directory con l'attributo setgid impostato, tutti i file creati nella directory da qualsiasi utente disporranno dell'autorizzazione del gruppo. Ad esempio, l'amministratore può creare un gruppo chiamato spcprj e aggiungere gli utenti Kathy e Mark al gruppo spcprj. La directory spcprjdir può essere creata con il set di bit GID impostato e Kathy e Mark sebbene in diversi gruppi primari possano lavorare nella directory e avere pieno accesso a tutti i file in quella directory, ma non essere ancora in grado di accedere ai file nel gruppo primario dell'altro .

Il comando seguente imposterà il bit GID su una directory:

chmod g+s spcprjdir

L'elenco di directory della directory " spcprjdir " ;:

drwxrwsr-x 2 kathy spcprj 1674 Sep 17 1999 spcprjdir

La "quot" s "" al posto del bit di esecuzione nelle autorizzazioni di gruppo causa tutti i file scritti nella directory "spcprjdir" appartenere al gruppo "spcprj" .

edit: source = Autorizzazioni per file e file Linux

Altri suggerimenti

Vorrei impostare svnserve che è un semplice server Subversion che utilizza il protocollo svn: // . È possibile configurarlo in modo che venga eseguito con il proprio account utente, quindi l'accesso al repository sarà accessibile solo a quel singolo utente. Questo utente potrebbe quindi disporre dei privilegi corretti per eseguire svn update / server / staging su un hook post-commit.

nel tuo repository svn, puoi trovare una directory 'conf' dove imposti le autorizzazioni. ci sono 3 file lì:

  • AuthZ
  • passwd
  • svnserve.conf

hai impostato nel file authz quali utenti hanno il tipo di accesso, per utente o per gruppo. si impostano gruppi lì, gruppi SVN non gruppi utenti linux (le linee con hash sono commenti):

[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

aggira questo esempio e imposta la tua configurazione. nel file "passwd" si impostano le password degli utenti. eseguire

cat passwd

riceverai un file commentato con una spiegazione su come configurarlo.

Uso WebDAV: tutti gli aggiornamenti e i commit SVN vengono gestiti tramite apache e non ho mai avuto problemi di questo tipo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top