4.3k Aufrufe
Gefragt in Linux von
Hi Freakz,

in einem meiner Skripte rufe ich ganz normal

apt-get update

auf. Leider stoppt das dann Skript und verlang das root-password...

Wie kann ich das Skript ohne Unterbrechung ablaufen lassen?

Danke!

9 Antworten

0 Punkte
Beantwortet von tuxfreund Mitglied (373 Punkte)
ubuntu:

sudo apt-get update

Debian:

su root
mein_passwort

apt-get update
0 Punkte
Beantwortet von
textstring=$(sudo apt-get update)

...so steht es in meinem Skript

das Skript hat SUID, scheint aber nix zu bringen (hier lesen:)

http://de.wikipedia.org/wiki/Setuid

das SUID gilt scheinbar nicht für Skripte

an oben zitierter Stelle stoppt das Skript und verlangt nach dem root-Passwort :(

mein Linux ist natürlich ein Ubuntu 9.10
0 Punkte
Beantwortet von jaja Experte (1.4k Punkte)
der befehl kann immer nur von root bzw. dessen rechten ausgeführt werden.

eine lösung wäre also in diesem sinne nicht möglich, obgleich du auch das ganze script zunächst per sudo oder anderer methode als root ausführen kannst (mit eingabe des passwortes) und so die passwortabfrage mitten im script unterbindest.
nachfolgender code würde am anfang des scriptes das vorhandensein der rechte sicherstellen

:

if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi


oder

if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi

code stammt von hier

allerdings wäre das nicht besonders klug, da fehler im script dann auch gern fatale folgen haben können.
ich rate also dringend von der ausführung selbst geschriebener scripte mit root rechten ab!
0 Punkte
Beantwortet von tuxfreund Mitglied (373 Punkte)
obgleich du auch das ganze script zunächst per sudo oder anderer methode als root ausführen kannst (mit eingabe des passwortes) und so die passwortabfrage mitten im script unterbindest.

Kann ich bestätigen. Habs grad selber probiert.
0 Punkte
Beantwortet von
Vielen Dank für eure Hilfe, aber eine Lösung war das alles nicht - oder bin ich etwas dumm?

Wie kann ich nun ein Skript ausführen lassen, dass in seinem Innern Befehle ausführt die root-Rechte verlangen?

Ich habe auch visudo probiert, aber auch damit keinen Erfolg gehabt...
0 Punkte
Beantwortet von jaja Experte (1.4k Punkte)
Wie kann ich nun ein Skript ausführen lassen, dass in seinem Innern Befehle ausführt die root-Rechte verlangen?


ich denke du hast das prinzip noch nicht verstanden:

es darf doch nicht möglich sein, als normaler nutzer root rechte zu erlangen, in dem man einfach die gewünschten befehle (die man nicht ausführen darf, sondern nur root) in ein script schreibt und dann einen "magischen trick" anwendet, damit man eben jenes passwort zur erlangung der root rechte nicht nötig ist?!

entweder du hast das passwort zu beginn anzugeben (wie antw. 3), oder an der entsprechenden stelle im script (wie du es schon hast), oder aber du lässt das script von einem dienst starten, der sowieso schon root rechte hat.

letzteres wäre z.b. über einen cron job möglich, oder gar einem init script oder z.Z. noch Xorg.
0 Punkte
Beantwortet von
@jaja

warum ist/soll es nicht möglich sein ein Skript aufzurufen, das ggf. ein weiteres Skript aufruft, dass dann mit Superuserrechten arbeitet. Gibt es denn keine Möglichkeit in einem Skript den SU oder SUDO Befehl mit Angabe des Passwortes aufzurufen?

Letztlich möchte ich natürlich das Skript täglich per cron aufrufen lassen. Dazu würde ich in Ubuntu 9.10 Anwendungen -> Systemwerkzeuge -> geplante Aufgaben nehmen. Das ist eine GUI für cron. Soweit ich weiß, werden die von dort aufgerufenen Skripte mit den Rechten des angemeldeten Anwenders ausgeführt, weshalb meine Probleme auftreten.

:)

oder doch besser :( ?
0 Punkte
Beantwortet von
Hallo,

in ein Skript das root-Passwort schreiben, das ist wirklich Klasse.
Du kannt auch gleich mit root_rechten starten, dann gibt es das Problem nicht.

Gruß
0 Punkte
Beantwortet von jaja Experte (1.4k Punkte)
Soweit ich weiß, werden die von dort aufgerufenen Skripte mit den Rechten des angemeldeten Anwenders ausgeführt, weshalb meine Probleme auftreten.


schau mal hier - unten ist auch der umgang mit der contab des root beschrieben.
setzt du dort dein script ein, so wird es auch mit root rechten ausgeführt. dein sudo bzw. su kannst du so im script weglassen und es wird auch nicht nach irgendwelchen passworten gefragt.
allerdings brauchst du einmalig zum erstellen des cron job (crontab des root) natürlich das passwort. ;)

warum ist/soll es nicht möglich sein ein Skript aufzurufen, das ggf. ein weiteres Skript aufruft, dass dann mit Superuserrechten arbeitet.


was würdest du von der sicherheit eines systemes halten, wenn es so einfach wäre, deren sicherheit (im betrieb) zu umgehen. böse gesagt wäre das wohl windows style ;)


Gibt es denn keine Möglichkeit in einem Skript den SU oder SUDO Befehl mit Angabe des Passwortes aufzurufen?


nein.
...