Posso criar um usuário SSH que possa acessar apenas um determinado diretório?


45

Eu tenho um servidor virtual privado ao qual posso me conectar usando SSH com minha conta root, sendo capaz de executar qualquer comando linux e acessar toda a área do disco, obviamente.

Gostaria de criar outra conta de usuário, capaz de acessar este servidor usando SSH também, mas apenas para um determinado diretório, por exemplo /var/www/example.com/

Por exemplo, imagine que este usuário tenha um arquivo ENORME error.log (500 MB) localizado em /var/www/example.com/logs/error.log Ao acessar este arquivo usando FTP, esse usuário precisará fazer o download de 500 MB para visualizar as últimas linhas do log, mas eu gostaria que ele fosse capaz de executar algo como isto:

tail error.log

Portanto, eu preciso que ele consiga acessar o servidor usando SSH, mas não quero conceder a ele acesso a todas as áreas do servidor.

Como posso fazer isso?

Respostas:


29

chroot o usuário.


Atualizar:

O artigo TechRepublic de Vincent Danen diz:

Com o lançamento do OpenSSH 4.9p1, você não precisa mais confiar em hacks de terceiros ou em configurações complicadas de chroot para confinar os usuários aos seus diretórios pessoais ou dar acesso a serviços SFTP.

edite / etc / ssh / sshd_config (/ etc / sshd_config em algumas distribuições) e defina as seguintes opções:

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Verifique se a diretiva "Corresponder" está no final do arquivo. Isso informa ao OpenSSH que todos os usuários do grupo sftp devem ser chrootados para o diretório inicial (o que% h representa no comando ChrootDirectory

Para qualquer usuário que você deseja chroot, adicione-o ao grupo sftp usando:

# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe

O comando usermod acima adicionará user joe ao grupo sftp e configurará seu shell como / bin / false para que eles nunca possam obter acesso ao shell. Os comandos chown e chmod definirão as permissões necessárias para o diretório. Com essas permissões definidas, o usuário poderá carregar e baixar arquivos, mas não poderá criar diretórios ou arquivos no diretório raiz

Fazer o chroot de contas shell é um pouco mais complicado, pois exige que certos arquivos de dispositivo e um shell estejam disponíveis no diretório inicial do usuário. Os seguintes comandos configuram um sistema chroot muito básico no Mandriva Linux:

# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe

Com o exposto acima, o usuário joe pode entrar e será restrito ao chroot. Infelizmente, isso não faz muito, mas fornece uma idéia de como ele pode ser configurado. Dependendo do que você deseja fornecer, será necessário instalar bibliotecas e binários adicionais.


O site da comunidade Ubuntu diz

Criando um chroot

  1. Instale os pacotes dchroot e debootstrap.

  2. Como administrador (por exemplo, usando o sudo), crie um novo diretório para o chroot. Neste procedimento, o diretório /var/chrootserá usado. Para fazer isso, digite sudo mkdir /var/chroot uma linha de comando.

  3. Como administrador, abra /etc/schroot/schroot.confem um editor de texto. Digite cd /etc/schroot, seguido por gksu gedit schroot.conf. Isso permitirá que você edite o arquivo.

  4. Adicione as seguintes linhas schroot.confe salve e feche o arquivo. Substitua your_usernamepelo seu nome de usuário.

    [lucid] description = Localização do Ubuntu Lucid = / var / chroot priority = 3 usuários = your_username groups = sbuild root-groups = root

Abra um terminal e digite:

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

Isso criará uma 'instalação' básica do Ubuntu 10.04 (Lucid Lynx) no chroot. Pode demorar um pouco para que os pacotes sejam baixados. Nota: Você pode substituir o lucid pela versão do Ubuntu de sua escolha. Nota: Você deve alterar o acima mirror.url.comcom o URL de um espelho de arquivamento válido local para você. Um chroot básico agora deveria ter sido criado. Digite sudo chroot /var/chroot para mudar para um shell raiz dentro do chroot.

Configurando o chroot

Existem algumas etapas básicas que você pode executar para configurar o chroot, fornecendo recursos como resolução e acesso DNS /proc.

Nota: Digite esses comandos em um shell que está fora do chroot.

Digite o seguinte para montar o /proc sistema de arquivos no chroot (necessário para gerenciar processos):

sudo mount -o bind /proc /var/chroot/proc  

Digite o seguinte para permitir a resolução DNS a partir do chroot (necessário para acesso à Internet):

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

Muito poucos pacotes são instalados por padrão em um chroot (mesmo o sudo não está instalado). Use apt-get install package_namepara instalar pacotes.


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.