[How To] Telnet Prompt mit Pfadangabe

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
/etc/profile (<= Pfad für alle User/und sonstigen Programme, für die die /etc/profile durchlaufen wird)

$HOME/.profile (<= Pfad für die Login-Shell)

In der Reihenfolge wird auch ausgewertet.

Itari
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
Code:
PATH=/usr/syno/mailstation/sbin:$PATH
export PATH
nix passiert. Oder kann es sein, dass eine späteres Script den Pfad nochmals neusetzt? Also meine Anpassungen wieder überschreibt?
Die selbst gesetzte PATH Variable ist nur solange gültig wie das Script (die shell und Subshells) läuft, Scriptende -> Variablen weg. Man kann es sich ein wenig vereinfachen indem man ein script mit den Variablen anlegt und dieses in jedes neue script einbindet.
Rich (BBCode):
#!bin/sh
. /root/meineVars.sh
...
Gruß Götz
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hallo,

Die selbst gesetzte PATH Variable ist nur solange gültig wie das Script (die shell und Subshells) läuft, Scriptende -> Variablen weg. Man kann es sich ein wenig vereinfachen indem man ein script mit den Variablen anlegt und dieses in jedes neue script einbindet.
Ah das erklärt doch einiges. Ich dachte wirklich, dass mein Pfad nochmals irgendwo überschrieben würde.
Aber irgendwie muss sich das doch global beim Booten setzen lassen, so dass es für jeden User gilt solange die DS läuft.
Ich meine, dass ich meinen Code auch mal in einem rc Script drin hatte, aber auch nix passiert ist.
Das muss doch irgendwie global und persistent (zumindest bis zum Reboot) gehen?

Gruss

tobi
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Meiner Meinung nach geht das nicht. Es existiert ja keine "Mutter"shell die an alle folgenden etwas vererben könnte. Wenn es möglich wäre hätten die Programmierer das sicherlich genutzt um nicht in allen Startscripts komplette Pfadangaben machen zu müssen.

Gruß Götz
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Meiner Meinung nach geht das nicht. Es existiert ja keine "Mutter"shell die an alle folgenden etwas vererben könnte. Wenn es möglich wäre hätten die Programmierer das sicherlich genutzt um nicht in allen Startscripts komplette Pfadangaben machen zu müssen.

Gruß Götz
Gemäss Manual gilt der Init Prozess als Master of Desaster und der kann auch vererben
Nur leider scheint dessen PATH in der Source festgeschrieben zu sein
http://www.faqs.org/docs/Linux-mini/Path.html#s4
Init is a parent process for all the other processes of the system. Other processes inherit environment of the init process and the path is the init path in the rare case that no other path is set.
The 'init path' is fixed in the source of the init program and it is:
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Eigentlich hatte ich die Antwort auf alle Fragen schon gegeben *guck*

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Eigentlich hatte ich die Antwort auf alle Fragen schon gegeben *guck*

Itari
Den Post habe ich erst danach gesehen. War so weit oben ;)
Mit profile habe ich es denn auch gemacht, aber mich würde es reizen, den Pfad global vorzugeben. Also unabhängig vom User.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Den Post habe ich erst danach gesehen. War so weit oben ;)
Mit profile habe ich es denn auch gemacht, aber mich würde es reizen, den Pfad global vorzugeben. Also unabhängig vom User.

Ja was macht denn die /etc/profile??? Ist die nicht unabhängig vom jeweiligen User???

Um die PATH-Variable zu setzen bzw. zu ergänzen, brauchst ein Programm ... das kann der Init sein (wobei es wohl ein wenig schwieriger ist, dort zu setzen), das kann eine Shell sein. Normalerweise ist das eine Login-Shell ...

Daemonen, wie sie aus der /usr/syno/etc/rc.d gestartet werden, können in ihren jeweiligen Start-Skripten die Variable setzen ... ja und wenn es noch globaler sein sollte, dann nehmen wir doch die /etc/rc.local oder gleich die /etc/rc ...

Rich (BBCode):
Synology> grep PATH /etc/rc
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
export HOME PATH

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ja was macht denn die /etc/profile??? Ist die nicht unabhängig vom jeweiligen User???
Itari
ich dachte die profile sei nur für den jeweiligen User gültig d.h. ich glaubte dass root eine andere profile hat hat User X
Gibt es denn nur eine profile für alle User?
Das mit der Login Shell klingt logisch, nur was ist mit Usern die keine Login Shell haben (z.B. Systemuser)? Für diese wollte ich den PATH eigentlich setzen.
Die Sache mit /etc/rc werde ich probieren, obwohl ich meinte das schonmal erfolglos probiert zu haben.

Danke + Gruss

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
ich dachte die profile sei nur für den jeweiligen User gültig d.h. ich glaubte dass root eine andere profile hat hat User X
Gibt es denn nur eine profile für alle User?

Es gibt 2 profile-Dateien, die nacheinander durchlaufen werden: erst die /etc/profile (für alle User) und dann die .profile in den jeweiligen HOME-Verzeichnissen der User. Letzte können je User individuell angepasst werden.

Die Sache mit /etc/rc werde ich probieren, obwohl ich meinte das schonmal erfolglos probiert zu haben.

Naja, es kann ja sein, dass die Einstellungen der /etc/rc irgendwo nochmals neu gesetzt werden ... aber der Init arbeitet die /etc/rc ab und bekommt auch die dort eingestellte PATH-Variable und läuft anschließend die /usr/syno/etc/rc.d ab und startet die Server. Diese werden also als Subshell oder direkt vom Init gestartet und erhalten alle Shell-Variablen die der Init auf der export-Liste (Kommando export) stehen hat, weil sie ja seine Kinder-Prozesse sind (forks). Somit würde auch der crond oder der ssh-Daemon bzw. telnetd erstmal die PATH-Variablen-Einstellungen erben, es sei, die Programme setzen sie (aus Sicherheitsgründen) zurück oder starten Shell, für die sie zurückgesetzt werden.

Itari
 

laserdesign

Benutzer
Mitglied seit
11. Jan 2011
Beiträge
2.549
Punkte für Reaktionen
47
Punkte
94
Hallo,

ich habe den Prompt für root farbig hinbekommen.
Wenn ich aber für einen User in /etc/passwd den Pfad auf /opt/bin/bash ändere, kann ich mich nicht mehr anmelden.

Rich (BBCode):
ssh user@syno
Permission denied, please try again.
Connection to syno closed.

Kann mir jemand sagen wo ich da noch schrauben muss, damit ich mich als User anmelden kann?
Wäre für jede Hilfe dankbar.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat