我试图在运行Apache的Debian框上设置FTP访问。 通过useradd创build一个FTP用户通过端口22工作…但只有当我不通过-s /dev/null限制shell访问。
我已经安装了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
尝试/ bin / false作为shell而不是/ dev / null。 FTP可能会挂起,因为它不能执行/ dev / null。
如已经提示的那样,使用/ bin / false而不是/ dev / null。
检查/ bin / false是否插入到/ etc / shells中。
或者你可以使用nologin(8)。