So fügen Sie sicher einen sicheren Pfad in die sudoers-Datei ein

11

Ich versuche, ein Benutzerdatenskript für eine EC2-Instanz zu erstellen, die Node und Npm aus Github erstellt und dann einen Dienst startet. Um diese Räder zu schmieren, muss ich hinzufügen:

:/usr/local/bin

bis zum Ende der Zeile in / etc / sudoers, die beginnt:

Defaults        secure_path="

/superuser/927512/how-to-set-path-for-sudo-commands spricht über die Verwendung von visudo, um dies zu erreichen, aber ich möchte dies programmgesteuert innerhalb der EC2-Benutzerdaten tun.

/programming/16282789/adding-sudo-permissions-to-sudoers-for-user-via-shell-script spricht über das Bearbeiten der sudoers-Datei, aber es scheint für das, was ich versuche, schrecklich überbacken zu sein erreichen.

Ich dachte, es wäre einfach, die Leitung zu erfassen und zu ersetzen, aber ich bin ratlos. Nicht nur wegen dieses nervigen schließenden Anführungszeichens!

belial
quelle

Antworten:

5

Wenn Sie damit leben können, den secure_pathWert zu ersetzen , anstatt ihn anzuhängen, können Sie eine viel einfachere Lösung verwenden. Normalerweise hat sudo ein Konfigurationsverzeichnis, /etc/sudoers.din dem Sie zusätzliche Konfigurationsdateien ablegen können.

Erstellen Sie dort einfach eine Datei mit Ihrem vollständigen secure_pathWert:

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

Dies überschreibt den Wert aus der Hauptkonfiguration. Wenn der Pfadwert für alle Ihre Computer gleich ist, kann dieser problemlos mit Skripten oder einem Paket bereitgestellt werden.

Dies hat den zusätzlichen Vorteil, dass Sie Konfigurationsdateien nicht überprüfen und möglicherweise zusammenführen müssen, wenn das sudo-Paket in Zukunft aktualisiert wird.

Gerald Schneider
quelle
2

Angenommen, Sie wissen, dass die Zeile mit Secure_path vorhanden ist, führen Sie dazu einen einfachen sed-Befehl aus

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

oder etwas ausgefeilter (mehr Syntaxprüfung bei Eingabe):

sed -i -r -e '/^\s*Defaults\s+secure_path/ s[=(.*)[=\1:/usr/local/bin[' /etc/sudoers
Tonioc
quelle