Para que as pesquisas de usuários pelo módulo PAM sejam bem-sucedidas, é necessário ativar o módulo NSS para MySQL em nsswitch.conf(5)
. nss_mysql
é seu amigo.
Eu tenho usado com sucesso o vsftpd com usuários virtuais conectando com o PAM ao meu banco de dados do mysql. Agora eu gostaria de automatizar a criação de diretórios de usuários com conexão vsftpd bem sucedida.
Aqui está a configuração do /etc/pam.d/vsftpd:
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
account required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
session required pam_mkhomedir.so skel=/home/skel/ umask=0022 debug
Adicionar pam_mkhomedir agora apenas mostra que não é possível criar o diretório sem outras mensagens em qualquer log. Então, obviamente, não está aplicando. Há mais alguma coisa que eu precise?
Meu /etc/vsftpd/vsftpd.conf:
# No ANONYMOUS users allowed
anonymous_enable=NO
# Allow 'local' users with WRITE permissions (0755)
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=YES
# define a unique user on your system which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=vsftpd
chroot_local_user=YES
listen=YES
# here we use the authentication module for vsftpd to check users name and passw
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=YES
# here the vsftpd will allow the 'vsftpd' user to login into '/home/vsftpd/$USER directory
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
download_enable=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
# PASV - passive ports for FTP
pasv_enable=YES
pasv_min_port=14000
pasv_max_port=14100
Eu vi uma postagem dizendo que eu preciso disso no meu vsftpd.conf, então eu também tentei isso:
session_support=YES
Mas agora parece não ser mais autenticado como mostram os registros:
Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_keyinit(vsftpd:session): Unable to look up user "user1"
Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_mkhomedir(vsftpd:session): User unknown.
Isto é mesmo se eu já criei o diretório. Agora ninguém pode entrar.
Alguma idéia?
Para que as pesquisas de usuários pelo módulo PAM sejam bem-sucedidas, é necessário ativar o módulo NSS para MySQL em nsswitch.conf(5)
. nss_mysql
é seu amigo.
Você pode tentar usar pam_script
- é um módulo pam que permite executar scripts de shell arbitrários depois que uma sessão de usuário é aberta (entre outros).
Você pode encontrar pam_script
aqui: link . Ele também pode ser instalado via gerenciadores de pacotes, pelo menos eu consegui instalá-lo através do apt-get.
Tenha cuidado, pois o vsftpd parece ter alguns problemas com o pam_script pelo menos quando ele nega a autenticação, veja minha pergunta não resolvida: vsftpd congela após falha na autenticação pam_script . No entanto, no seu caso, não deve ser um problema.
Tags permissions mysql ftp pam vsftpd