今天给伙伴们分享一下Linux 文件服务器-vsftp 配置虚拟用户,希望看了有所收获。
我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!
如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。
1、建立虚拟 FTP 用户的帐号
[root@edenluo.com ~]# useradd -s /sbin/nologin vu
2、创建虚拟用户文件
[root@edenluo.com ~]# cd /etc/vsftpd/
[root@edenluo.com vsftpd]# vim user
wangwu
12345
maliu
12345
- 基数行代表用户名,偶数行代表密码
3、创建数据文件
- 通过 db_load 工具创建出 Berkeley DB 格式的数据库文件
[root@edenluo.com vsftpd]# db_load -T -t hash -f user user.db
[root@edenluo.com vsftpd]# ls
ftpusers user user.db user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
- -f 指定数据原文件
- -T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件
- -t hash 读取文件的基本方法
4、建立支持虚拟用户的PAM认证文件
[root@edenluo.com vsftpd]# vim /etc/pam.d/vsftpd.vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
- 对应刚才生成 user.db 的文件
5、修改配置文件
[root@edenluo.com vsftpd]# vim vsftpd.conf
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
guest_enable=YES
guest_username=vu
pam_service_name=vsftpd.vu
local_enable=YES
local_umask=077
chroot_local_user=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_dir
6、常用的全局配置项
listen=YES # 是否以独立运行的方式监听服务
listen_address=192.168.4.1 # 设置监听FTP服务的IP地址
listen_port=21 # 设置监听FTP服务的端口号
write_enable=YES # 是否启用写入权限(上传,删除文件)
download_enable=YES # 是否允许下载文件
dirmessage_enable=YES # 用户切换进入目录时显示.message文件
xferlog_enable=YES # 启用日志文件,记录到/var/log/xferlog
xferlog_std_format=YES # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
connect_from_port_20=YES # 允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES # 允许服务器被动模式
pasv_max_port=24600 # 设置被动模式服务器的最大端口号
pasv_min_port=24500 # 设置被动模式服务器的最小端口号
pam_service_name=vsftpd # 用户认证的PAM文件位置
(/etc/pam.d/vsftpd.vu)
userlist_enable=YES # 是否启用user_list列表文件
userlist_deny=YES # 是否禁用user_list中的用户
max_clients=0 # 限制并发客户端连接数
max_per_ip=0 # 限制同一IP地址的并发连接数
tcp_wrappers=YES # 是否启用tcp_wrappers主机访问控制
chown_username=root # 表示匿名用户上传的文件的拥有人是root,默认关闭
ascii_upload_enable=YES # 表示是否允许用户可以上传一个二进制文件,默认是不允许的
ascii_download_enable=YES # 这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的
nopriv_user=vsftpd # 设置支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户
async_abor_enable=YES # 设定支持异步传输功能
ftpd_banner=Welcome to Awei FTP servers # 设定Vsftpd的登陆标语
guest_enable=YES # 设置启用虚拟用户功能
guest_username=ftpuser # 指定虚拟用户的宿主用户
virtual_use_local_privs=YES # 设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf # 设定虚拟用户个人Vsftp的配置文件存放路径
7、为用户建立独立的配置目录及文件
[root@edenluo.com vsftpd]# mkdir /etc/vsftpd/user_dir
[root@edenluo.com vsftpd]# ls
ftpusers user user.db user_dir user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@edenluo.com vsftpd]# cd /etc/vsftpd/user_dir
[root@edenluo.com user_dir]# vim wangwu
local_root=/etc/vsftpd/data # 虚拟用户数据的存放路径
8、创建虚拟用户数据存放目录
[root@edenluo.com user_dir]# cd ..
[root@edenluo.com vsftpd]# mkdir data
[root@edenluo.com vsftpd]# chmod 777 data/
9、重启服务
[root@edenluo.com ~]# systemctl restart vsftpd
10、登陆测试
11、登陆成功。添加文件进行测试
[root@edenluo.com vsftpd]# cd data/
[root@edenluo.com data]# touch wangwu.txt
-
重点:本地用户和虚拟用户不能同时登录、因为认证方式只有一种
-
本地是 pam_service_name =vsftpd
-
虚拟是 pam_service_name =vsftpd.vu
如果对伙伴们有帮助,感谢关注支持**「想吃西红柿」「云原生运维实战派」**后续会有更多实用的运维技术分享给伙伴们,您的关注就是我最大的成就。