Como restringir um usuário a uma pasta e não permitir que ele saia da pasta


28

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

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


Você pode querer usar contas de usuário separadas para esse fim.
Martin von Wittich

Ou talvez Jailkit
FloHimself

chmod não é boa solução, porque eu não posso usá-lo para toda a pasta no meu servidor eu usei antes que ele possa se mover para fora sua pasta
badr

na verdade, eu não tenho idéia do grupo porque eu não o usei antes. Você pode me explicar qual é o benefício dele?
badr

Respostas:


26

Eu 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/

Entregue os dois ao novo grupo

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

depois disso eu fui /etc/ssh/sshd_confige 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 vou adicionar um novo usuário com nome obama ao meu grupo:

$ sudo adduser --ingroup exchangefiles obama

Agora tudo está feito, portanto, precisamos reiniciar o serviço ssh:

$ sudo service ssh restart

aviso: o usuário agora não pode fazer nada fora do filediretório, quero dizer que todo o arquivo dele deve estar na pasta do arquivo.


11
sudo su - obamaTroquei usuários como e ainda assim ele pode ver os arquivos dos outros @badr
alper

11

Restrições são uma questão sensata 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 para esse usuário /etc/profile.

NOTA: se o executável com esse nome não existir no sistema, crie um link físico ln /bin/ksh /bin/rkshe kshdeterminará pelo nome se ele é restrito ou não.

O shell restrito vai (por exemplo) impedem fazendo um cdcomando, ou especificar um comando com um /(um caminho explícito) na invocação, e proibindo as alterando o PATH, SHELLou ENVvariável, e redirecionamentos de saída também são proibidos.

Você ainda pode fornecer scripts de shell predefinidos ao usuário que (sob o controle dos implementadores de script!) Permitirão ao usuário executar esse script específico em um ambiente irrestrito.


Essa resposta será muito mais simples do que a criação de um ambiente chroot, por isso votei de forma positiva.
Azhrei

5

O comando chrootpermite que você crie uma raiz restrita para um usuário. Esta pergunta explica o conceito chroote como usá-lo.

Atualização: a busca pela prisão de chroot configurada no oceano digital traz mais documentação específica para o ambiente. Aqui estão algumas que eu acho que estão relacionadas ao que você pode precisar.

Como configurar ambientes Chroot para teste em um Ubuntu 12.04 VPS

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

Aqui está um que diz respeito ao jailkit , que o próprio FloHim sugeriu.


sim, eles explicá-lo, mas eles não explicam como usá-lo, eu tentei com algum elogiar, mas que o que eu recebo: chroot: failed to comando run '/ bin / bash': Nenhum tal lima ou diretório
badr

11
É verdade, mas agora que você ouviu falar da prisão de chroot, poderia fazer mais pesquisas. Atualizei a resposta com alguns links para documentos no Digital Ocean, que fornecem mais explicações personalizadas para o ambiente.
X Tian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.