Eu tenho um servidor web CentOS 5.7 e desejo alterar o local padrão em que aterro ao me conectar usando o SSH.
Atualmente, aterro /home/username
e quero aterrar em seu /home
lugar.
Fui como root e adicionei PermitUserEnvironment yes
a /etc/.ssh/sshd_config
- e, como eu o entendo, isso varre a ssh
pasta do próprio usuário para um environment
arquivo. O que não tenho certeza é exatamente o que estou adicionando a esse arquivo de ambiente, pois export path=$PATH:$HOME
parece não funcionar, aqui ou nos meus arquivos .bashrc ou .bash_profile (que, pelo que entendi, não faria diferença) mesmo assim, como uma conexão SSH é um shell não interativo?).
Desde já, obrigado.
usermod
quando mudar qualquer coisa sobre um usuário que grava/etc/passwd
, para evitar erros:usermod -d /home user
..bashrc
me deixou cara a cara. É tão simples e óbvio, gostaria de ter pensado nisso! Bom trabalho. Parabéns!O que é preciso lembrar é que
~/.ssh/environment
é lido antes que um shell oussh
comando seja gerado, portanto (por exemplo) nem exportar nem $ PATH fazem sentido. Você só pode definir variáveis de ambiente (não executar comandos gerais do shell) aqui.Se você pegar o ambiente para um shell ssh não interativo e modificá-lo, deverá obter o que deseja para comandos não interativos. Por exemplo:
$ ssh mylogin@myserver env
lhe dará o que o ssh inicia no seu servidor. Se você escrever seu
~/.ssh/environment
arquivo como:PATH=/usr/local/bin
e execute novamente o procedimento acima, você deve obter "bash: env: command not found". Boa!
Agora, construa seu caminho explicitamente, com base no que estava na base do sistema
sshd
(por exemplo, a primeira chamada "ssh .... env"), por exemplo (adicionando/usr/local/bin
na cabeça):PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Observe também que não é útil tentar definir o CWD
~/.ssh/rc
(que é executado depois da~/.ssh/environment
leitura, mas antes do seussh
shell ou comando), pois o seu shell será iniciado (por padrão) em seu caminho inicial.fonte