Come aggiungere systematically secure_path nel file sudoers

Sto cercando di creare uno script di dati utente per un'istanza EC2 che costruisce il nodo e npm da github e quindi avvia un servizio. Per ingrassare queste ruote, devo aggiungere:

:/usr/local/bin 

alla fine della row in / etc / sudoers che inizia:

 Defaults secure_path=" 

https://superuser.com/questions/927512/how-to-set-path-for-sudo-commands parla di utilizzare visudo per get questo risultato, ma voglio farlo in modo programmato all'interno dei dati utente EC2.

https://stackoverflow.com/questions/16282789/adding-sudo-permissions-to-sudoers-for-user-via-shell-script parla di modificare il file sudoers, ma sembra terribilmente sopra cotto per quello che sto cercando realizzare.

Ho pensato che sarebbe stato facile da incollare la linea e sostituirlo, ma sono stumped. Non solo a causa di quella fastidiosa chiusura di virgola invertita!

  • Come determinare la data di installazione o aggiornamento di un pacchetto?
  • Miglior sapore Linux per lo sviluppo di applicazioni web (LAMP)
  • Collegamento simbolico e LMP htdocs
  • Significato della linea buffer / cache nella produzione di libera
  • Installazione di CoreOS su una singola macchina
  • RHEL 6.4: il collegamento a canale di modalità 1 non manca
  • mdadm: la rimozione calda non è rioutput ...
  • Profili di spazio su disco in Unix
  • 2 Solutions collect form web for “Come aggiungere systematically secure_path nel file sudoers”

    Se puoi vivere con la sostituzione del valore secure_path invece di aggiungerlo, puoi utilizzare una soluzione molto più semplice. Di solito sudo ha una directory di configuration come /etc/sudoers.d where è ansible eliminare altri file di configuration.

    Basta creare un file con il tuo completo secure_path :

     Defaults secure_path="<default value>:/usr/local/bin" 

    Questo sovrascrive il valore della configuration principale. Se il valore del path è lo stesso per tutte le vostre macchine, questo può essere facilmente implementato con script o un pacchetto.

    Questo ha il vantaggio aggiuntivo che non è necessario controllare e eventualmente unire file di configuration quando il pacchetto sudo viene aggiornato in futuro.

    supponendo di sapere che la linea con secure_path esiste, un semplice command sed per farlo

     sed -i -e '/secure_path/ s[=.*[&:/usr/local/bin[' /etc/sudoers 

    o un po 'più sofisticato (verifica più syntax sull'ingresso):

     sed -i -r -e '/^\s*Defaults\s+secure_path/ s[=(.*)[=\1:/usr/local/bin[' /etc/sudoers 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.