PDA

View Full Version : bash scripting e permessi


d4rkqu4s4r
26-07-2006, 13:31
Ho un problema.
Ho scritto un bash-script, chiamiamolo PAPERINO, che lancia un programma, il programma chiamiamolo PIPPO.

Lo script PAPERINO viene eseguito e lancia PIPPO.
Quando PIPPO viene lanciato, deve accedere a certi files e directory, ma mi dava degli errori perché diceva che non aveva i permessi per accedere, e terminava senza andare a buon fine.

Ora, il punto é: PAPERINO viene lanciato da un'altro programma, chiamiamolo PLUTO, che non gira come root, ma gira con un'altra utenza, chiamiamola utente_vispo.
utente_vispo fa parte del gruppo utenti_vispi, ma io l'ho anche inserito in tutti i gruppi che permettono di accedere ai files di cui ha bisogno PIPPO, ad esempio il gruppo lock per accedere a /var/lock e il gruppo uucp per accedere ad alcuni device.

Così:
- Il programma PLUTO gira con l'utenza utente_vispo.
- PLUTO lancia lo script PAPERINO, quindi lo script PAPERINO gira sempre con l'utenza utente_vispo.
- PAPERINO lancia il programma PIPPO, quindi il programma PIPPO gira sempre con l'utenza utente_vispo, che fa parte dei gruppi che hanno il permesso di accedere ai files di cui PIPPO ha bisogno.

A questo punto dovrebbe funzionare tutto, ma qui sta l'inghippo.
PIPPO quando viene lanciato da i soliti errori che non ha i permessi di accedere ai files. Come se i gruppi di cui fa parte utente_vispo venissero ignorati.
Allora io ho provato a loggarmi con l'utenza utente_vispo e lanciare dalla shell lo script PAPERINO, quindi in pratica l'ho lanciato manualmente con la stessa utenza con cui viene lanciato dal programma PLUTO.
Se io lancio PAPERINO in questo modo, il programma PIPPO quando viene lanciato da PAPERINO funziona perfettamente.

Quindi: se lo script viene lanciato da shell, i gruppi di cui fa parte utente_vispo vengono presi in considerazione e l'accesso ai file é consentito, se invece lo script viene lanciato dal programma PLUTO che é un demone che gira in background, i gruppi di cui fa parte utente_vispo NON vengono presi in considerazione e l'accesso ai file é negato.

E' normale tutto ciò?
C'é modo di far tenere in considerazione i gruppi anche quando PAPERINO veiene lanciato da PLUTO?

PS: sono sicuro al 100% che PAPERINO dopo essere stato lanciato da PLUTO abbia ancora i permessi di utente_vispo perché l'ho verificato con un paio di righe di debug che stampano l'uid con cui gira lo script di shell.