Linux安装配置vsftp

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

你可能感兴趣的:(Linux)