2 votes

Comment puis-je définir un chemin pour un utilisateur non interactif authentifié à l'aide de LDAP ?

Sur un Mac fonctionnant sous OSX 10.7.5, je dois définir le CHEMIN pour les utilisateurs non interactifs qui se connectent via ssh et sont authentifiés à l'aide de LDAP. C'est la même question qui a été posée (et répondue) ici :

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

mais je ne suis pas assez familiarisé avec PAM ou LDAP pour comprendre pleinement la réponse.

Il semble que je dois :

ajouter une ligne à /etc/pam.d/sshd disant "auth      required    pam_env.so"
créer un fichier nommé /etc/security/pam_env.conf

mais la documentation pour pam_env.conf est vraiment confuse et je ne peux pas dire si j'ai besoin d'une valeur DEFAULT ou OVERRIDE.

Suis-je à droite en disant que ce sont les étapes correctes ? Quelle est la ligne que je devrais mettre dans pam_env.conf ?

Merci, Chris

p.s. J'ai essayé de mettre la ligne "auth required pam_env.so debug" dans /etc/pam.d/sshd et je ne vois rien dans /var/log/system.log qui semble provenir de pam_env.so. J'ai également créé /etc/security/pam_env.conf et y ai inséré la ligne "CHEMIN DEFAULT=/usr/fred OVERRIDE=/usr/george" et cela n'a eu aucun effet visible sur le CHEMIN.

p.p.s Si j'exécute :

ssh UTILISATEUR@MACHINE echo \$SHELL

Il indique /bin/bash. Si je me connecte ensuite à MACHINE et ajoute cette ligne à /etc/bashrc :

export Test=Fred

et que je retourne sur ma machine et exécute :

ssh UTILISATEUR@MACHINE echo \$Test

cela ne renvoie rien. Lorsque je me connecte de cette manière en utilisant LDAP, il n'exécute pas /etc/bashrc.

p.p.p.s Quelques informations supplémentaires qui pourraient être importantes : Sur MACHINE, il n'y a pas d'utilisateur local nommé UTILISATEUR. MACHINE a été configuré pour effectuer une authentification LDAP donc lorsque je me connecte en ssh UTILISATEUR@MACHINE, mon $HOME est défini sur /Network/Servers/blah/blah/Users/UTILISATEUR. Si j'édite /Network/Servers/blah/blah/Users/UTILISATEUR/.bashrc pour définir le CHEMIN, cela fonctionne correctement pour moi, mais ce n'est pas une solution idéale car cela signifie que chaque personne souhaitant accéder à ce serveur doit éditer son .bashrc réseau.

0voto

Ceci est une modification de https://askubuntu.com/questions/382485/ssh-how-to-force-execution-of-a-script-etc-sshrc-forcecommand-on .

Avec ce qui suit, vous pouvez forcer le sourçage de /etc/bashrc pour toutes les connexions SSH, interactives ou non. Cela peut poser problème à ceux qui se reposent sur le fait que /etc/bashrc ne soit pas exécuté pour les connexions non interactives, alors procédez avec prudence (bien que ce soit exactement ce que vous demandez, donc vous connaissez probablement les implications).

Ajoutez d'abord ForceCommand /usr/local/bin/sshd_envs dans /etc/sshd_config. Ensuite, ajoutez ce qui suit dans /usr/local/bin/sshd_envs:

#!/bin/bash

source /etc/bashrc

if [ -n "$SSH_ORIGINAL_COMMAND" ]; then
  eval $SSH_ORIGINAL_COMMAND
else
  exec $SHELL
fi

Tous les paramètres d'environnement que vous ajoutez à /etc/bashrc seront pris en compte pour chaque connexion SSH.

Veuillez noter que le /etc/bashrc par défaut pour OS/X va se terminer immédiatement après avoir évalué les premières lignes (car PS1 n'est pas défini pour les shells non interactifs):

if [ -z "$PS1" ]; then
  return
fi

Alors soit commentez ces lignes, soit mettez tout ce que vous voulez évaluer pour vos connexions SSH non interactives avant ces lignes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X