Como posso definir o caminho para um usuário não interativo autenticado usando o LDAP?

2

Em um Mac que executa o OSX 10.7.5, preciso definir o PATH para usuários não interativos que se conectam por meio do ssh e são autenticados usando o LDAP. É a mesma pergunta que foi feita (e respondida) aqui:

link

mas não estou familiarizado o suficiente com o PAM ou LDAP para entender completamente a resposta.

Parece que preciso:

add a line to /etc/pam.d/sshd saying "auth      required    pam_env.so"
create a file named /etc/security/pam_env.conf

mas a documentação do pam_env.conf é realmente confusa e não sei dizer se preciso de um valor padrão ou override.

Estou certo de que essas são as etapas corretas? Qual é a linha que devo colocar no pam_env.conf?

Obrigado Chris

p.s. Eu tentei colocar a linha "auth required pam_env.so debug" em /etc/pam.d/sshd e não estou vendo nada em /var/log/system.log que pareça vir de pam_env.so. Eu também criei o /etc/security/pam_env.conf e coloquei a linha "PATH DEFAULT = / usr / fred OVERRIDE = / usr / george" e não teve efeito visível no PATH.

p.p.s Se eu executar:

ssh USER@MACHINE echo \$SHELL

Diz / bin / bash. Se eu, então, entrar no MACHINE e adicionar esta linha ao / etc / bashrc:

export Test=Fred

e volte para minha máquina e execute:

ssh USER@MACHINE echo \$Test

não retorna nada. Quando eu faço logon dessa maneira usando o LDAP, ele não executa o / etc / bashrc.

p.p.p.s Algumas informações adicionais que podem ser importantes: No MACHINE não existe um usuário local chamado USER. MACHINE foi configurada para fazer autenticação LDAP, portanto, quando eu ssh USER @ MACHINE, meu $ HOME é definido como / Network / Servers / blah / blah / Users / USER. Se eu editar /Network/Servers/blah/blah/Users/USER/.bashrc para definir o PATH, ele funcionará corretamente para mim, mas não é uma ótima solução porque significa que todas as pessoas que desejam acessar este servidor precisam editar rede .bashrc.

    
por Betty Crokker 05.12.2013 / 22:24

1 resposta

0

Esta é uma modificação de link .

Com o seguinte, você pode forçar o fornecimento de /etc/bashrc para todos os logins SSH, interativos ou não. Isso pode causar alguns problemas para os usuários que confiam em /etc/bashrc não serem executados para logins não interativos, portanto, continue com cuidado (embora seja exatamente isso que você está pedindo, então você provavelmente conhece as implicações).

Primeiro, adicione ForceCommand /usr/local/bin/sshd_envs a /etc/sshd_config . Em seguida, coloque o seguinte em /usr/local/bin/sshd_envs :

#!/bin/bash

source /etc/bashrc

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

Quaisquer configurações de ambiente que você colocar em /etc/bashrc entrarão no ambiente para cada login SSH.

Por favor, note que o padrão /etc/bashrc para OS / X sairá imediatamente após avaliar as primeiras linhas (porque PS1 não está configurado para shells não interativos):

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

Então, comente essas linhas ou coloque tudo o que você deseja que seja avaliado para seus logins SSH não interativos antes dessas linhas.

    
por 06.12.2013 / 17:55