当我使用虚拟用户登录 ftp 时,我收到“无法更改目录”的提示,我在 vsftpd.conf 中有以下配置。请提出建议
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=002
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
hide_ids=YES
user_config_dir=/data/some-path/ftp/users
local_root=/data/some-path/ftp/data/$USER
guest_username=vsftpd
答案1
看起来,为了让用户能够 chroot 到配置的目录,所有父目录都必须具有读取和执行权限,否则出于安全原因它们将被拒绝。
答案2
我认为你的用户将通过 chroot_local_user=YES 绑定到他们的主目录,也许可以尝试将你的 ftp 用户的主目录设置为 /data/some-path/ftp/data/$USER,否则看看当 chroot_local_user=NO 时会发生什么
答案3
这可能是 SELinux 问题,请尝试设置
/usr/sbin/setsebool -P ftp_home_dir 1
看看是否能解决问题。
答案4
我在 /etc/vsftpd.conf 中启用了以下设置以解决相同的错误消息:
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
另外,运行以下命令:
sudo chmod +x /home/ -R