Ändern Sie den Standardpfad für, wenn ich in CentOS-Server SSH?

12

Ich habe einen CentOS 5.7-Webserver und möchte den Standardspeicherort ändern, an dem ich lande, wenn ich eine Verbindung über SSH herstelle.

Derzeit lande ich in /home/usernameund möchte /homestattdessen in landen .

Ich habe als root und hinzugefügt gegangen PermitUserEnvironment yeszu /etc/.ssh/sshd_config- und wie ich es verstehe diese dann fegt den eigenen sshBenutzerordner für eine environmentDatei. Was ich nicht sicher bin, ist genau das, was ich dieser Umgebungsdatei hinzufüge, da export path=$PATH:$HOMEes hier oder in meinen .bashrc- oder .bash_profile-Dateien anscheinend nicht funktioniert (was meines Wissens keinen Unterschied macht) ist sowieso eine SSH-Verbindung eine nicht interaktive Shell?).

Danke im Voraus.

Ben
quelle

Antworten:

14

Wenn Sie PAM für die Authentifizierung verwenden, ist dies wahrscheinlich die wahrscheinlichste. Als Wurzelkopf hinein /etc/passwd.

Dort sollten Sie Ihren Benutzernamen und Pfad sehen! Ändern Sie es dort und Sie sind zu Hause frei!

BEARBEITEN - Es tut mir leid, dass mir gerade aufgefallen ist, dass Sie Ihren privaten Ordner möglicherweise nicht ändern wollten. In diesem Fall fügen Sie einfach Folgendes hinzu:

cd /home

An den unteren Rand Ihrer .bashrcDatei!

Stevie ich
quelle
4
Es ist besser , zu verwenden , usermodwenn irgendetwas in Bezug auf einen Benutzer zu ändern , dass Schreibvorgänge auf /etc/passwd, Fehler zu vermeiden: usermod -d /home user.
Laebshade
1
Dieser Nebenkommentar .bashrchat mich zu Facepalm gemacht. Es ist so einfach und offensichtlich, ich wünschte, ich hätte daran gedacht! Gut gemacht. Ein dickes Lob!
Cwallenpoole
4

Es ist zu beachten, dass ~/.ssh/environmentvor dem Start einer Shell oder eines sshBefehls gelesen wird, sodass (zum Beispiel) weder Export noch $ PATH einen Sinn ergeben. Sie können hier nur Umgebungsvariablen festlegen (keine allgemeinen Shell-Befehle ausführen).

Wenn Sie die Umgebung für eine nicht interaktive SSH-Shell nutzen, ändern Sie diese, und Sie sollten die gewünschten Informationen für nicht interaktive Befehle erhalten. Beispielsweise:

$ ssh mylogin@myserver env

Hier erfahren Sie, womit der SSH auf Ihrem Server beginnt. Wenn Sie Ihre ~/.ssh/environmentDatei schreiben als:

PATH=/usr/local/bin

und führen Sie das oben Gesagte erneut aus, Sie sollten "bash: env: command not found" erhalten. Gut!

Bauen Sie nun Ihren Pfad explizit auf der Basis Ihres Systems auf sshd(dh dem ersten "ssh .... env" -Aufruf), indem Sie Folgendes hinzufügen /usr/local/bin:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Beachten Sie auch, dass es nicht sinnvoll ist, die CWD festzulegen ~/.ssh/rc(die ausgeführt wird, nachdem sie ~/.ssh/environmentgelesen wurde, aber bevor Ihre sshShell oder Ihr Befehl ausgeführt wurde), da Ihre Shell (standardmäßig) in Ihrem Home-Pfad gestartet wird.

Yarko
quelle
Doppelte +1, ich habe überall nach diesen Informationen
gesucht