Zmienić domyślną ścieżkę, gdy włączam SSH do serwera CentOS?

12

Mam serwer sieciowy CentOS 5.7 i chcę zmienić domyślne miejsce, w którym się ląduję podczas łączenia za pomocą SSH.

Obecnie ląduję /home/usernamei chcę /homezamiast tego wylądować .

Włączyłem się jako root i dodałem PermitUserEnvironment yesdo /etc/.ssh/sshd_config- i jak rozumiem, to zamiata sshfolder użytkownika na environmentplik. Nie jestem pewien, co dokładnie dodaję do tego pliku środowiska, ponieważ export path=$PATH:$HOMEwydaje się , że nie działa, ani tutaj, ani w moich plikach .bashrc lub .bash_profile (co, jak rozumiem, nie zrobiłoby różnicy czy połączenie SSH jest nieinteraktywną powłoką?).

Z góry dziękuję.

Ben
źródło

Odpowiedzi:

14

Jeśli używasz PAM do uwierzytelnienia, co jest prawdopodobnie najbardziej prawdopodobne. Jako root root do /etc/passwd.

Tam powinieneś zobaczyć swoją nazwę użytkownika i ścieżkę! Zmień to i jesteś w domu wolny!

EDYCJA - Przepraszam, przyszło mi do głowy, że być może nie chcesz zmienić folderu domowego. W takim przypadku wystarczy dodać:

cd /home

W dolnej części .bashrcpliku!

stevie I
źródło
4
Lepiej używać usermodpodczas zmieniania czegokolwiek dotyczących użytkownika, który pisze do /etc/passwd, aby uniknąć błędów: usermod -d /home user.
laebshade
1
Ten boczny komentarz na temat .bashrczrobił mi twarz. To takie proste i oczywiste, szkoda, że ​​o tym nie pomyślałem! Dobra robota. Sława!
cwallenpoole
4

Należy pamiętać, że ~/.ssh/environmentjest on czytany przed spawnem powłoki lub sshpolecenia, więc (na przykład) ani eksport, ani $ PATH nie mają sensu. Tutaj można ustawić tylko zmienne środowiskowe (nie uruchamiać ogólnych poleceń powłoki).

Jeśli pobierzesz środowisko dla nieinteraktywnej powłoki ssh, to zmodyfikuj ją, powinieneś dostać to, co chcesz dla nieinteraktywnych poleceń. Na przykład:

$ ssh mylogin@myserver env

poda ci, od czego zaczyna się ssh na twoim serwerze. Jeśli napiszesz ~/.ssh/environmentplik jako:

PATH=/usr/local/bin

i uruchom ponownie powyżej, powinieneś otrzymać „bash: env: polecenie nie znaleziono”. Dobry!

Teraz zbuduj swoją ścieżkę w sposób jawny, na podstawie tego, co było u podstawy z twojego systemu sshd(tj. Pierwszego wywołania „ssh .... env”), na przykład (dodając /usr/local/binna początku):

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

Zauważ też, że nie jest użyteczne próbowanie ustawienia CWD w ~/.ssh/rc(który jest uruchamiany po ~/.ssh/environmentodczytaniu, ale przed sshpowłoką lub poleceniem), ponieważ powłoka uruchomi się (domyślnie) na ścieżce domowej.

Jarko
źródło
podwójne +1, szukałem wszędzie tych informacji
spinup