come eseguo le azioni di root da un account non root?


15

Voglio essere in grado di riavviare i servizi da uno script php. in esecuzione con l'account www-user.

Qual è il modo preferito per eseguire queste azioni?

Riconosco che posso posizionare creare un file con i comandi que'd, letto da CRON, ma la soluzione prude.

Quello a cui sto pensando è un minuscolo servizio, in esecuzione sotto root, che consente "metodi" predefiniti, quindi non è possibile eseguire azioni root arbitrarie.

Qualche strumento là fuori per questo?


@MadHatter, Mona Lisa manda i suoi saluti ;-)
user65297

Risposte:


27

Potresti reinventare la ruota, ma sinceramente uso sudo senza password per questo. Ad esempio, il mio sistema di monitoraggio deve essere in grado di eseguire un comando per controllare il RAID hardware. Ciò richiede il privilegio di root, ma non voglio eseguire l'intero sistema di monitoraggio come root, quindi invece ho sudoersuna riga che dice

nagios  ALL=(root) NOPASSWD: /usr/lib/nagios/plugins/check_md_raid

e quindi eseguo il comando sudo /usr/lib/nagios/plugins/check_md_raidcome utente di monitoraggio, quando devo controllare il RAID.

Potresti avere una linea sudoers che dice

www-user    ALL=(root) NOPASSWD: /etc/rc.d/init.d/myservice

quindi esegui php sudo /etc/rc.d/init.d/myservice restart.


2
Questo è il modo di andare IMO. Ho usato questo processo per un compito simile. È in produzione da oltre 3 anni. Nulla è mai fallito e il rischio per la sicurezza è quasi inesistente finché si protegge il codice PHP che lo attiva correttamente con la logica dell'applicazione.
Andrew Ensley,

1
Grazie, sudoers nuovo per me e sbattere sul bersaglio. @Andrew, grazie per le informazioni aggiuntive.
user65297

1
user65927, perdonami se questa non è una novità per te, ma l'etichetta locale è che quando hai una risposta soddisfacente a una domanda la accetti facendo clic sul segno di spunta accanto ad essa.
MadHatter,

1
Potrebbe anche essere necessario commentare la riga "Predefiniti richiesti" nel file sudoers. Questo passaggio mi ha fatto alcune volte. (Ad esempio, modifica "Default predefiniti" in "# Default predefiniti")
steve.lippert

6

Dai un'occhiata a sudo : consente di specificare le azioni che possono essere eseguite come un altro utente (root nel tuo caso).

Ad esempio puoi aggiungere al tuo /etc/sudoers(non modificare il file direttamente utilizzare visudo)

www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction

Vedere man sudoper i dettagli e la sintassi del file


2
stai MOLTO attento quando modifichi il /etc/sudoersfile. Se è in qualche modo sintatticamente errato, cambiarlo di nuovo è un incubo b / c che devi ricoprire sudo, ma non puoi b / c che hai appena cancellato sudo. Si finisce per usare un CD / DVD di ripristino e montare manualmente la partizione.
puk

1
@puk In realtà per modificare i brividi è necessario l'accesso root e nel caso in cui il file sia danneggiato è possibile accedere come root e quindi ripristinarlo (da una copia di backup) o ripararlo manualmente. visudo esegue anche controlli di integrità sul file prima di scriverlo.
Matteo,

che cos'è shudders? È vero visudo fa i controlli di sanità mentale, ma non aiutano dopo che il danno è stato fatto: P
puk
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.