O mecanismo a ser usado depende de seus objetivos.
Se você deseja fornecer algo conveniente ou amigável para seus usuários, /etc/profileé razoável o suficiente se todos eles usarem o mesmo shell. Se você deseja que os comandos sejam executados apenas ao fazer login via ssh, coloque os comandos em /etc/ssh/sshrc. (Se você não se importa que os usuários substituam os comandos por seus próprios ~/.ssh/rcarquivos.)
Se você deseja forçar um usuário a executar um programa e apenas um programa , a ForceCommandopção descrita pelo DigitalRoss é uma boa abordagem. Pessoalmente, eu 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 não permita que um usuário escape. Eu trabalhei no AppArmor por dez anos, então esse é o ferramenta que eu escolheria primeiro, mas os outros são ótimas ferramentas escritas por excelentes programadores.)
Se você deseja apenas que um programa execute e não incomode o usuário de forma alguma , a melhor abordagem é usar o pam_exec(8)módulo, que não pode ser ignorado, funciona independentemente do shell e oferece fácil capacidade de execução como usuário ou usuário conta do programa que está executando a autorização. A página de manual fornece 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 rodar em auth, account, password, e sessionações; provavelmente sessionseria melhor para executar após o login. Basta adicionar uma linha como:
session optional pam_exec.so log=/var/log/ssh_login_cmd /usr/local/bin/ssh_cmd
para o seu /etc/pam.d/sshdarquivo de controle.