Diretório de usuários virtuais ProFTPD

4

Tudo bem, estou tentando replicar a configuração básica de uma empresa de hospedagem aqui, autenticando usuários virtuais via SQL e redirecionando-os para o diretório deles. Consegui a maioria dos objetivos aqui, com exceção do redirecionamento / encarceramento deles para o diretório deles.

Os diretórios são armazenados em /home/ftp e é para isso que o DefaultRoot está definido. Eu quero que cada usuário tenha e seja preso em seu próprio diretório. Não parece que a configuração homedir em SQL tenha algum efeito. Ao efetuar login no FTP com qualquer usuário, ele faz login no DefaultRoot sem nenhum diretório jailing ou redirecionamento.

Como posso realizar esta última tarefa?

    
por Nik 07.06.2010 / 15:44

2 respostas

4

Tente comentar o DefaultRoot. Acho que ele pode substituir os valores lidos no back-end do banco de dados.

EDITAR:

Se o DefaultRoot estiver configurado e qualquer coisa diferente de ~, o usuário será preso em uma árvore com raiz no DefaultRoot.

Se DefaultRoot for ~, o usuário será preso em uma árvore com raiz no diretório inicial.

    
por 08.06.2010 / 09:01
2

Além de configurar DefaultRoot ~ como mencionado, como é sua configuração de SQL - você está realmente extraindo-a do banco de dados?

DefaultRoot ~

<IfModule mod_dso.c>
  LoadModule mod_sql.c
  LoadModule mod_sql_mysql.c
</IfModule>

SQLLogFile          /var/log/proftpd/mod_sql.log
PersistentPasswd    off
AuthPAM             off
AuthUserFile        /some/path/to/dummy/passwd.ftp
AuthGroupFile       /some/path/to/dummy/group.ftp
AuthOrder           mod_sql.c mod_auth_file.c

SQLConnectInfo      proftpd@localhost:3306 userdatabase password
SQLAuthTypes        Backend Crypt Plaintext OpenSSL
SQLUserInfo         user user_id password NULL NULL ftp_homedir NULL
SQLAuthenticate     users
SQLDefaultUID       14
SQLDefaultGID       50
SQLMinUserUID       13
SQLMinUserGID       49

Esse é um exemplo mais ou menos conciso de fazer 100% auth do banco de dados e prendê-lo ao seu homedir, conforme listado no banco de dados. Se você quiser também criar dinamicamente seu diretório pessoal quando fizer login (útil se você adicioná-los em um banco de dados e não quiser fazer login em um servidor para fazê-lo), você pode adicionar:

CreateHome on dirmode 0755

... para a configuração. Os outros dois arquivos fictícios listados acima correspondem à sua instalação do ProFTPd, que em um servidor Red Hat / Centos:

passwd.ftp

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

group.ftp

ftp:x:50:
nobody:x:99:

Isso tudo faz com que seus usuários virtuais tenham UID / GID de 14:50 no disco rígido, independentemente do nome de usuário de login.

    
por 08.06.2010 / 11:26