项目要求:开发用户将文件上传到指定目录,多家客户端用户ftp后,直接进入指定目录,进行文件下载,仅能下载,不能做其他增删改等操作。
难点:1.权限分配,仅只读。
2. 其他用户ftp后,直接能看到指定目录。相当于共享目录。
1.安装vsftpd
yum -y install vsftpd # vsftpd是服务端的服务,ftp是客户端安装连接服务端ftp的工具
systemctl start vsftpd.service
systemctl enable vsftpd.service
netstat -anpt |grep vsftpd
2. 用户创建及配置
useradd hlj #开发用户,负责上传文件
useradd -d /home/hlj01 -m -g hlj hlj01 #客户端用户,负责下载文件
useradd -d /home/hlj02 -m -g hlj hlj02 #客户端用户,负责下载文件
useradd -d /home/hlj03 -m -g hlj hlj03 #客户端用户,负责下载文件
将客户端用户加入到开发用户所在的组中,这样开发用户上传的文件只要开放同组的读权限就可以了。
全部配置好后,将/etc/passwd 文件的客户端用户/bin/bash修改为/sbin/nologin 这样就禁止这些用户的shell操作了。
3.允许哪些用户ftp登录
修改/etc/vsftpd/vsftpd.conf配置 ,在/etc/vsftpd/下有ftpusers和user_list两个文件,vsftpd.conf文件的userlist_enable和userlist_enable参数组合可以实现哪些系统用户可以ftp登录。
当userlist_enable为YES,userlist_enable为YES时,ftpusers和user_list文件中的用户均不能访问
当userlist_enable为YES,userlist_deny为NO时,FTP服务器仅允许user_list中的用户访问
本次我们选了userlist_enable为YES,userlist_deny为NO,我们需要将hlj,hlj01,hlj02,hlj03加入到user_list文件中。
[root@ftpser vsftpd]# cat user_list
hlj
hlj01
hlj02
hlj03
以上用户可以ftp登录到服务器。
4.hlj开发用户上传后的文件权限设置
修改/etc/vsftpd/vsftpd.conf配置
local_umask=022 这样上传的文件权限为644 确保第二位同组用户权限为4,只读权限。
5.共享目录设置
hlj开发用户上传文件的目录为/home/hlj/upfile
su - hlj
mkdir upfile
chmod -R 750 /home/hlj/upfile
chmod -R 750 /home/hlj/
每个用户进入都有自己的目录,ftp后都会进入自己的目录,如何实现所有客户端用户登录后都能显示upfile目录呢?
初期我们使用软连接 ln -s /home/hlj/upfile /home/hlj01/upfile01 最后发现hlj01用户ftp登录成功后,没有upfile01的权限。百度搜索后,发现软连接会有权限问题。
使用mount --bind 在hlj01-03目录下创建upfile文件
mount --bind /home/hlj/upfile /home/hlj01/upfile
mount --bind /home/hlj/upfile /home/hlj02/upfile
mount --bind /home/hlj/upfile /home/hlj03/upfile
修改/etc/fstab 将mount添加为开机启动
/home/hlj/upfile /home/hlj01/upfile none bind 0 0
/home/hlj/upfile /home/hlj02/upfile none bind 0 0
/home/hlj/upfile /home/hlj03/upfile none bind 0 0
7.更改服务端口号
修改/etc/vsftpd/vsftpd.conf配置
listen_port=8821
重启服务器
8.测试
1.windows cmd
ftp
open ip port
2.浏览器 ftp://ip:port