我正在尝试设置一个针对 LDAP 服务器进行身份验证的 FTP 服务器。这部分已完成并正常运行。我的服务器是 Ubuntu Server 11.04 上的 VsFTPd。但我必须为我的 LDAP 用户创建主目录。我正在尝试使用该pam_mkhomedir
模块,但它不起作用:当我将其行添加到文件时/etc/pam.d/vsftpd
,我的用户无法再登录到 FTP 服务器。问题是我对哪里出了问题知之甚少。VsFTPd 只是响应530: login incorrect
,我找不到从 pam_mkhomedir 获取调试或错误消息的方法。
以下是我的不同配置文件。/etc/pam.d/vsftpd
文件:
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required pam_ldap.so
account required pam_ldap.so
password required pam_ldap.so
session optional pam_mkhomedir.so skel=/home/skel debug
文件/etc/vsftpd.conf
:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
guest_enable=YES
session_support=YES
log_ftp_protocol=YES
tcp_wrappers=YES
/home
和 的权限/home/skel
:
root@ftp:/home# ls -al
total 16
drwxrwxrwx 4 root root 4096 2011-10-11 21:19 .
drwxr-xr-x 21 root root 4096 2011-09-27 13:32 ..
drwxrwxrwx 2 root root 4096 2011-10-11 19:34 skel
drwxrwxrwx 5 foo foo 4096 2011-10-11 21:11 foo
root@ftp:/home# ls -al skel/
total 16
drwxrwxrwx 2 root root 4096 2011-10-11 19:34 .
drwxrwxrwx 4 root root 4096 2011-10-11 21:19 ..
-rwxrwxrwx 1 root root 3352 2011-10-11 19:34 .bashrc
-rwxrwxrwx 1 root root 675 2011-10-11 19:34 .profile
是的,我知道,权限设置不正确,但安全不是这里的问题:我首先需要让它工作起来。
因此,总结一下:如果没有 pam_mkhomedir,我的 LDAP 用户可以登录,但他们无法执行任何操作,因为他们处于一个空的 chrooted jail 中。如果我添加 pam_mkhomedir,他们就无法再登录。如果有人知道原因,或者知道如何从日志中获取更多信息,我将不胜感激,谢谢。
答案1
简单的回答 - 有必要在 vsftpd.conf 中启用会话支持:
session_support=YES
答案2
也许与 vsftpd 没有直接关系,但我在 SFTP 中遇到的一个问题是 pam_mkhomedir.so 创建了用户:组拥有的主目录 - 当然,即使 skel 文件归 root 所有。但出于安全原因(权限为 755),使用 SFTP 的 chroot 要求 root:root 拥有 chroot 主目录。即使 skel 文件归 root 所有。
答案3
看一下/var/log/audit.log
,你会看到类似这样的内容:
类型 = USER_START msg = audit(1290252247.771:1669772):用户 pid = 20068 uid = 0 auid = 0 msg ='PAM:会话打开 acct =“quanta”:exe =“/usr/sbin/vsftpd”(主机名 = SVR040-763.localdomain,地址 = 127.0.0.1,终端 = ftpres=失败)'
因此,将其更改/etc/pam.d/vsftpd
为:
auth sufficient pam_ldap.so
account sufficient pam_ldap.so
password sufficient pam_ldap.so
session sufficient pam_ldap.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
然后再试一次。
如果仍然收到错误:“500 OOPS:无法找到用户条目:”,“500 OOPS:无法更改目录:”,我建议你使用自动目录反而。