Linux安装配置vsftp
https://www.cnblogs.com/feiquan/p/9236772.html
1.vsftp配置文件简介
https://blog.csdn.net/bluishglc/article/details/42273197
[root@docker vsftpd]# ll /etc/vsftpd/*
-rw------- 1 root root 125 Oct 31 2018 /etc/vsftpd/ftpusers
-rw------- 1 root root 361 Oct 31 2018 /etc/vsftpd/user_list
-rw------- 1 root root 5142 Oct 24 10:32 /etc/vsftpd/vsftpd.conf
1.1 ftpusers
首先请明确一点:ftpusers不受任何配制项的影响,它总是有效,它是一个黑名单!该文件存放的是一个**禁止访问FTP的用户列表,通常为了安全考虑,管理员不希望一些拥有过大权限的帐号(比如root)登入FTP,以免通过该帐号从FTP上传或下载一些危险位置上的文件从而对系统造成损坏。
1.2 user_list
user_list则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单。
总结:
a.ftpusers和user_list没有任何关系,ftpusers文件总是生效,user_list则取决于userlist_enable和userlist_deny两项配置。
b.当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP.
c.当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入。
d.当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous
1.3 vsftpd.conf
vsftp的主配置文件。
2.vsftp配置文件详解
##匿名用户权限设置
anonymous_enable=YES //是否允许匿名用户ftp或anonymous登录
anon_root=/var/ftp //设置匿名用户的FTP根目录(缺省为/var/ftp)
anon_umask=022 //设置匿名用户所上传文件的默认权限掩码值
anon_world_readable_only=YES //允许匿名用户浏览下载文件的权限
anon_upload_enable=YES //是否允许匿名用户上传文件(若开启了selinux功能,则要将sftpd_anon_write的布尔值设为on)
anon_mkdir_write_enable=YES //是否允许匿名用户有创建目录的权利
anon_other_write_enable=YES //是否允许匿名用户有其他写入权限,如对文件改名、覆盖、及删除文件
anon_max_rate=81920 //限制匿名用户的最大传输速率(0为无限制),单位为字节,81920字节/1024=80KB
##本地用户权限设置
local_enable=YES //是否允许本地用户登录
local_umask=022 //设置本地用户所上传文件的默认权限掩码值
local_root=/var/ftp //设置本地用户的FTP根目录(缺省为用户的宿主目录)
anon_max_rate=81920 //限制本地用户的最大传输速率(0为无限制)单位为字节
chroot_local_user=yes //#当为YES时,chroot_list中的用户不锁定目录,为NO时,chroot_list中的用户锁定目录
allow_writeable_chroot //只能访问自身所属目录。
listen_port 21 //设置监原FTP服务的端口号
write_enable=yes //启用任何形式的写入权限(如上传、删除文件等)都需要开启此项
download_enable=yes //是否允许下载文件(建立仅限于浏览、上传的FTP服务器时可将其设为no)
xferlog_enable=YES //是否记录ftp传输过程,即启用FTP日志,默认记录到/var/log/xferlog文件中
xferlog_std_format=yes //启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自已的日志格式
connect_from_port_20=YES //是否确信端口传输来自20端口
chown_upload=YES
chown_username=username //是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主
pasv_enable=yes //允许被动模式连接
pasv_max_port=24600 //设置用于被动模式的服务器最大端口号
pasv_min_port=24500 //设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd //设置用于用户认证的PAM文件位置(/etc/pam.d目录中对应的文件名)
userlist_enable=yes //是否启用user_list用户列表文件
userlist_deny=yes //是否禁止user_list列表文件中的用户账号
max_clients=0 //最多允许多少个客户端同进连接FTP服务器(0为无限制)
max_per_ip=0 //对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制)
tcp_wrappers=yes //是否启用tcp_wrappers访问控制,限制ip访问。/etc/hosts.allow,/etc/hosts.deny。
示例:
/etc/hosts.allow
#sshd
sshd:192.168.0.125
sshd:192.168.0.126
#vsfptd
vsftpd:192.168.0.125
vsftpd:192.168.0.126
/etc/hosts.deny
sshd:ALL
vsftpd:ALL
idle_session_timeout=600 //设置默认的断开不活跃session的时间
accept_timeout=60 将客户端空闲断开时间,单位:秒
3.vsftp 实现不同用户不同权限配置
注意:注意防火墙和selinux,可以关闭。
总路径/home/download
第一类账户及文件夹权限:
admin_root:/home/download/下的所有文件夹及文件具有上传、下载、删除权限
admin_001:/home/download/admin_001/下的文件具有上传、下载、删除权限
admin_002:/home/download/admin_002/下的文件具有上传、下载、删除权限
admin_003:/home/download/admin_003/下的文件具有上传、下载、删除权限
admin_004:/home/download/admin_004/下的文件具有上传、下载、删除权限
第二类账户及文件夹权限:
download_root:/home/download/下的所有文件夹及文件具有下载权限
download_001:/home/download/admin_001/下的文件具有下载权限
download_002:/home/download/admin_002/下的文件具有下载权限
download_003:/home/download/admin_003/下的文件具有下载权限
download_004:/home/download/admin_004/下的文件具有下载权限
注意:所有用户只能访问自己的数据目录!!!所以需要限制只能访问自身所属目录!!!
4.配置流程
4.1 首先创建一个本地系统用户ftpuser并指定其家目录,并建立相应的子目录
useradd ftpuser -s /sbin/nologin -d /home/download
mkdir -p /home/download/admin_001
mkdir -p /home/download/admin_002
mkdir -p /home/download/admin_003
mkdir -p /home/download/admin_004
chown -R ftpuser:ftpuser /home/download
chmod 755 /home/download
chmod 755 /home/download/*
4.2 创建虚拟用户
vim /etc/vsftpd/user-login.txt
admin_root
123456
admin_001
123456
admin_002
123456
admin_003
123456
admin_004
123456
download_root
123456
download_001
123456
download_002
123456
download_003
123456
download_004
123456
注意:奇数行为用户,偶数行为密码。
4.3 使用db_load命令生成口令库文件
db_load -T -t hash -f /etc/vsftpd/user-login.txt /etc/vsftpd/user-login.db
注意:db_load:一般系统都有安装,db4,db4-devel,db4-utils ,如果没有的话可以安装:yum -y install db4*
4.4 修改口令数据库文件权限
chmod 600 /etc/vsftpd/user-login.db
4.5 配置一个新的PAM用于虚拟用户的验证
vim /etc/pam.d/vsftpd.vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user-login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user-login
注意:64位系统为/lib64目录,pam文件中db后面的数据库不能加扩展名。
4.6 创建本地系统用户ftpuser对应的虚拟账户
mkdir /etc/vfstpd/user_conf
cd /etc/vfstpd/user_conf
4.6.1 先创建有上传下载权限的用户
[root@docker1 ftpuser]# cat >>admin_root<>admin_001<>admin_002<>admin_003<>admin_004<>download_root<>download_001<>download_002<>download_003<>download_004<
4.7 配置文件vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
listen=YES
connect_from_port_20=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
guest_enable=YES
guest_username=ftpuser
virtual_use_local_privs=YES
allow_writeable_chroot=YES
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/user_conf
local_umask=022
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
pam_service_name=vsftpd.vu
注意:如果不限制用户可以切换到其他用户的数据目录下,可以配置如下
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
4.8 启动限制用户的名单
[root@docker1 vsftpd]# vim /etc/vsftpd/chroot_list
admin_root
admin_001
admin_002
admin_003
admin_004
download_root
download_001
download_002
download_003
download_004
chroot_list_enable:是否启动限制用户的名单 YES 为启用 NO 禁用(包括注释掉也为禁用)
chroot_local_user:是否将所有用户限制在主目录,YES为启用NO禁用(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
chroot_list_file=/etc/vsftpd/chroot_list:是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值。
chroot_local_user=YES | chroot_local_user=NO | |
---|---|---|
chroot_list_enable=YES | YY | YN |
chroot_list_enable=NO | NY | NN |
具体解释如下:
- YY:所有用户都被限制在其主目录下,使用`chroot_list_file`指定的用户列表,这些用户作为“例外”,不受限制。
- YN:所有用户都不被限制其主目录下,使用`chroot_list_file`指定的用户列表,这些用户作为“例外”,受到限制。
- NY:所有用户都被限制在其主目录下,不使用`chroot_list_file`指定的用户列表,没有任何“例外”用户。
- NN:所有用户都不被限制其主目录下,不使用`chroot_list_file`指定的用户列表,没有任何“例外”用户。
4.9 测试
4.9.1 wput命令安装
用于在命令行状态下上传东西在到ftp服务器,支持断点续传。
下载:https://sourceforge.net/projects/wput/files/latest/download
安装: ./configure;make;make install
上传命令:wput /home/test ftp://ftpusername:password@ip/test/
下载命令:wget ftp://ip:port/子目录/* --ftp-user=你的用户名 --ftp-password=你的ftp密码 -r