En una Mac con OSX 10.7.5, necesito configurar la RUTA para usuarios no interactivos que se conectan a través de ssh y se autentican mediante LDAP. Es la misma pregunta que se hizo (y respondió) aquí:
pero no estoy lo suficientemente familiarizado con PAM o LDAP para entender completamente la respuesta.
Parece que necesito:
add a line to /etc/pam.d/sshd saying "auth required pam_env.so"
create a file named /etc/security/pam_env.conf
pero la documentación para pam_env.conf es realmente confusa y no puedo decir si necesito un valor DEFAULT o OVERRIDE.
¿Tengo razón en que esos son los pasos correctos? ¿Cuál es la línea que debo poner en pam_env.conf?
Gracias, cris
PD: Intenté poner la línea "auth requerida pam_env.so debug" en /etc/pam.d/sshd y no veo nada en /var/log/system.log que parezca provenir de pam_env.so. También creé /etc/security/pam_env.conf y puse en él la línea "PATH DEFAULT=/usr/fred OVERRIDE=/usr/george" y no tuvo ningún efecto visible en PATH.
pps Si ejecuto:
ssh USER@MACHINE echo \$SHELL
Dice /bin/bash. Si luego inicio sesión en MACHINE y agrego esta línea a /etc/bashrc:
export Test=Fred
y regresar a mi máquina y ejecutar:
ssh USER@MACHINE echo \$Test
no devuelve nada. Cuando inicio sesión de esta manera usando LDAP, no ejecuta /etc/bashrc.
ppps Alguna información adicional que puede ser importante: En MÁQUINA no hay ningún usuario local llamado USUARIO. MACHINE se configuró para realizar autenticación LDAP, por lo que cuando hago ssh USER@MACHINE, mi $HOME está configurado en /Network/Servers/blah/blah/Users/USER. Si edito /Network/Servers/blah/blah/Users/USER/.bashrc para configurar la RUTA, funciona correctamente para mí, pero no es una gran solución porque significa que cada persona que desee acceder a este servidor tiene que editar su red .bashrc.
Respuesta1
Esta es una modificación dehttps://askubuntu.com/questions/382485/ssh-how-to-force-execution-of-a-script-etc-sshrc-forcecommand-on.
Con lo siguiente, puede forzar el abastecimiento /etc/bashrc
para todos los inicios de sesión SSH, interactivos o no. Esto puede causar algunos problemas a aquellos usuarios que confían en /etc/bashrc
no ser ejecutados para inicios de sesión no interactivos, así que proceda con precaución (aunque esto es exactamente lo que está pidiendo, por lo que probablemente conozca las implicaciones).
Primero agregue ForceCommand /usr/local/bin/sshd_envs
a /etc/sshd_config
. Luego coloque lo siguiente en /usr/local/bin/sshd_envs
:
#!/bin/bash
source /etc/bashrc
if [ -n "$SSH_ORIGINAL_COMMAND" ]; then
eval $SSH_ORIGINAL_COMMAND
else
exec $SHELL
fi
Cualquiera que sea la configuración del entorno que establezca, /etc/bashrc
entrará en el entorno para cada inicio de sesión SSH.
Tenga en cuenta que el valor predeterminado /etc/bashrc
para OS/X se cerrará inmediatamente después de evaluar las primeras líneas (porque PS1 no está configurado para shells no interactivos):
if [ -z "$PS1" ]; then
return
fi
Así que comenta estas líneas o pon todo lo que quieras que se evalúe para tus inicios de sesión SSH no interactivos antes de esas líneas.