Problem mit suid bit

G

Gast1

Hi
Ich habe ein Script, dass ein paar Dinge mit einem fat12-image anstellen soll. Dafür brauche ich root-rechte.

Meine 1. idee: Dem Script ein suid-bit verpassen. Leider musste ich feststellen dass das bei Scripten nicht geht.
-rwsr-xr-x 1 root root install.sh

Deshalb habe ich (erstmal provisorisch) ein kleines Programm geschrieben, welches per system-funktion das Skript ausführen soll.
Code:
int main()
{
 system("./install.sh");
 return 0;
}
-rwxr-xr-x 1 root root install.sh
-rwsr-xr-x 1 root root callinstall

Auch dass scheint nicht zu funktionieren: "mount: Nur „root“ kann dies tun"

Wo liegt mein Denkfehler?
Und gehe ich das Prob. überhaupt richtig an?

Ich möchte ein FAT12-image mounten, und dort einige verzeichnisse anlegen und files draufkopieren.
 
Nimm sudo. Was genau machst du denn? Alternativ starte das Skript mittels su -c /bin/bash skript
 
Die Aufgaben des Skrips:
- image mounten
- 2 verzeichnisse erstellen
- und dort dateien reinkopieren.

Es handelt sich dabei um die Bootdisk meines Betriebssystems. würde ich su oder sudo verwenden, müsste ich bei jedem Testlauf das Rootpasswort eingeben - dass ist mir allerdings zu umständlich...
 
Man möge mich korrigieren (und eine Erklärung, warum es so ist, habe ich auch nicht), aber AFAIK werden SUID-bits bei (Shell)scripten aus Sicherheitsgründen ignoriert.

//Edit

Aus meiner Linkliste gekramt:

http://www.faqs.org/faqs/unix-faq/faq/part4/section-7.html

Recht interessanter Einblick in das "Warum" (vor allem auch das "Warum es eigentlich ne dumme Idee ist").
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank Bâshgob - das setuid(0) hats gebracht :)

@saeckereier: bei sudo muss ich min. einmal das PW angeben. Und kann dann auch nur eine gewisse Zeit lang arbeiten, bis ich es erneut angeben muss. Die sudo-Lösung hatte ich während der Testphase des Bootloaders, dass war aber als Endlösung inakzeptabel.
 
Hi RedEagle,

ich würde dringend empfehlen, dir "sudo" nochmal genauer anzusehen; wenn du die Manual-Page (sudoers(5)) checkst, wirst du sehen, dass es da ein flag "NOPASSWD" gibt, das dir die dauernden Nachfragen nach dem Passwort ersparen kann.

Nur so als Anmerkung am Rande:

Ich habe jetzt keine Ahnung, ob du das auf irgendeinem Privat-PC einsetzen willst, oder ob das auf einer Kiste stattfinden soll, auf der auch etwas kritischere Daten abgelegt sind; der Ansatz, mit einem C-Wrapper ein "./install.sh"-Skript im aktuellen Verzeichnis mit root-Berechtigung auszuführen, ist aber m.E. ein ziemliches Eigentor: was hindert einen bösen Nachbarn daran, dieses Programm in ein anderes Verzeichnis zu linken, und dann darüber jedes beliebige andere Skript/Programm mit Superuser-Berechtigungen auszuführen ...

Wenn du das Ganze aber unbedingt als S-Bit-Programm haben willst, wäre evtl. zu überlegen, die mount- bzw. umount-Befehle (vorzugsweise direkt als Systemcalls, zur Not auch durch Aufruf der Kommandos, dann aber mit vollen Pfadangaben) in das C-Programm reinzunehmen.

Grüsse,
A.
 
Danke floyd62, das erspart mir, das selbst aufzuschreiben.
 
Super! (Ich habe mich immer noch nicht an die unglaubliche Flexibilität von Linux gewöhnt :) )
Code:
RedEagle ALL=NOPASSWD: /bin/mount, /bin/umount, /bin/cp
Funktioniert genau so, wie ich es mir gewünscht habe. Dass dieses kleine C-Tool ein enormes Sicherheitsproblem ist, war mir bewusst. Aber ich nutze eigentlich den Rechner alleine. Aber es ist dennoch keine optimale Lösung gewesen.
 
Super! (Ich habe mich immer noch nicht an die unglaubliche Flexibilität von Linux gewöhnt

Und warum machst du dann die 10000-ste Distri, die wirklich kein Mensch braucht?
 
Und warum machst du dann die 10000-ste Distri, die wirklich kein Mensch braucht?
?

Ich vermute mal, du hast das mit den bootloader usw. falsch verstanden. Es handelt sich nicht um eine neue Linux-Distribution. Mein Kernel hat nichts mit Linux gemeinsam - bis auf das FAT12-Dateisystem gibt es nicht einmal ein Hauch von Kompatibilität zu Linux (oder anderen Systemen) :)
Auch der bootloader ist eigenentwicklung da mir einfach grub zu verwenden zu einfach ist :devil:
 
RedEagle: Und abgesehen davon lautet die Antwortet sonst: Weil ich's kann! *g*
 
War das nicht die Antwort des Rüden auf die Frage "Warum leckst Du Deine <ZENSUR>?"

(scnr)
 

Ähnliche Themen

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Eigener Multiboot USB Stick - scheitert schon an GRUB 2

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

NagiosGrapher 1.7.1 funktioniert nicht

Zurück
Oben