¿Cambiar la ruta predeterminada para cuando ingreso SSH al servidor CentOS?

12

Tengo un servidor web CentOS 5.7, y quiero cambiar el lugar predeterminado en el que aterrizo cuando me conecto usando SSH.

Actualmente aterrizo /home/usernamey quiero aterrizar en su /homelugar.

He ido como root y añadido PermitUserEnvironment yesa /etc/.ssh/sshd_config- y como yo lo entiendo esto, entonces barre propia del usuario sshcarpeta para un environmentarchivo. Lo que no estoy seguro es exactamente lo que estoy agregando a este archivo de entorno, ya export path=$PATH:$HOMEque no parece funcionar, ya sea aquí o en mis archivos .bashrc o .bash_profile (que, según tengo entendido, no haría una diferencia de todos modos como una conexión SSH es un shell no interactivo?).

Gracias por adelantado.

Ben
fuente

Respuestas:

14

Si está utilizando PAM para la autenticación, que probablemente sea la más probable. Como cabeza de raíz /etc/passwd.

¡Allí debería ver su nombre de usuario y ruta! ¡Cámbialo allí y estarás en casa gratis!

EDITAR - Lamento que se me haya ocurrido que tal vez no deseaba cambiar su carpeta de inicio. En ese caso, simplemente agregue:

cd /home

¡Al final de tu .bashrcarchivo!

stevie I
fuente
44
Es mejor utilizar usermodcuando se cambia nada respecto a un usuario que escribe /etc/passwd, para evitar errores: usermod -d /home user.
laebshade
1
Ese comentario secundario sobre .bashrcme hizo facepalm. Es tan simple y obvio, ¡desearía haberlo pensado! Buen trabajo. ¡Prestigio!
cwallenpoole
4

Lo que debe recordar es que ~/.ssh/environmentse lee antes de que se genere un shell o sshcomando, por lo que (por ejemplo) ni la exportación ni $ PATH tienen sentido. Aquí solo puede establecer variables de entorno (no ejecutar comandos generales de shell).

Si toma el entorno para un shell ssh no interactivo, luego modifique eso, debería obtener lo que desea para los comandos no interactivos. Por ejemplo:

$ ssh mylogin@myserver env

le dará con qué comienza el ssh en su servidor. Si escribe su ~/.ssh/environmentarchivo como:

PATH=/usr/local/bin

y vuelva a ejecutar lo anterior, debería obtener "bash: env: comando no encontrado". ¡Bueno!

Ahora, construya su ruta explícitamente, en función de lo que estaba en la base de su sistema sshd(es decir, la primera llamada "ssh .... env"), por ejemplo (agregando /usr/local/binen la cabeza):

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

Tenga en cuenta también que no es útil intentar configurar el CWD en ~/.ssh/rc(que se ejecuta después de ~/.ssh/environmentleerse, pero antes de su sshshell o comando) ya que su shell se iniciará (de forma predeterminada) en su ruta de inicio.

Yarko
fuente
doble +1, buscaba esta información en todas partes
spinup