我已经在 16.04 上安装了 Pureftpd,但我无法按照我想要的方式对其进行配置。
我想阻止常规系统用户登录,因此我获取了/etc/pure-ftpd/conf/UnixAuthentication
包含内容的文件和指向no
的符号链接。当我重新启动 pureftpd 服务器时,我仍然能够以任何系统用户身份登录。/etc/pure-ftpd/auth/65unix
/etc/pure-ftpd/conf/UnixAuthentication
我尝试删除带有内容no
和符号链接的链接/etc/pure-ftpd/auth/65unix
,但我仍然能够登录。
当我重新启动服务器时,我正在使用 systemctl restart。
看来服务器没有遵守配置。我怎样才能让 pureftpd 不允许普通用户登录?
更新
好的,所以配置文件是被尊重的。至少是MinUID
和的配置文件NoAnonymous
。只是将的内容/etc/pure-ftpd/conf/UnixAuthentication
从是更改为否没有效果。要么这个配置选项没有像我预期的那样工作并阻止系统用户登录,要么这个选项不起作用。
进一步更新
刚刚发现了显示 pure-ftpd 正在运行的选项的命令pure-ftpd-wrapper --show-options
。当我将的内容设置/etc/pure-ftpd/conf/UnixAuthentication
为 No 时,的输出pure-ftpd-wrapper --show-options
为
-J ALL:!aNULL:!SSLv3 -u 1000 -8 UTF-8 -E -O clf:/var/log/pure-ftpd/transfer.log -g /var/run/pure-ftpd/pure-ftpd.pid
当我将其设置为是时,输出为
-l unix -J ALL:!aNULL:!SSLv3 -u 1000 -8 UTF-8 -E -O clf:/var/log/pure-ftpd/transfer.log -g /var/run/pure-ftpd/pure-ftpd.pid
pure-ftpd 的手册页说-l unix For standard (/etc/passwd) authentication.
我不明白为什么没有-l unix
选项的纯 ftpd 允许用户通过标准 linux(/etc/passwd)帐户进行身份验证登录系统。
答案1
etc/pure-ftpd/conf/UnixAuthentication
因此,似乎没有明确设置身份验证方法,Pureftpd 默认使用 /etc/passwd 中的标准 unix 身份验证。即使明确设置为 no,也是如此!
pure-ftpd-wrapper 和 pure-ftpd 本身似乎不匹配。Pure-ftpd 仅具有命令行开关来明确启用身份验证方法,而没有明确排除方法。但是,pure-ftpd-wrapper 手册页说
To disable the option use "No",0 or "Off".
但实际上它所能做的就是不是将“on”开关传递给 pure-ftpd 的命令行参数,因为 pure-ftpd 不接受任何禁用标志。
由于 pure-ftpd 在没有任何其他类型的身份验证的情况下会回退到 Unix 身份验证,因此“Off”标志的存在与“On”标志的不存在不同!
通过启用 PureDB 身份验证,我能够禁用标准 Unix 身份验证,因为它似乎取代了默认身份验证。