1,需求3种不同权限账户
a账户:完全控制; b账户:只能上传; c账户:只能下载
2,安装
apt install
3,配置步骤
3.1 创建ftpuser系统用户,指定/home/ftpuser, 修改/home/ftpuser 所属ftpuser,权限755;
3.2 mkdir /etc/vsftp, mkdir /etc/vsftp/conf。存放登陆用户和用户配置信息
3.3 创建/etc/vsftp/login.txt 虚拟账户文件,写入如下信息,奇数行是用户名,偶数行是密码
ftpadmin
123
ftpupload
123
ftptest
123
3.2 安装 db-util ,sudo db_load -T -t hash -f login.conf login.db,生成加密信息
3.4 修改/etc/pam.d/vsftp
auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login
3.5 修改/etc/vsftp.conf 配置文件
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
nopriv_user=ftpuser
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
ls_recurse_enable=NO
pam_service_name=vsftpd (设置 PAM 外挂模块提供的认证服务所使用的配置文件名)
utf8_filesystem=YES
tcp_wrappers=YES
local_root=/home/ftpuser
anon_root=/home/ftpuser
guest_enable=YES #虚拟账户映射系统账户
guest_username=ftpuser #虚拟账户映射系统账户
virtual_use_local_privs=YES (虚拟用户和本地用户权限相同。很重要,保证虚拟用户有和映射的本地用户相同的权限)
user_config_dir=/etc/vsftpd/conf
另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:
allow_writeable_chroot=YES
问题记录:
1,默认配置注释了下面2个选项,其他浏览器访问显示local_root指定目录,ie浏览器显示的/根目录
chroot_local_user=YES
chroot_list_enable=NO
2,打开上面选项,无法登陆了,修改local_root所属用户或去掉写权限,恢复正常,没法上传文件
另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
3,增加allow_writeable_chroot=YES解决问题;
————————————————
版权声明:本文为CSDN博主「xiaol1314le」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaol1314le/article/details/85395504