¿Cómo puedo configurar la ruta para un usuario no interactivo autenticado mediante LDAP?

¿Cómo puedo configurar la ruta para un usuario no interactivo autenticado mediante LDAP?

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í:

https://serverfault.com/questions/139426/updating-the-path-for-running-an-command-through-ssh-with-ldap-user-account

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/bashrcpara todos los inicios de sesión SSH, interactivos o no. Esto puede causar algunos problemas a aquellos usuarios que confían en /etc/bashrcno 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_envsa /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/bashrcentrará en el entorno para cada inicio de sesión SSH.

Tenga en cuenta que el valor predeterminado /etc/bashrcpara 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.

información relacionada