@ Il commento di Muhammad ha il diritto di farlo. Se vuoi limitare ciò che i tuoi utenti / software locale possono fare, e prevenire comportamenti arbitrari, ma vuoi anche dare l'accesso a sudo
, l'opzione solo è per i comandi di whitelist (entrambe le combinazioni di programma completo percorsi con parametri o una mancanza di parametri esplicitamente specificata, o semplicemente percorsi di programma completi che non hanno modo di ottenere sovrascrittura di file arbitrari o esecuzione di codice - che equivale alla stessa cosa - al di fuori di essi indipendentemente dai parametri). Il file sudoers supporta questo.
Inoltre, è necessario assicurarsi che quei comandi siano installati solo in posizioni in cui gli utenti non-root non possono scrivere. Inoltre, è necessario impedire i comandi che consentono modifiche arbitrarie di nomi di file o contenuti. Se consenti sudo
con /bin/ls
(che potrebbe essere sicuro, non sto facendo promesse qui) ma permetto anche un comando che mi permetta di inserire un testo arbitrario in un file, posso usare il secondo comando per sostituire /bin/ls
con uno script di shell che fa quello che voglio, e poi eseguo sudo ls
e intraprendo azioni arbitrarie come root (o qualunque utente /bin/ls
è stato impostato per l'esecuzione come sudoers).
Generalmente, l'accesso sudo deve essere limitato a utenti completamente fidati o a comandi molto specifici che devono essere eseguiti con determinati privilegi ma non possono essere utilizzati come leva per ottenere tali privilegi in modo più ampio. Nota che puoi combinarli (ad esempio, lasciando che tutti i membri del gruppo "ruota" usino comandi arbitrari e autorizzino specifici comandi per altri utenti).
Modifica. In precedenza ho detto che dovevi assicurarti di filtrare su percorsi completi, ma sudoers solo consente percorsi completi e sudo
builtin, quindi è una specie di aringa rossa.