2012-10-20 10 views
9

È necessario impedire a root di aggiornare una directory git (funzionante). Il ragionamento include, ma non si limita a: evitare modifiche alla proprietà del file system sottostanti.Come impedire a root di eseguire git pull?

Nessuno dei git git sembra impedire un recupero/unione/pull prima che si verifichi, simile al gancio di pre-commit. O almeno, niente che vedo qui (o nella pagina man): http://www.analysisandsolutions.com/code/git-hooks-summary-cheat-sheet.htm

Pensieri?

+4

* "prevedi root [...]" * - Non penso che sia possibile. – poke

+0

Perché? Qual è il vero problema che stai cercando di evitare? Se stai cercando di impedire che i file nel tuo repository appartengano a root, non eseguire il pull mentre sei loggato come root. – meagar

+1

@meagar Lo sto già facendo. Ahimè, in un ambiente di squadra in cui molte persone hanno accesso root/sudo. Desideriamo in particolare dissuadere le persone dall'accedere come root e modificare inavvertitamente le cose che non dovrebbero. A volte le persone dimenticano le vecchie abitudini (avevamo l'abitudine di richiedere privilegi root/sudo per gli aggiornamenti, ma non più), accedere come root e fare cose che non dovrebbero. –

risposta

4

L'unico modo che ho visto questo non risolto, ma almeno "mitigati" era attraverso un wrapper per il comando git:

Tutti i comandi git passare attraverso questo wrapper che procede se l'id utente non è root.

8

Modificare /root/.bashrc per aggiungere una nuova directory all'inizio dello PATH. Aggiungere uno script di shell chiamato git per verificare che $1 sia uno dei pochi comandi di sola lettura (show/status/log/rev-list ecc.) E chiamare /usr/bin/git "[email protected]" se il comando è accettabile. Ciò impedirà a chiunque nel tuo team di eseguire accidentalmente git pull come root. Se sei preoccupato che lo faccia deliberatamente, hai problemi più grandi ...

+5

Ancora meglio, chiedi al comando di stampare un messaggio di errore come "Per favore non lanciare git come root". –

+2

Nel mio caso è il gestore del mio dipartimento che continua a fare "sudo su" ogni volta che non ha il permesso di fare qualcosa. Poi fa una tirata e mi rovina i miei file. Voglio solo un messaggio di errore per qualsiasi comando git che dice "Non eseguire mai i comandi git come root! Smetti di rovinare i permessi dei miei file!" – Mnebuerquo