Cria um usuário no linux que pode acessar apenas uma pasta específica

0

Eu preciso criar um usuário no linux usando putty que só pode acessar uma pasta específica. Eu criei um usuário usando useradd, mas o usuário pode acessar todas as pastas na conta principal.

    
por Shmuel 10.05.2018 / 12:24

1 resposta

2

Você precisa configurar a cadeia sro chroot.

Veja esta instrução.

Como @Romeo perguntou, incluo aqui partes essenciais da página vinculada.

Criar diretório para usuário:

# mkdir -p /home/test

Este diretório deve conter os arquivos e diretórios necessários para suportar a sessão de um usuário, isso requer pelo menos um shell, comumente sh, e nós básicos / dev como dispositivos null, zero, stdin, stdout, stderr e tty:

# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

Aprenda dois números da listagem - existem números maiores e menores. Crie o comando / dev with mknod (não faça copiar os comandos abaixo, é apenas um exemplo, use números corretos):

# mkdir -p /home/test/dev/      
# cd /home/test/dev/
# mknod -m 666 null c 1 3
# mknod -m 666 tty c 5 0
# mknod -m 666 zero c 1 5
# mknod -m 666 random c 1 8'

Definir permissões:

# chown root:root /home/test
# chmod 0755 /home/test
# ls -ld /home/test

Crie o diretório bin e copie os arquivos / bin / bash para ele:

# mkdir -p /home/test/bin
# cp /bin/bash /home/test/bin/

Identifique as bibliotecas compartilhadas requeridas pelo bash, e copie-as (faça não copie e cole os comandos abaixo, é apenas um exemplo) para a pasta lib:

# ldd /bin/bash
# mkdir -p /home/test/lib64
# cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2}  /home/test/lib64/

Crie o usuário SSH com o comando useradd e defina uma senha segura para o usuário:

# useradd tecmint
# passwd tecmint

Crie o diretório de configurações gerais do chroot jail, / home / test / etc e copie os arquivos de conta atualizados (/ etc / passwd e / etc / group) para este diretório:

# mkdir /home/test/etc
# cp -vf /etc/{passwd,group} /home/test/etc/

Abra o arquivo sshd_config e adicione as linhas abaixo no arquivo.

# vi /etc/ssh/sshd_config
    #define username to apply chroot jail to
    Match User tecmint
    #specify chroot jail
    ChrootDirectory /home/test

Salve o arquivo, saia e reinicie o SSHD:

 # systemctl restart sshd

Teste se a configuração do chroot jail está funcionando como esperado. Agora o usuário só pode executar o bash e seus comandos internos, como (pwd, histórico, eco etc.).

 # ssh [email protected]

Crie um diretório pessoal para o usuário do SSH:

# mkdir -p /home/test/home/tecmint
# chown -R tecmint:tecmint /home/test/home/tecmint
# chmod -R 0700 /home/test/home/tecmint

Instale alguns comandos do usuário, como ls, date, mkdir no diretório bin:

# cp /bin/ls /home/test/bin/
# cp /bin/date /home/test/bin/
# cp /bin/mkdir /home/test/bin/

Verifique as bibliotecas compartilhadas para os comandos acima e mova-as para o diretório de bibliotecas de jaula chrooted:

# ldd /bin/ls
# cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

Este é o fim . Mas se você precisar permitir apenas conexões sftp, adicione a linha abaixo no arquivo / etc / ssh / sshd_config:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Salve o arquivo e saia. Em seguida, reinicie os serviços do SSHD:

# systemctl restart sshd
    
por 11.05.2018 / 15:06

Tags