Como restringir um usuário a uma pasta e não permitir que ela mova sua pasta

27

Eu tenho o servidor ubuntu no digitalocean e quero dar a alguém uma pasta para o seu domínio no meu servidor, meu problema é, eu não quero que o usuário veja minhas pastas ou arquivos ou seja capaz de mover sua pasta .

Como posso restringir este usuário em sua pasta e não permitir que ele saia e veja outros arquivos / diretórios?

    
por badr 11.06.2015 / 12:52

3 respostas

24

Resolvi meu problema desta maneira:

Crie um novo grupo

$ sudo addgroup exchangefiles

Crie o diretório chroot

$ sudo mkdir /var/www/GroupFolder/
$ sudo chmod g+rx /var/www/GroupFolder/

Crie o diretório gravável em grupo

$ sudo mkdir -p /var/www/GroupFolder/files/
$ sudo chmod g+rwx /var/www/GroupFolder/files/

Dê a ambos para o novo grupo

$ sudo chgrp -R exchangefiles /var/www/GroupFolder/

depois disso, fui para /etc/ssh/sshd_config e adicionei ao final do arquivo:

Match Group exchangefiles
  # Force the connection to use SFTP and chroot to the required directory.
  ForceCommand internal-sftp
  ChrootDirectory /var/www/GroupFolder/
  # Disable tunneling, authentication agent, TCP and X11 forwarding.
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

Agora, adicionarei um novo usuário com o nome obama ao meu grupo:

$ sudo adduser --ingroup exchangefiles obama

Agora tudo está pronto, então precisamos reiniciar o serviço ssh:

$ sudo service ssh restart

aviso: o usuário agora não pode fazer nada fora do diretório file Quero dizer, todo o arquivo dele deve estar no arquivo Folder.

    
por 11.06.2015 / 20:20
11

As restrições são uma questão sensível e devem ser definidas de forma consistente. O que você pode fazer é definir um shell restrito para o usuário como seu shell padrão .

Por exemplo, definir /bin/rksh (um kornshell restrito) em vez do shell predefinido do usuário como o shell padrão desse usuário em /etc/profile .

OBSERVAÇÃO: se o executável com este nome não existir em seu sistema, crie um link físico ln /bin/ksh /bin/rksh e ksh determinará por seu nome se ele é restrito ou não.

O shell restrito irá (por exemplo) impedir a execução de um comando cd , ou a especificação de um comando com / (um caminho explícito) na chamada, e não permitirá a alteração do PATH , SHELL ou ENV variable e redirecionamentos de saída também são proibidos.

Você pode ainda fornecer scripts de shell predefinidos para o usuário que (sob o controle de implementadores de script!) permitirá que o usuário execute esse (s) script (s) específico (s) em um ambiente irrestrito.

    
por 11.06.2015 / 15:25
5

O comando chroot permite que você crie uma raiz restrita para um usuário, este question explica o conceito de chroot e como usá-lo.

Atualização: Pesquisando cadeia chroot configurada no oceano digital , traz documentação adicional específica para seu ambiente. Aqui está um casal que eu acho que está relacionado ao que você pode precisar.

Como Para configurar ambientes Chroot para testar em um VPS Ubuntu 12.04

Como permitir acesso SSH restrito a usuário preso em chroot

Aqui está um que se relaciona ao jailkit , que < a href="https://unix.stackexchange.com/users/65114/flohimself"> FloHimself sugerido.

    
por 11.06.2015 / 13:25