GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie vermeide ich die Passwortabfrage für Sudo für Crontab-Skripte?

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?
Ubuntu
  1. Wie man sudo dazu bringt, sich das Passwort länger zu merken

  2. So ändern Sie das Sudo-Passwort-Timeout

  3. So setzen Sie das Passwort für sudo in Debian zurück

  4. Wie entferne ich die Passwortanforderung von Ubuntu?

  5. So legen Sie den Pfad für sudo-Befehle fest

So legen Sie das Zeitlimit für eine Sudo-Sitzung in Ubuntu 20.04 LTS fest

So führen Sie Sudo-Befehle ohne Passwort aus

So ändern Sie das Sudo-Passwort-Timeout in Ubuntu

So installieren Sie die Python 3-Entwicklungsumgebung für Ubuntu Linux

Wie konfiguriere ich Pkexec, um nicht nach dem Passwort zu fragen?

So führen Sie sudo-Befehle ohne Passwort aus