Linux里proftpd的一个坑

安装proftpd搭建ftp服务非常简单,通常只需要useradd一个新的用户,设置好密码,然后修改配置文件/etc/proftpd.conf:

<Directory "/xxx/xxx/uploads/" >
umask 000
<Limit ALL STOR CWD WRITE STOR READ RETR DIRS>
AllowUser zhangsan
DenyAll
</Limit>
</Directory>

接着systemctl start proftpd.service,即可使用。

以前一直ok,结果这次搭建死活登录不了,一直报Incorrect password。proftpd默认是通过pam走Linux系统的帐户密码进行登录的,反复修改密码,发现还是登录不成功,报密码不正确。

后来诡异地发现,这根本跟密码无关,而是跟登录shell有关。/etc/passwd里定义的登录使用的shell为/usr/sbin/nologin,而/etc/shells里却没有罗列/usr/sbin/nologin,所以解决办法就是将/usr/sbin/nologin添加到/etc/shells里。

那问题是这个/etc/shells是干嘛的,这就更有趣了,查看man shells,给出的解释还特别提到了ftp相关软件会检查所使用的shell是否在/etc/shells中罗列:

Be  aware that there are programs which consult this file to find out if a user is a normal user; for example, FTP daemons traditionally disallow access to users with shells not included in this file.

搞笑的是proftpd报错不是shell问题,而是密码不正确。好不折腾啊!

发表于 2019年08月30日 14:33   评论:0   阅读:2714  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo