Permitir que um grupo UNIX acesse apenas um único arquivo por meio do SSH

3

Eu gostaria de configurar um grupo de usuários do UNIX que tenha acesso somente a um arquivo específico do Python via SSH. Ou seja, eles não devem ser capazes de executar quaisquer outros comandos / programas ou visualizar qualquer parte da estrutura do arquivo.

Já meio que consegui isso executando o script no logon e desabilitando as interrupções do teclado, mas isso não é ideal, já que os usuários ainda podem se conectar via WinSCP e navegar pela estrutura do arquivo. Eu olhei para a criação de uma prisão que restringe os usuários para um determinado diretório, mas isso parece um exagero para os meus propósitos e ainda permitiria o acesso ao shell. Qual é a solução mais eficiente / segura?

Edite com mais detalhes conforme solicitado: O script precisa ser executado no servidor porque frequentemente se conecta e atualiza / lê um banco de dados que também reside no servidor. Os usuários estarão interagindo uns com os outros no servidor através do script. Eu não quero exigir que os usuários baixem / instalem qualquer coisa que não seja um cliente SSH, mas eu quero restringir o acesso a todas as partes do servidor que não sejam o script.

    
por Ecliptica 06.01.2017 / 06:52

1 resposta

2

Minha solução foi seguir o comentário de Kenneth e configurar lshell - foi muito fácil e rápido de fazer.

  1. Executar sudo apt install lshell para obter lshell
  2. Crie um grupo do UNIX (por exemplo, sudo groupadd testgroup )
  3. Adicionar usuário (s) necessário (s) ao seu grupo (por exemplo, sudo usermod -a -G testgroup username )
  4. Adicione também o (s) usuário (s) ao grupo lshell (por exemplo, sudo usermod -a -G lshell username )
  5. Edite /etc/lshell.conf com a configuração desejada (veja abaixo)
  6. Defina lshell como o shell padrão para o (s) usuário (s) (por exemplo, chsh -s /usr/bin/lshell username )

Com a configuração abaixo, testuser só pode executar script.py após o login através do SSH. Eles não podem se conectar ao SCP / SFTP ou navegar na estrutura de arquivos através do shell.

[grp:testgroup]
login_script    : "python /some/path/script.py"
path            : "/some/path/"
forbidden       : ["ls", "echo", "cd"]
scp             : 0
sftp            : 0
    
por 06.01.2017 / 20:28