Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Shell-Skript mit Rechten für root

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
neoent
Newbie
Newbie
Beiträge: 44
Registriert: 30. Sep 2004, 15:43

Shell-Skript mit Rechten für root

Beitrag von neoent »

Ich habe zwei Fragen.
Ich möchte ein Skript schreiben, welches ich als user starten kann aber ein root-Befehl hat. Wenn ich als user das Skript starte und der ifconfig-Befehl kommt sagt er, syntax error. Wie umgehe ich das?
Und die zweit Frage: ich möchte nicht zehn Skripte schreiben. Ich möchte das ich bein Aufruf auch -abcd usw. nutzen kann. Wie mache ich das? Also wenn ich skript1 -a setze was muss ich dafür im Skript schreiben? Mit If "-a" .. then geht leider nicht.
docdray
Newbie
Newbie
Beiträge: 20
Registriert: 24. Aug 2004, 13:49
Wohnort: Leipzig
Kontaktdaten:

Beitrag von docdray »

Unter Linux gibt es ein suid Bit für Dateien. Wenn dieses gesetzt ist, wird das Programm mit den Rechten seines Eigentümers gestartet.
Also wenn zb der Eigentümer root ist, das suid Bit ist gesetzt, dann wird das Programm als root gestartet.
Aber
für Scripte ist das absichtlich nicht möglich.
Man muss das Script schon als root starten, oder man baut sich eine shell drum rum, oder man macht die Binarys die von dem Script gestartet werden auch für nicht-roots ausführbar. Wobei das letzte nur im Ausnahmefall gemacht werden sollte, also nie.


Nun zu deiner 2ten Frage:
hab ich das richtig verstanden, dass du wissen willst wie man in einem Script die Parameter entgegen nimmt?
Also das ist recht einfach

$1 hat den ersten Parameter
$2 den 2ten
.
$9 den 9ten
$* hat alle
$# hat die Anzahl der Parameter
mit shift kann man die Parameter von in Richtung $1 rücken lassen
Also
was erst in $2 steht, steht hinterher in $1
und was in $3 steht, steht hinterher in $2
usw

So nun noch zu dem Test ob -a eingegeben wurde
Hier mal ein simples Beispiel
es geht davon aus, dass -a als erster Parameter verwendet wird

Code: Alles auswählen

#!/bin/sh
if [ $1 = -a ]
then
	echo "es wurde ein -a eingegeben"
fi
und hier mal noch ein kleines Beispiel, wie man sich durch die Parameter "hangelt".

Code: Alles auswählen

#!/bin/sh
for v in $*
do
	echo $v
done
$v durchläuft hierbei jeden Parameter einmal


Ich hoffe das hilft dir
Der Name Windows stammt ursprünglich aus dem Indianischen und bedeutet: "Weißer Mann, der auf eine Sanduhr starrt."
neoent
Newbie
Newbie
Beiträge: 44
Registriert: 30. Sep 2004, 15:43

Beitrag von neoent »

Das letzte es genau das was ich gesucht habe. Danke! Schade das mit den Skripten. Auch wenn es blöd ist , mach ich das so dass das Skript auch von non-root-user gestartet werden darf.
Snubnose
Hacker
Hacker
Beiträge: 410
Registriert: 18. Feb 2004, 19:19
Wohnort: Schwabenland

Beitrag von Snubnose »

sudo ist dein Stichwort, dass user Befehle ausführen können mit root-Rechten. Aber man fängt sich mit sowas sehr schnell Sicherheitslücken -> aufpassen :!:
neoent
Newbie
Newbie
Beiträge: 44
Registriert: 30. Sep 2004, 15:43

Beitrag von neoent »

Die Syntax ist doch, denke ich, so. if ...fi und for..do ...done, oder?
Wenn ja, warum geht das nicht?

Code: Alles auswählen

#! /bin/bash
 for p in $*
  do 
    if  $p  = -a or $p = -b 
     then 
        ........
   else
    .......
 fi
done
 
Er sagt, dass etwas mit done nicht stimmt.
Snubnose
Hacker
Hacker
Beiträge: 410
Registriert: 18. Feb 2004, 19:19
Wohnort: Schwabenland

Beitrag von Snubnose »

hmm, das mit den ganzen ifs finde ich ein wenig unglücklich...
such mal ein wenig bei google
das hier habe ich zum Beispiel gefunden:
http://linuxsig.org/files/bash_scripting.html (gaaanz unten schauen)
Antworten