Centos7.4安装vsftpd
一、场景需求
1.公司内部需要一个类似于百度网盘的可存储视频、文档的软件,且需要领导具有管理员权限,技术人员需要可上传下载、可修改文件名、可新建文件权限,普通员工仅可下载。
用户名 权限说明
用户名 | 权限说明 |
admin | 管理员,可以上传、下载、新建文件夹、删除和更改文件和文件夹名 |
upload | 可以下载、上传、新建文件夹,但不能重命名、删除文件和文件夹 |
Download | 只能下载,不能进行其他操作 |
2.为了数据安全,需要设置仅可内网进行访问。
为操作方便,需要通过文件存储位置(url)直接访问到对应的文件。
二、安装步骤
1.关闭防火墙和SElinux(生产环境开放21端口)
Systemctl stop firewalld &&setenforce 0
2.Yum安装vsftpd
yum -y install vsftpd
3.启动服务并设置开机自启
systemctl enable vsftpd
systemctl start vsftpd
4.修改配置文件,配置前先将配置文件进行备份呢
进到配置文件所在目录:cd /etc/vsftpd
备份配置文件:cp vsftpd.conf vsftpd.conf.bak
修改配置文件:vim vsftpd.conf
下面是修改后的配置,源文件存在的进行修改,没有的自行添加
anonymous_enable=NO #是否允许匿名登陆,默认YES为允许匿名登陆,需改为NO
local_enable=YES #是否允许本地用户登陆了FTP服务器
write_enable=NO #是否允许本地用户对FTP服务器具有写权限
local_umask=022 #掩码,本地用户默认掩码为077 可以根据实际需求配置
anon_umask=022 #掩码,虚拟用户的
anon_upload_enable=NO #是否允许匿名用户上传文件,须将全局的write_enable=YES。默认为YES
anon_other_write_enable=NO #修改文件名和删除文件
anon_mkdir_write_enable=NO #是否允许匿名用户创建新文件夹
dirmessage_enable=YES #是否显示目录说明文件, 需要手动创建.message文件
xferlog_enable=YES #是否记录ftp传输过程
connect_from_port_20=YES #是否确信端口传输来自20(ftp-data)
xferlog_file=/var/log/xferlog #传输日志存放路径
xferlog_std_format=YES #是否使用标准的ftp xferlog模式
ftpd_banner=Welcome to blah FTP service. # 定制欢迎信息
chroot_local_user=YES # 本地用户禁锢在宿主目录中
listen=IP #设置vsftpd服务器是否以standalone模式运行
listen_address=192.168.1.25 #输入指定访问的ftp,只内网访问在此设置内网IP即可
pam_service_name=vsftpd #设置PAM使用的名称,默认值为/etc/pam.d/vsftpd
guest_enable=YES #启用虚拟用户。默认值为NO
guest_username=ubftp #这里用来映射虚拟用户
user_config_dir=/etc/vsftpd/conf #FTP用户的配置文件地址
5.创建一个不能登录系统的用户,用来做虚拟用户映射
useradd -s /sbin/nologin -d /home/ubftp -M ubftp
为此用户设置密码
passwd ubftp
6.创建虚拟用户列表,分别是upload、download和admin
touch /etc/vsftpd/vu_list.txt
echo upload >>/etc/vsftpd/vu_list.txt
echo 123456 >>/etc/vsftpd/vu_list.txt
echo download >>/etc/vsftpd/vu_list.txt
echo 123456 >>/etc/vsftpd/vu_list.txt
echo admin >>/etc/vsftpd/vu_list.txt
echo 123456 >>/etc/vsftpd/vu_list.txt
7.查看虚拟用户列表内容
单行为用户名,双行为密码
8.此虚拟用户账号和密码不能被系统账户直接调用,需要创建用于系统认证的db文件
db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db
创建该db文件需要db4支持,当前安装系统是带有的,若没有使用yum -y install db4 db4-devel db4-utils
进行安装
9.修改db文件的权限,防止被其他用户修改
10.配置PAM文件:由于服务器通过调用系统PAM模块来对客户端进行身份验证,因此需要修改指定的配置文件来调整认证方式。PAM模块的配置文件路径为:/etc/pam.d/,这个目录下存放只许多与用户认证有关的配置文件。
编辑vsftpd文件,64位系统添加如下内容(32位只需将/lib64改为/lib)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
11.创建虚拟用户配置文件,根据需求进行配置相应的用户权限
anon_world_readable_only=NO #允许该用户在FTP服务器上阅读文档,设置为no仅下载
write_enable=YES #是否允许登陆用户有写权限。属于全局设置,默认值为YES
anon_mkdir_write_enable=YES #允许该用户具有创建文件权限
anon_other_write_enable=YES #允许该用户具有修改权限
anon_upload_enable=YES #允许该用户拥有上传权限
local_root=/home/ubftp #当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
12.到/home下创建用户访问目录ubftp(这个目录是下载用户配置下面的,可自定义)
该目录是FTP的目录,客户端需要访问的目录需要在ubftp目录下继续新建一个目录。
13.客户端能访问的最高级目录 也就是FTP客户端的根目录,所有的操作都需要在此目录下才有权限。
该目录需要拥有读写权限,否则客户端登录后只能读
chmod 777 123 给123目录777权限
然后所属主和所属组需设置为root
14.注意事项:所有相关配置文件的所属组和所属组都建议设置为root
三、访问方式
第三方客户端FIleZilla 更直观
文件资源管理器 更方便
Web导航栏(仅IE和360浏览器的兼容模式可以访问FTP)不推荐
因为此设置为禁止匿名访问的主动模式,而各客户端默认都是被动模式,所以需要修改客户端的访问方式为主动模式。
1.FIleZilla访问设置
打开FIleZilla ——>点击右上角编辑——>选择设置——>选择FTP——>选择主动(A)——>确定
2.文件资源管理器访问配置
打开控制面板,选择网络和Internet
选择Internet选项
选择“高级” 然后下滑找到“使用被动FTP” 默认是勾选状态的,需取消勾选
然后点击“应用”并点击“确定”
3.使用FIleZilla访问
4.使用文件资源管理器访问
配置的三个用户都可以登录,经过测试,用户的各项权限均可满足需求。