root: keine Berechtigung für /tmp/SOFTLINK -> bash (Shebang)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
bumer
Beiträge: 238
Registriert: 02.07.2014 12:29:15

root: keine Berechtigung für /tmp/SOFTLINK -> bash (Shebang)

Beitrag von bumer » 05.02.2015 10:46:43

Moin,

Ich habe ein kleines Shellskript geschrieben und etwas mit symbolischen Links experimentiert und einen Softlink zu /bin/bash erstellt:

Code: Alles auswählen

ln -s /bin/bash /tmp/newlink
In meinem Skript lautet die Shebang nun wie folgt:
#!/tmp/newlink

Das Skript funktioniert einwandfrei, nur nicht mit root-Rechten, da erhalte ich die Nachricht:

Code: Alles auswählen

bash: /tmp/newlink: Keine Berechtigung
Erstelle ich aber den Softlink zur bash in $HOME, kann ich das Skript plötzlich mit root-Rechten öffnen.

Und wenn ich als root einen Softlink in /tmp/ zur Bash erstelle und ihn in der Shebang angebe, kann ich diesen als normalen User nutzen.

Ich verstehe das nicht, Root ist doch kein Root mehr, wenn er was nicht darf, oder? Woran liegt das?

Viele Grüße
bumer

Benutzeravatar
Meillo
Moderator
Beiträge: 9236
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: root: keine Berechtigung für /tmp/SOFTLINK -> bash (Sheb

Beitrag von Meillo » 05.02.2015 11:22:26

Vielleicht ist das ein Schutz gegen das schlimme Sicherheitsloch, das du sonst auf deinem System erzeugst. (Root-Shell anyone? ;-) )
Use ed once in a while!

bumer
Beiträge: 238
Registriert: 02.07.2014 12:29:15

Re: root: keine Berechtigung für /tmp/SOFTLINK -> bash (Sheb

Beitrag von bumer » 06.02.2015 11:16:22

Meillo hat geschrieben:Vielleicht ist das ein Schutz gegen das schlimme Sicherheitsloch, das du sonst auf deinem System erzeugst. (Root-Shell anyone? ;-) )
Danke für die Antwort, nur werde ich nicht wirklich schlau daraus. Mit der Thematik Sicherheit habe ich mich noch nicht beschäftigt.
Nun gut, root hat keinen Zugriff auf /tmp/softlink - soll anscheinend so sein, ist halt so.

Benutzeravatar
Meillo
Moderator
Beiträge: 9236
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: root: keine Berechtigung für /tmp/SOFTLINK -> bash (Sheb

Beitrag von Meillo » 06.02.2015 12:09:23

Die Shebang-Zeile gibt an mit welchem Interpreter das Script ausgefuehrt werden soll, d.h. welches Programm mit dem Scriptnamen aufgerufen wird.

Nun steht ein Pfad unterhalt von /tmp als Interpreter drin. In /tmp darf grundsaetzlich jeder Nutzer schreiben. (Okay, das Sticky-Bit schraenkt das ein wenig ein, aber darauf sollte man sich nicht verlassen, dass das auf jedem Unix fuer /tmp gesetzt ist bzw. vom jeweiligen Kernel mit der gleichen Semantik interpraetiert wird.) Wenn nun also irgendein anderer Nutzer /tmp/newlink durch ein eigenes Script ersetzt, dann wird dieses von root ausgefuehrt, wenn root das Shebang-Script ausfuehrt. Der andere Nutzer kann demnach beliebige Befehle in das Fake-Interpreter-Script schreiben und bekommt diese mit root-Rechten ausgefuehrt. Ist doch praktisch, oder? ;-)

Ich vermute deshalb, dass es in der Bash oder in Linux, dem Kernel, evtl. eine hardgecodete Verweigerung der root + /tmp-Shebang Kombination gibt. Nicht weil die alle Gefahren abwenden wuerde, aber doch manch schlimme Loecher verhindert. (So ist es z.B. auch nicht moeglich ein Shellscript als Interpreter im Shebang anzufuehren.)
Use ed once in a while!

bumer
Beiträge: 238
Registriert: 02.07.2014 12:29:15

Re: root: keine Berechtigung für /tmp/SOFTLINK -> bash (Sheb

Beitrag von bumer » 06.02.2015 16:52:22

Ja, klar, logisch, :idea: , danke Meillo :THX:

Antworten