Tudo bem, estou tentando replicar a configuração básica de uma empresa de hospedagem na web aqui, autenticando usuários virtuais via SQL e redirecionando/prendendo-os para seu diretório. Eu alcancei a maioria dos objetivos aqui,com exceção de redirecioná-los/prendê-los para seu diretório.
Os diretórios são armazenados /home/ftp
e é isso que DefaultRoot
está definido. Quero que cada usuário individual tenha e seja preso em seu próprio diretório. Não parece que a configuração homedir
no SQL tenha algum efeito. Ao fazer login no FTP com qualquer usuário, ele efetua login DefaultRoot
sem prisão ou redirecionamento de diretório.
Como faço para realizar esta última tarefa?
Responder1
Tente comentar DefaultRoot. Acho que pode substituir os valores lidos no back-end do banco de dados.
EDITAR:
Se DefaultRoot estiver definido e qualquer coisa diferente de ~ então o usuário será preso em uma árvore com raiz em DefaultRoot.
Se DefaultRoot for ~ então o usuário será preso em uma árvore com raiz em seu diretório inicial.
Responder2
Além de definir DefaultRoot ~ conforme mencionado, como é a sua configuração 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% de autenticação no banco de dados e prendê-los em seu homedir, conforme listado no banco de dados. Se você também deseja criar dinamicamente seu diretório inicial quando eles fizerem login (útil se você adicioná-los em um banco de dados e não quiser fazer login em um servidor para fazer isso), você pode adicionar:
CreateHome on dirmode 0755
...para a configuração. Os outros dois arquivos fictícios listados acima correspondem à instalação do ProFTPd, que está em um servidor Red Hat/Centos:
senha.ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
grupo.ftp
ftp:x:50:
nobody:x:99:
Tudo isso 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.