Linux Programme

Locked
Message
Author
silver
Posts: 18
Joined: 12. Nov 1999 18:26
Contact:

Linux Programme

#1 Post by silver »

Hallo,
z.B. ich befinde mich im Terminal Fenster:
...und gebe "netscape" ein dann startet Netscape.

Es gibt aber auch Programme die muss man mit
"./programm_name" starten.
Wofür dient das "./"?

Michael Flaig

Re: Linux Programme

#2 Post by Michael Flaig »

Wenn ein Programm nicht im Path ist, sondern direkt aus dem aktuellen Verzeichnis gestartet wird, dann braucht man ./ .
Warum kann ich nicht genau sagen. Ich hab mal gesagt bekommen es wäre wegen der Sicherheit ... !?

Andi

Re: Linux Programme

#3 Post by Andi »

"./" wird benötigt, damit man nicht plötzlich ein Programm im aktuellen Verzeichnis startet, das da nicht hin gehört (Virus o.ä.).
Man stelle sich mal ein ein Programm im Heimatverzeichnis namens "startx" vor das den Inhalt "rm -rf /" hat...

CU
Andi

Manfred

Re: Linux Programme

#4 Post by Manfred »

Wieso läßt das dann Solaris zu, daß man
Programme im aktuellen Verzeichnis ohne
'./' starten kann ?

Strange ?

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: Linux Programme

#5 Post by hjb »

Hi,

von zulassen oder nicht zulassen kann keine Rede sein. Man braucht das "./", wenn das aktuelle Directory nicht in $PATH enthalten ist. $PATH wiederum kann sich jeder User einstellen, wie er möchte.

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Jochen

Re: Linux Programme

#6 Post by Jochen »

Die PATH-Variable enthält (wie hjb ganz richtig sagte) eine Liste von Verzeichnissen, die die Shell nach passenden Dateien durchsucht, wenn man einfach ein

ls

(beispielsweise) eintippt. Ansonsten müsste man ja immer

/bin/ls

eintippen. Funktioniert auch, ist aber viiiieeel zu lang. Wenn aber nun ein Skript/Executable geladen werden soll, dessen Verzeichnis nicht in der PATH-Variablen auftaucht, muss man den Pfad explizit angeben. Das kann entweder wie oben mit absoluten Pfadnamen (führender /) geschehen oder halt mit relativen Pfadnamen. Diese verweisen auf eine Datei ab dem eigenen Arbeitsverzeichnis. Wenn man also im /etc-Verzeichnis steht, könnte man auch tippen

../bin/ls

Also ab Arbeitsverzeichnis eine Stufe nach oben, dann ins Verzeichnis bin und dort Executable ls laden.

Und was hat das jetzt mit Sicherheit zu tun, Michael Flaig? Ganz einfach. "./" sind für die meisten Leute genau zwei Zeichen zu viel zu tippen, daher ergänzen sie ihre PATH-Variable um das Verzeichnis ".", also dem jeweiligen Arbeitsverzeichnis, in dem sie gerade stehen. Macht das auch der SysAdmin, kann folgendes passieren:

cd ~eviluser
ls

Harmlos, oder? Hat eviluser vorher ein Skript mit Namen "ls" in seinem Verzeichnis abgelegt, ruft's jetzt der SysAdmin mit sämtlichen Rechten auf. Das Skript kann jetzt (wie Andi "vorschlug") ein "rm -rf /" ausführen, oder ein "echo '+ +' >>/.rhosts", oder oder oder...

Und Manfreds Frage sollte jetzt auch geklärt sein, es dreht sich einfach um den Inhalt der PATH-Variablen. Meines Wissens ist die Voreinstellung der PATH-Variablen für root bei Solaris korrekt (ohne "."), bei normalen Usern weiss ich's nicht. Letzten Endes ist es aber doch meistens eine Sache des Admins. (Sollte der Solaris-Admin tatsächlich diesen Fehler machen, würde ich das als eine Einladung zum harmlosen Ärgern werten... :)

Locked