Como executar um script de sistema em qualquer login ssh (com OpenSSH)?

3

Em qualquer login / conexão do ssh (alguém logando através do ssh), existe uma maneira de executar um script? Usando o servidor OpenSSH.

O script não deve ser modificável por nenhum dos usuários, é claro, portanto, esse deve ser um script de todo o sistema.

Obrigado!

    
por Weboide 22.06.2010 / 02:21

4 respostas

1

Se você quiser fazer isso de forma não intrusiva à experiência do usuário, dê uma olhada no substituto do syslog (por exemplo, syslog-ng). Você pode acionar o comando nas mensagens de log enviadas ao syslog pelo servidor SSH quando alguém faz login.

Essa abordagem é um pouco rube-goldbergiana e depende do funcionamento correto do syslog. YMMV, IMHO, SLATFATF

    
por 22.06.2010 / 04:24
4

Você já tem um script que está sendo executado sempre que alguém faz login: /etc/profile

Você pode modificar esse script para executar qualquer tarefa que tenha em mente ou chamar o script diretamente. Nos derivados do Debian, você pode simplesmente soltar seu script personalizado (terminando em .sh ) em /etc/profile.d e ele será chamado automaticamente.

OBSERVAÇÃO: Tudo o que acabei de dizer se aplica apenas aos derivados de shell Bourne, como o padrão /bin/sh , ash, bash, ksh etc. A maioria dos usuários mantém o bash, portanto as instruções acima são prováveis tudo que você precisa. Outras famílias de shells usam outros scripts de inicialização. O tcsh, por exemplo, executará /etc/csh.cshrc no login.

    
por 22.06.2010 / 05:46
2

Veja ForceCommand em sshd_config(5) :

Forces the execution of the command specified by ForceCommand,
ignoring any command supplied by the client and ~/.ssh/rc if
present.  The command is invoked by using the user's login shell
with the -c option.  This applies to shell, command, or subsystem
execution.  It is most useful inside a Match block.  The command
originally supplied by the client is available in the
SSH_ORIGINAL_COMMAND environment variable.  Specifying a command
of ''internal-sftp'' will force the use of an in-process sftp
server that requires no support files when used with
ChrootDirectory.
    
por 22.06.2010 / 03:00
0

Você pode alterar o shell de um usuário de forma que um script personalizado seja executado no login. Pode ser o shell padrão para qualquer usuário que precise dele (eu recomendaria manter uma conta de administrador com o bash para corrigir problemas).

    
por 22.06.2010 / 02:41