Ich brauche, dass ein neuer Benutzer sudo
ausführen kann ohne Passwortabfrage, weil dieser Benutzer crontab
hat ein .sh
das verwendet sudo
für einige Befehle.
Ich habe einen neuen Benutzer auf meinem Ubuntu-Server 16.04 x64 erstellt
adduser my-user sudo
gpasswd -a my-user sudo
Dann mit visuo
Ich habe diese Zeile basierend auf dieser Frage hinzugefügt
my-user ALL=(ALL) NOPASSWD : ALL
Dann neu gestartet
Nach dem Neustart habe ich mich mit my-user
angemeldet und versucht, sudo clear zu machen, aber es fragt mich nach dem sudo-Passwort.
HINWEIS :Ich habe die Crontab mit crontab -e my-user
hinzugefügt also nehme ich an, dass mein Skript als my-user
ausgeführt wird . Tatsächlich stürzt das crontabbed-Skript ab und informiert mich im Protokoll über ein sudo
Passwort abfragen. Ich muss das Skript wirklich auf diese Weise ausführen, um eine Datei mit my-suer
erstellen zu können als Eigentümer.
Bitte sagen Sie mir, ob einige Schritte/Zeilen nicht benötigt wurden und wie ich my-user
aktivieren kann um sudo
auszuführen ohne Passwortabfrage.
Danke
PS:Ich habe diese Frage gesehen, aber ich kann sie nicht zum Laufen bringen, also brauche ich eine genauere Erklärung, weil meine Situation anders ist:Ich führe ein crontab-Skript aus und ich brauche es nicht nach dem Sudo-Passwort fragen
Akzeptierte Antwort:
Manchmal wird ein Prozess über die crontab
von root ausgeführt kann Probleme mit anfänglichem Dateibesitz und rwx
verursachen Modus; diese werden möglicherweise nicht korrekt beibehalten.
Auf jeden Fall:
1) Um einen neuen Benutzer zu erstellen, halten Sie es einfach:
$ sudo deluser my-user # if "my-user" is a regular user
$ adduser my-user
$ sudo gpasswd -a my-user sudo
2) um einen neuen Eintrag mit einem NOPASSWD
einzufügen -Tag in Sudoern oder in einer Datei (z. B. /etc/sudoers.d/60_my-user_rules
), lassen Sie den Doppelpunkt am Tag haften, d. h. NOPASSWD:
Ich habe es noch nie zuvor mit eingestreuten Leerzeichen gesehen und yr-Regel wird zu:
my-user my-host = NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]
Hinzufügen von (ALL)
vor dem NOPASSWD:
ist optional, da die Regel standardmäßig (ALL:ALL)
ist ohnehin. Möglicherweise möchten Sie Ihr cmd/Skript jedoch nicht nur mit Root-Privilegien ausführen, sondern auch als ein bestimmter Benutzer (spec-user
) oder als Mitglied einer bestimmten Gruppe (spec-group
) oder beides. In diesem Fall lautet die Regel:
my-user my-host = ([spec-user][:spec-group]) NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]
Dadurch wird Ihre passwortlose Sudo-Disposition tatsächlich auf einen Benutzer, einen Host und einen Befehl beschränkt. Sie können diese Regel verstärken, indem Sie die optionalen Parameter für diesen Befehl angeben. In diesem Fall gilt die Regel nur für diesen/diese genauen Parameter.
Für Skripte könnten Sie diese Regel weiter verschärfen, indem Sie sicherstellen, dass die Regel nur gilt, wenn das Skript in keiner Weise geändert wurde . Dies ist eine Möglichkeit, Skript-Hijacking zu vermeiden. Dies geschieht durch cmd-Aliasing und Angabe von SHA-Summen in /etc/sudoers.d/60_my-user_rules
.
HTH. Bitte melden Sie Probleme mit dieser Antwort.
Verwandte:Vollständiges iPhone-Backup ohne iTunes?