除非启用 shell,否则无法通过 FTP 登录

除非启用 shell,否则无法通过 FTP 登录

我正在尝试在运行 Apache 的 Debian 机器上设置 FTP 访问。通过 useradd 创建 FTP 用户可以通过端口 22 进行...但前提是我不限制通过 进行的 shell 访问-s /dev/null

我已经安装了 vsftpd,并且理论上已经使用 iptables 打开了端口 21。但是尝试通过此端口进行连接会导致 FTP 客户端完全挂起并且永远无法连接。

以下是我应用的 iptables 规则:

iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 202.54.1.20 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT  
iptables -A OUTPUT -p tcp -s 202.54.1.20 --sport 21 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT  
iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 202.54.1.20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT  
iptables -A OUTPUT -p tcp -s 202.54.1.20 --sport 1024:65535 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT  
iptables -A OUTPUT -p tcp -s 202.54.1.20 --sport 20 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT  
iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 202.54.1.20 --dport 20 -m state --state ESTABLISHED -j ACCEPT  

答案1

尝试使用 /bin/false 作为 shell,而不是 /dev/null。FTP 可能会挂起,因为它无法执行 /dev/null。

答案2

正如已经建议的那样,使用 /bin/false 而不是 /dev/null。
检查 /bin/false 是否插入到 /etc/shells 中。
或者您可以使用 nologin(8)。

相关内容