Come far funzionare un programma con i privilegi di root senza usare su o sudo


8

Ho uno bashscript che deve essere eseguito con i privilegi di root , ma deve essere invocato dall'utente normale.

La parte difficile è che lo script non dovrebbe chiedere una password e non voglio usare il file sudoers . Vorrei evitare di usare sudo o su .

È possibile?


possibile duplicato di Consenti setuid su script shell
Stefan

Risposte:


9

Se non fosse uno script bash ma un'applicazione normale, ne daresti la proprietà per eseguire il root e impostare il bit setuid sull'applicazione. Quindi, al momento dell'esecuzione, l'utente effettivo su cui è in esecuzione l'applicazione è root. Per motivi di sicurezza, tuttavia, ciò è vietato in molti sistemi per gli script di shell. Questa domanda qui su unix.stackexchange.com gestisce i modi per superarlo.


Bene, stavo solo pubblicando un link a quello. La risposta di Hemant è una buona soluzione
Michael Mrozek

Ruby conta come uno script di shell?
Stefan,

1
@Stefan Sì, tutto ciò che viene eseguito attraverso un interprete lo fa, perché non è lo script stesso che viene eseguito, è l'interprete ruby, che non è setuid. Hai bisogno di un vero binario per usare setuid
Michael Mrozek

2
Vorrei poter votare questo, ma purtroppo mi mancano 25 punti reputazione. Consentire agli utenti normali di eseguire uno script bash come root è un'idea MOLTO MALE, a meno che tu non sappia esattamente cosa stai facendo (e se devi chiedere come farlo, non lo fai). Se l'OP ha pubblicato la sua sceneggiatura qui, probabilmente troverei almeno 3 modi per sfruttarla. C'è un motivo per cui quasi tutte le distribuzioni lo rendono difficile.
Kim,

Uno dei principi fondamentali di Unix è: "Offri all'utente l'opportunità di spararsi ai piedi" :-)
fschmitt

1

Usa sudo. Se non si desidera chiamare sudo /path/to/myscript, scrivere un wrapper a una riga exec sudo /path/to/myscript "$@". Vedi Consenti setuid su script di shell , in particolare la risposta di Maciej Piechotka sull'uso di sudo e la mia discussione più generale sui programmi setuid .


L'idea è di non dover usare sudo.
Alexej Magura,

@AlexejMagura Sudo è la soluzione più semplice. Questo è difficile da fare senza sudo (a meno che tu non sia disposto ad accontentarti di una soluzione non sicura, nel qual caso potresti anche dare a tutti la password di root).
Gilles 'SO- smetti di essere malvagio' il
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.