VSFTPD Limitar o acesso do usuário somente a pastas específicas

0

Na minha aplicação eu tenho pasta / LD e um usuário como test_user. Eu quero dar acesso ao usuário apenas para esta pasta / LD. Mas quando eu tento conectar através do cliente ftp filezila, então por defualt / LD é carregado, mas o usuário pode navegar em outras pastas também. Eu quero que os usuários acessem apenas essa pasta. Eu estou usando o sistema Linux 4.9 Embedded. Abaixo do comando eu tenho chroot, adduser, addgroup, chmod. Eu não tenho o comando usermod. Por favor, sugira isso é possível. Se sim, então como?

    
por Rahul Tungar 24.03.2018 / 04:45

1 resposta

0

Primeiro, você terá que tornar /LD o diretório inicial de test_user . Você disse que não tem o comando usermod ; em seguida, use vipw , ou se isso não estiver disponível, apenas certifique-se de que o usuário não esteja logado e edite /etc/passwd diretamente.

Em seguida, verifique a página do manual vsftpd.conf e leia as descrições das opções chroot_local_user , chroot_list_enable e chroot_list_file .

Se desejar que todas as conexões FTP dos usuários (ou a maioria delas) sejam restritas aos seus diretórios home, você pode definir chroot_local_user como YES e usar o arquivo /etc/vsftpd.chroot_list (ou qualquer arquivo especificado pela opção chroot_list_file ) para especificar exceções.

Se somente test_user precisar ser restrito, deixe chroot_local_user como NÃO e, em vez disso, defina chroot_list_enable como YES e, em seguida, adicione test_user a /etc/vsftpd.chroot_list file (ou qualquer arquivo especificado por chroot_list_file opção). Você pode criar o arquivo se ele ainda não existir.

Como resultado dessas ações, quando test_user fizer login em uma conexão FTP, eles verão o diretório /LD como o diretório raiz ( / ). Como resultado, será impossível para eles navegar fora da árvore de diretórios /LD , pois, para a conexão FTP, o resto do sistema de arquivos simplesmente não existirá. O usuário ainda pode acessar qualquer subdiretório de /LD ; se isso não for desejável, use as permissões do sistema de arquivos para bloquear isso.

Primeiro, identifique o (s) usuário (s) e / ou grupo (s) que precisam acessar os subdiretórios de / LD. Idealmente, todos os usuários de subdiretórios de / LD shoud pertencem a um único grupo (vamos chamá-lo de LDsub ) e test_user não deve fazer parte desse grupo. O test_user deve estar sozinho em outro grupo (vamos chamá-lo LDftp , por exemplo). Os membros do grupo LDsub podem ou não ser membros do grupo LDftp , dependendo se precisam ou não de acesso de gravação ao próprio diretório /LD .

Se você não tiver os comandos usermod ou groupmod , poderá editar as associações de grupos por meio de vigr ou apenas editando /etc/group .

Agora, você pode usar o comando chown para definir a propriedade do diretório /LD e chmod para definir as permissões:

chown root:LDftp /LD
chmod 775 /LD        #this will be drwxrwxr-x 

Agora, test_user terá acesso de gravação ao diretório /LD por meio da associação ao grupo, mas eles não serão os proprietários do diretório, portanto, não poderão alterar suas permissões. As permissões "everyone r-x" permitirão que os membros do grupo LDsub passem por este diretório para acessar seus subdiretórios conforme permitido por suas permissões.

Os subdiretórios de / LD podem ser de propriedade de qualquer pessoa, conforme necessário, desde que não seja o test_user . O grupo desses subdiretórios deve ser definido como LDsub e permissões da seguinte forma:

chgrp LDsub /LD/subdirectory  # or chown <not_test_user>:LDsub /LD/subdirectory
chmod 770 /LD/subdirectory   # this will be drwxrwx---

Esteja ciente de que se test_user tiver acesso de gravação a /LD , isso significa necessariamente que eles podem renomear qualquer subdiretório, criar novos e excluir quaisquer subdiretórios vazios .

Se os seus requisitos forem mais complexos, pode ser mais fácil verificar se o suporte da ACL está habilitado no sistema de arquivos e usar as ACLs para especificar o (s) usuário (s) e / ou grupo (s) permitido (s) -diretórios de / LD. Veja as páginas de manual dos comandos getfacl e setfacl , e / ou esta página da web para detalhes.

Como alternativa, você pode considerar mover os subdiretórios de /LD para outro local e usar links simbólicos para fazer com que os caminhos de diretório funcionem como antes.

mv /LD/subdirectory /elsewhere/subdirectory
ln -s /elsewhere/subdirectory /LD/subdirectory

Para qualquer usuário diferente de test_user em uma sessão FTP, esses links simbólicos serão utilizáveis como de costume. Mas como a sessão FTP de test_user será chrooted para /LD , para eles esses links simbólicos aparecerão como links quebrados inutilizáveis. Se test_user tiver acesso de gravação a /LD , eles poderão excluir os links "quebrados".

    
por 24.03.2018 / 08:28