- 建立vsftpd服务的宿主用户(root)
# useradd vir -s /sbin/nologin [-d /ftp/dir]
- 创建日志文件(root)
# touch /var/log/vsftpd.log
# chown vir:vir /var/log/vsftpd.log
- 修改vsftpd配置文件(root)
# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #不允许匿名访问
local_enable=YES #本地用户可以访问
chroot_list_enable=YES #使用户不能离开主目录
ascii_upload_enable=YES #允许上传
ascii_download_enable=YES #支持ASCII模式的下载功能
pam_service_name=vsftpd #千万别忘记添加
#手工输入以下参数和值
guest_enable=YES #开启虚拟用户的功能
guest_username=vir #指定虚拟用户的宿主用户
user_config_dir=/etc/vsftpd/vuser_conf #指定虚拟用户权限配置文件目录
xferlog_file=/var/log/vsftpd.log #vsftpd的服务日志保存路径,默认不存在
- 建立虚拟用户名单(root)
# vi /etc/vsftpd/vsftp_users.conf //输入奇数行为账号,偶数行为密码
yb1 #账号
abcd1234 #密码
yb2
abcd1234
- 生成认证文件,若db_load命令找不到,需要安装db4_utils(yum install db4 db4_utils)(root)
# db_load -T -t hash -f /etc/vsftpd/vsftp_users.conf /etc/vsftpd/vsftp_users.db
# chmod 600 /etc/vsftpd/vsftp_users.db
- 编辑认证文件,注释文中全部内容(第一行需要保留),插入以下内容(root)
# vi /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vsftp_users
account required pam_userdb.so db=/etc/vsftpd/vsftp_users
完整路径/usr/lib64/security/pam_userdb.so
- 创建虚拟用户权限配置文件存放位置(root)
# mkdir /etc/vsftpd/vuser_conf
- 自定义用户权限配置文件(root)
# vi /etc/vsftpd/vuser_conf/yb1
local_root=/data01/yb1 #该目录所属主所属主应为vir
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
- 重启vsftp(root)
# systemctl restart vsftpd.service
其他问题
- 连接 FTP 时若提示错误:
vsftpd 530 login incorrect
原因:/etc/vsftpd.conf参数配置里面有空格
解决方法:去掉空格 - 连接 FTP 时若提示错误:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
原因:vsftpd的安全规则是不允许ftp用户对ftp根目录有可写权限,因此那个ftp用户就被服务器拒绝了
解决方法:
chmod a-w /data01/yb1
chmod a-w /data01/yb2
-
若可以查看文件但无法上传下载,可尝试在 /etc/vsftpd/vsftpd.conf 添加以下选项:
allow_writeable_chroot=YES -
一个可用的 vsftpd.conf 配置文件
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Authorized users only. All activity may be monitored and reported.
chroot_local_user=YES
listen=YES
allow_writeable_chroot=YES #若可以查看文件但无法上传下载,可尝试添加该选项
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vir
user_config_dir=/etc/vsftpd/vuser_conf
xferlog_file=/var/log/vsftpd.log -
另一个可用的vsftpd.conf配置文件
anonymous_enable=NO
#local_enable=YES
write_enable=YES
anon_umask=066
dirmessage_enable=YES
connect_from_port_20=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vftpuser
user_config_dir=/etc/vsftpd_user_conf
allow_writeable_chroot=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES -
一个示例虚拟用户权限配置文件
local_root=/data01/yb1 #虚拟用户yb1根目录
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES