Modificare il percorso predefinito per quando SSH nel server CentOS?


12

Ho un server web CentOS 5.7 e desidero modificare la posizione predefinita in cui mi trovo quando mi connetto usando SSH.

Attualmente atterro /home/usernamee voglio atterrare /homeinvece.

Sono entrato come root e l'ho aggiunto PermitUserEnvironment yesa /etc/.ssh/sshd_config- e a quanto ho capito, quindi spazza la sshcartella dell'utente per un environmentfile. Ciò di cui non sono sicuro è esattamente ciò che sto aggiungendo a questo file di ambiente, poiché export path=$PATH:$HOMEnon sembra funzionare, né qui né nei miei file .bashrc o .bash_profile (che a quanto ho capito non farebbe differenza comunque come una connessione SSH è una shell non interattiva?).

Grazie in anticipo.

Risposte:


14

Se si utilizza PAM per l'autenticazione, che è probabilmente il più probabile. Come radice in testa /etc/passwd.

Lì dovresti vedere il tuo nome utente e il tuo percorso! Cambia lì e sei a casa gratis!

EDIT - Mi dispiace che mi sia venuto in mente che forse non volevi cambiare la tua cartella home. In tal caso, aggiungi semplicemente:

cd /home

Alla fine del tuo .bashrcfile!


4
E 'meglio usare usermodquando si cambia tutto ciò che riguarda un utente che scrive /etc/passwd, per evitare errori: usermod -d /home user.
laebshade

1
Quel commento laterale su .bashrcmi ha fatto facepalm. È così semplice ed ovvio, vorrei averci pensato! Buon lavoro. Complimenti!
cwallenpoole,

4

La cosa da ricordare è che ~/.ssh/environmentviene letto prima che sshvenga generata una shell o un comando, quindi (per esempio) né export né $ PATH hanno senso. Qui puoi solo impostare variabili d'ambiente (non eseguire comandi generali di shell).

Se prendi l'ambiente per una shell ssh non interattiva, quindi modificala, dovresti ottenere ciò che desideri per i comandi non interattivi. Per esempio:

$ ssh mylogin@myserver env

ti darà quello che inizia con ssh sul tuo server. Se scrivi il tuo ~/.ssh/environmentfile come:

PATH=/usr/local/bin

e riesegui quanto sopra, dovresti ottenere "bash: env: comando non trovato". Buona!

Ora, costruisci il tuo percorso esplicitamente, basandoti su quello che era alla base del tuo sistema sshd(cioè la prima chiamata "ssh .... env"), per esempio (aggiungendo /usr/local/binall'inizio):

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

Si noti inoltre che non è utile provare a impostare il CWD in ~/.ssh/rc(che viene eseguito dopo la ~/.ssh/environmentlettura, ma prima della sshshell o del comando) poiché la shell inizierà (per impostazione predefinita) nel percorso principale.


doppio +1, stavo cercando dappertutto queste informazioni
spinup,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.