Forum: PC Hard- und Software Shell Script ohne sudo ausführen


von Rene K. (xdraconix)


Lesenswert?

Ich habe ein Script, auf mehrere Server verteilt. Dieses Script soll 
extern durch einen anderen Server über ssh ausgeführt werden.

Das script heißt und liegt unter:

/home/draconix/up
1
#!/bin/bash
2
#
3
sudo apt update && sudo apt -y upgrade
4
[[ -f /var/run/reboot-required ]] && echo -ne "\\n\033[1;31m====== $HOSTNAME REBOOT REQUIRED =======\033[0m\\n"
5
[[ -f /var/run/reboot-required.pkgs ]] && cat /var/run/reboot-required.pkgs

in der datei habe ich folgendes eingefügt:

/etc/sudoers
1
 ...snip...
2
draconix ALL=(ALL) NOPASSWD: /home/draconix/up

jedoch verlangt er bei ausführen des scripts immer noch das root 
Password:
1
draconix@Database:~$ /home/draconix/up
2
[sudo] Passwort für draconix:    [STRG+C]
3
sudo: Ein Passwort ist notwendig
4
draconix@Database:~$

woran könnte das liegen? Eigentlich dürfte er doch nicht mehr danach 
fragen oder?

Liebe Grüße
René

von Thomas V. (tomv)


Lesenswert?

Hallo René,

Du führst ja auch 'sudo apt' und nicht 'sudo /home/draconix/up' aus, wie 
in der sudoers erlaubt =;-)

Gruß
Thomas

von Peter Pan (Gast)


Lesenswert?

Rene K. schrieb:
> /home/draconix/up

Schlechte Idee. Dann kannst du sudo ohne Passwort auch einfach für alles 
freigegeben.

Das was du möchtest gibt es bereits schon fertig in Form von Unattended 
Upgrades.

https://help.ubuntu.com/community/AutomaticSecurityUpdates

von Rene K. (xdraconix)


Lesenswert?

Peter Pan schrieb:
> Schlechte Idee. Dann kannst du sudo ohne Passwort auch einfach für alles
> freigegeben.

im Grunde richtig, sollte jemand zugriff auf Benutzer "draconix" haben, 
kann er über diese Datei auf alles Zugriff. Richtig, darüber habe ich 
garnicht nachgedacht. :-/

Vielen Dank für den Link!

von Imonbln (Gast)


Lesenswert?

Ich denke, du solltest da eher was mit SSH-Keys machen.

Möglich ist zum Beispiel, dass sich Root nur per SSH-Key einloggen kann, 
dann gehört das Skript auf dem Target halt nicht draconix, sondern Root 
und der kommt ohne sudo aus.
Auf deinen Host musst du einen SSH-agent laufen lassen, welcher denn Key 
an das Target propagiert und der Befehl ist dann halt
1
ssh root@target './up'
 statt
1
ssh draconix@target './up'

Wenn es unbedingt nötig ist, dass draconix das Skript ausführt, könnte 
es hilfreich sein pam_ssh_agent_auth zu installieren und für sudo zu 
konfigurieren, dann kann der Benutzer über ssh ohne Password arbeiten, 
aber der lokale braucht bei sudo eins.

Aber wie du dich auch entscheidest, deine Lösung sollte ssh-keys 
beinhalten, schon weil diese die Sicherheit positiv beeinflussen und 
auch bei mehreren 100 Rechnern ein geschmeidiges Arbeiten garantieren.

von Rene K. (xdraconix)


Lesenswert?

Jup, danke dir vielmals. Ich habe mir ein kleines Script geschrieben, 
welches den Schlüssel automatisch an die Server verteilt, dann direkt 
das Script anlegt, ausführbar macht und auf der Worker-Node in den Cron 
Script mit aufnimmt.

Funktioniert nun genauso wie ich das wollte :-D Ich danke vielmals!

von crontab (Gast)


Lesenswert?

in der crontab das Shell-Script als root aufrufen (ohne sudo natürlich)

von quotendepp (Gast)


Lesenswert?

schau dir mal ansible an...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.