此文档适用于银河麒麟v4.0.2、银河麒麟v10桌面版系统配置ftp服务,包含匿名用户模式、系统用户模式及虚拟用户模式。
vsftpd装完以后,配置文件基本都在/etc目录下面。
1. cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
在设置配置文件之前,建议保留一份原配置文件的备份。每次修改完配置文件后,需要重启vsftpd服务才能生效。
2. vim /etc/vsftpd.conf,匿名用户登录具体配置如下
anonymous_enable=YES 开启匿名用户登录 no_anon_password=YES 匿名用户不检查口令 write_enable=YES 全局写权限 |
注:匿名用户默认登入的根目录是以ftp 这个用户的家目录为主,可以通过查看/etc/passwd 中ftp 那一行查看当前系统ftp 用户的家目录是/srv/ftp,匿名用户登录时,使用的是ftp这个用户的权限,是被chroot到/srv/ftp目录中了。
3. 在匿名用户登录目录下创建上传下载目录,使用win文件管理器进行匿名用户的测试登录。
mkdir /srv/ftp/downloads
mkdir /srv/ftp/uploads
chown ftp:ftp /srv/ftp/uploads (修改uploads目录权限,匿名用户可以上传到该目录下。)
4. systemctl restart vsftpd 重启服务验证(所有功能都可):
utf8_filesystem=YES vsftpd使用utf8文件系统(防止乱码) userlist_enable=YES 开启用户访问列表 userlist_deny=NO 只有列表文件里的用户可以访问ftp userlist_file=/etc/allow_user 用户访问白名单 local_root=/home/kylin ftp用户访问根目录 write_enable=YES 全局写权限配置 local_enable=YES 开启本地用户登录 |
local_root:设置本地用户登录ftp根目录的参数,缺省值为登录用户的家目录,自定义设置时候注意登录用户对自定义目录的操作权限。
注:/etc/ftpusers是限制本地用户访问的黑名单(root用户默认禁止登录ftp)
useradd -m -s /sbin/nologin ftpuser
chmod 755 /home/ftpuser
2. 用户相关配置结束后,开始设置虚拟用户与密码文件vusers.list。
mkdir /etc/vsftpd
vim /etc/vsftpd/vusers.list
3. 要使用db_load 进行加密。而db_load 需要db-util 这个软件。
apt-get -y install db-util
db-util 安装完毕后,现在开始使用db_load 对loginx.txt 进行加密
db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db
chmod 600 /etc/vsftpd/vusers.db 提高虚拟用户账号文件的安全性
4. Pam验证
vim etc/pam.d/vsftpd.vu
5. 修改vsftpd配置,添加虚拟用户支持
local_enable=YES write_enable=YES local_root=/home/ftpuser anon_umask=022 allow_writeable_chroot=YES pam_service_name=/etc/pam.d/vsftpd.vu guest_enable=YES guest_username=ftpuser user_config_dir=/etc/vsftpd/vusers_dir 虚拟用户配置文件目录 utf8_filesystem=YES |
6. 为不同的虚拟用户建立独立的配置文件
mkdir /etc/vsftpd/vusers_dir
vim vuser1 vuser2同理
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/home/ftpuser/vuser1 |
mkdir /home/ftpuser/vuser1
mkdir /home/ftpuser/vuser2 为每个虚拟用户创建家目录,隔离
7. 测试验证(上传、下载、创建、重命名都可)
问题描述:在麒麟V4、V10(桌面),使用文件管理器使用系统用户登录FTP时候,出现无法显示目录文件问题。
解决方法:在ftp启动脚本(/lib/systemd/system/vsftpd.service)加入设置环境变量设置:LC_TIME为英文时区。
修改完配置文件后,systemctl daemon-reload ; systemctl resatart vsftpd 测试: