La richiesta è arrivata nel primo pomeriggio:
serve che un utente su un certo host possa avere visibilità della configurazione dei comandi periodici (crontab) di tutti gli utenti.
In pratica si tratta di consentire l’esecuzione del comando crontab -l [user_id], normalmente eseguibile solo dal superuser (root), anche ad un utente “normale”.
Tra i prerequisiti c’è l’installazione del comando sudo che consente ad utenti specifici di eseguire comandi con privilegi da superuser.
Abbiamo quindi provveduto ad installare sudo sulla LPAR (Virtual Host in ambito IBM).
L’installazione ha dei prerequisiti o, per usare il termine corretto, delle dipendenze:
- db
- gdbm
- openldap
- zlib
Soddisfatte le dipendenze abbiamo installato il famigerato sudo.
Una volta completata questa fase abbiamo provato a consentire l’esecuzione del comando all’utente, ma senza successo.
.... myuser ALL= NOPASSWD: /usr/bin/crontab -l ....
La linea di comando impostata con visudo non veniva riconosciuta.
Ovviamente assegnare ad un utente “normale” la possibilità di modificare il crontab di tutti gli utenti non ci pareva una buona idea.
Non solo per mantenere il controllo del sistema, che già sarebbe un ottimo motivo da solo, ma anche evitare un utilizzo accidentale dei comandi: l’utente abilitato avrebbe potuto non solo modificare la crontab di qualsiasi utente, ma anche cancellarla innavvertitamente (crontab -r).
Dovo aver effettuato vari tentativi la soluzione adottata e vincente è stata la creazione di un banale script shell (sh_cron) la cui esecuzione è stata inserita in sudoers (file di configurazione di sudo).
Di seguito la riga di configurazione di sudo.
myuser ALL= NOPASSWD: /usr/local/bin/sh_cron
Ed ecco lo script:
1 2 | #!/usr/bin/ksh /usr/bin/crontab -l $1 |
A questo punto l’utente myuser ha visibilità della configurazione dei comandi periodici configurati per ciascun utente del sistema.
myuser $ sudo sh_cron [user_id]