Ho uno script di shell che sincronizza alcuni file da una fonte remota e ho un tipico setup del server HTTP. C'è un utente che possiede i file serviti dal server HTTP e un utente che esegue il server HTTP - entrambi appartengono allo stesso gruppo.
Voglio che i file sincronizzati siano di proprietà dell'utente "proprietario" e non voglio che l'utente del server HTTP sia in grado di scrivere su di essi. Tuttavia, voglio che l'utente del server HTTP sia in grado di richiamare lo script di sincronizzazione.
Un'opzione è quella di avvolgere lo script della shell in una piccola applicazione C e usare setuid in modo che l'utente del server HTTP possa eseguirlo come utente "proprietario".
Dato questo:
- Non ci sarà alcun input per lo script - la posizione remota, il percorso di destinazione, ecc. sono tutti costanti.
- Lo script setuid non sarà di proprietà / eseguito da root.
È una cosa sicura e ragionevole da fare?
Modifica:
Per spiegare le cose, puoi usare i seguenti nomi:
- deploy-user: l'utente che dovrebbe possedere i file
- www-user: l'utente che esegue il server HTTP
- www-group: il gruppo deploy-user e www-user appartengono a
- sync.sh: lo script che aggiorna il file
- sync.txt: il file di destinazione