O mecanismo a ser usado depende dos seus objetivos.
Se você deseja fornecer algo conveniente ou amigável para seus usuários, o /etc/profile
é razoável o suficiente se todos os usuários usarem o mesmo shell. Se você quiser que os comandos executem somente ao efetuar login via ssh
, coloque os comandos em /etc/ssh/sshrc
. (Se você não se importa em substituir os comandos pelo seu próprio arquivo ~/.ssh/rc
.)
Se você quiser forçar um usuário a executar um programa, e apenas um programa , a opção ForceCommand
, conforme descrito pela DigitalRoss, é uma boa abordagem. (Eu, pessoalmente, limitaria ainda mais o usuário a um sistema de controle de acesso obrigatório como AppArmor , SELinux , TOMOYO , ou SMACK , para garantir que o programa possa Não permitimos que um usuário escape. Eu trabalhei no AppArmor por dez anos, então essa é a ferramenta que eu escolhi primeiro, mas os outros são ótimas ferramentas escritas por excelentes programadores.)
Se você quer apenas um programa para executar e não incomodar o usuário de alguma forma , a melhor abordagem é usar o módulo pam_exec(8)
, que não pode ser ignorado, funciona independentemente do shell, e fornece uma capacidade fácil de executar como o usuário ou como a conta do usuário do programa que executa a autorização. A manpage dá o seguinte exemplo:
Add the following line to /etc/pam.d/passwd to rebuild the
NIS database after each local password change:
passwd optional pam_exec.so seteuid make -C /var/yp
This will execute the command
make -C /var/yp
with effective user ID.
Isso pode ser estendido para execução nas ações auth
, account
, password
e session
; provavelmente session
seria melhor para executar no login. Basta adicionar uma linha como:
session optional pam_exec.so log=/var/log/ssh_login_cmd /usr/local/bin/ssh_cmd
ao seu arquivo de controle /etc/pam.d/sshd
.