Como adicionar um usuário ssh que possui apenas permissões para acessar uma pasta específica?

17

Como adicionar um usuário ssh que possui apenas permissões para acessar uma pasta específica?

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

Eu criei um usuário chamado musteri. Defino sua pasta pessoal e grupo. Então, eu quero integrar musteriusuários em "/var/www/xyz.com.tr/musteri". Não quero que ele acesse outra pasta.

Violoncelo
fonte
Deseja que o usuário tenha acesso total ao shell ou apenas protocolos de cópia de arquivos como sftp e rsync?
Gilles 'SO- stop be evil'
Nesse último caso, convém procurar scponlyum shell, possivelmente operando no chrootmodo para restringir o acesso dele a esse diretório e a nenhum outro lugar.
precisa saber é o seguinte
1
@ Gilles - Eu quero acessar através do sftp. Mas não quero que ele acesse outra pasta.
Cell-o
1
@ Cell-o: Se você precisar apenas de alguns protocolos de transferência de arquivos e não de shells, use chroot plus scponly ou rssh (Google scponly chrootou rssh chrootdeve levar você a instruções).
Gilles 'SO- stop be evil'
Que tal usar ACLs?
fpmurphy

Respostas:

19

Parece que você deseja que seu müşteriler tenha acesso à transferência de arquivos para uma pasta sem realmente fornecer conchas. Isso é bom porque, como binfalse apontou , dar às pessoas shells com acesso limitado é complicado porque elas precisam acessar todos os tipos de coisas espalhadas no sistema apenas para serem executadas.

Para conceder acesso SFTP a uma pasta específica, você pode fazer algo assim.

  1. Adicione um novo grupo ao sistema, diga 'sftponly'.
  2. Adicione usuários no seu sistema que devam ter direitos restritos a este grupo. Você também pode conceder conchas restritas como / bin / true, mas isso não é obrigatório.
  3. Mude seu arquivo de configuração ssh (geralmente /etc/ssh/sshd_config) com estas linhas
    Subsistema sftp internal-sftp

    Grupo de jogo sftponly
        Diretório Chroot% h
        AllowTCPForwarding no
        X11Envio não
        ForceCommand sftp interno

Isso ativaria o subsistema sftp dentro do SSH e forçaria os membros desse grupo de sistemas a usar somente esse sistema ao efetuar login. Também os chrootaria em seus diretórios pessoais. Você pode mudar isso para ser uma subpasta das diretivas domésticas, assim como algo ChrootDirectory %h/musteri_sftppara que eles não pudessem ver o restante dos arquivos do sistema, mas acessariam diretamente uma subpasta especial da pasta pessoal.

Kolay gelsin.

Caleb
fonte
Öncelikle teşekkürler. ;) Como você mencionou, eu configurei o SFTP.But, eu tenho um problema com relação ao iptables. Aqui está minha regra. -> Um estado RH-Firewall-1-INPUT -m --state NEW -m tcp -p tcp --dport 21 -j ACEITAR
Cell-o
1
Birşey değil. Enquanto FTP iria usar a porta 21, SFTP é um ftp como protocolo que corre ao longo do canal SSH, por isso vai usar a porta SSH que por padrão é 22.
Caleb
Observe que você também deve localizar e comentar qualquer comando do subsistema existente anteriormente (por exemplo, subsistema sftp / usr / lib / openssh / sftp-server)
CnrL
Resolvi meu problema E aprendi algumas frases úteis em turco! Bônus!
precisa saber é o seguinte
2

Na minha opinião, isso é muito difícil, se não impossível. Quando o usuário se conecta via SSH, ele precisa de pelo menos um shell, no seu caso, o bash. Para executar, /bin/bashele precisa de permissões para acessar /bin. bashele próprio precisa ler algumas coisas de /etc(por exemplo /etc/bash.bashrc), para que o usuário também precise acessar /etc. Supondo que o usuário não queira apenas ficar nesse diretório, ele pode querer ler um arquivo, mas executar, por exemplo, vimele também precisa acessar /usr/bin.
Esta é apenas uma pequena demonstração, existem mais algumas dependências, por exemplo, eu realmente não sei o que acontecerá se o usuário não tiver acesso a /tmp..

Você deve pensar em sua intenção. Você só quer que alguém tenha acesso de leitura / gravação a uma parte do seu serviço da web? Em seguida, você pode configurar algo como FTP para exportar um diretório específico para este usuário. Portanto, ele é capaz de ler / gravar esses arquivos sem acesso SSH.
Outra boa solução seria um repositório. Por exemplo, configure um repositório GIT e permita que o usuário o clone. Ele pode fazer as alterações localmente e enviar um patch. Você pode decidir se aplica ou não esse patch, uma reversão para patches de buggy também é muito fácil.

binfalse
fonte
rbashfoi projetado para fazer exatamente isso.
bahamat
Essa coisa é chamada de shell restrito . Mas como o Cell-o só deseja permitir transferências de arquivos, não é a ferramenta certa.
Gilles 'SO- stop be evil'