Questão Como permitir que determinados Unix-User acessem apenas um diretório


Como permitir que determinados usuários Unix acessem apenas um diretório, por exemplo

Eu quero deixar o seguinte nome de usuário dimensão  para acessar o seguinte diretório / var / opt / test / reports / *

Como eu posso fazer isso via Unix?


0


origem




Respostas:


A maneira mais simples de fazer isso é usar ACL negativo, isto é, proibindo explicitamente o usuário (chamá-lo user_no) de usar qualquer diretório, exceto o que você mencionou.

Depois de instalar o ACL, o seguinte comando

 setfacl -m user:user_no:0 /home/my_home

irá impedi-lo de acessar sua casa. Você deve se lembrar de bloquear explicitamente cada lugar que deseja barrar, mas deve se lembrar de permitir o uso de algumas diretivas (/ usr, / bin ..), caso contrário, você também o impedirá de usar comandos comuns do Unix.

Você também deve permitir que ele use seu diretório pessoal (não acho que uma conta possa funcionar com isso) e o diretório que você mencionou acima.

Alternativamente, você pode chroot a conta. Isto pode ser feito de duas maneiras: no primeiro, você só permite o acesso ssh, no segundo você chroot a conta do shell. O segundo método é mais complicado, e eu nunca tentei, então não posso oferecer orientação. Você pode o Google conta shell chroot. O primeiro método é simples, apenas modifique o arquivo / etc / ssh / sshd_config introduzindo estas linhas na parte inferior:

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

Isso liga o usuário ao seu diretório pessoal (% h acima) e garante que ele tenha acesso à ajuda interna do sftp. Além disso, adicione o user_no ao grupo sftp da seguinte forma:

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

O comando importante é o segundo: ele garante que o usuário nunca obterá acesso ao shell.

Por fim, crie um link simbólico, no diretório inicial do usuário, para o diretório ao qual você deseja permitir acesso:

 # cd /home/user_no
 # ln -s /var/opt/test/reports work

Isso cria um subdiretório ao qual ele tem acesso, mas não pode criar nenhum arquivo, apenas funciona nos existentes. Se você quiser permitir que ele crie arquivos, terá que alterar as permissões em / var / opt / test / reports.


2



Obrigado pelo feedback .. Na verdade eu quero o usuário chamado dimen para acessar a máquina Unix para executar / executar apenas scripts específicos. Eu tentei o seguinte, setfacl -m usuário: dimen: 0 / var / opt / MobileCom / STP_REPORTS / Auto / Mas, finalmente, o usuário dimen ainda capaz de acessar todos os diretórios :( O que eu tenho que fazer isso? - ala.alzyadat