需求背景:第三方厂商中国移动、电信、联通、微软、京东与我司内部进行接口交易,采用ftp协议,外部厂商负责上传文件,内部系统负责下载各厂商上传的文件。
文章目录
- 一、用户与目录
- 1. 用户与目录约定
- 2. 用户创建
- 3. 用户密码
- 4. 创建用户家目录(非默认)
- 5. 用户家目录绑定
- 二、用户、组、权限
- 2.1. 查看ftp组ID
- 2.2. 修改ftp组ID
- 2.3. 用户添加到组
- 三、用户、组、权限
- 3.1. 调整用户家目录组的权限(非内部系统)
- 3.2. 调整用户家目录组的权限(内部系统)
- 3.5. 赋予权限
- 四、ftp配置与启动
- 4.1. 限制用户活动范围
- 4.2. 重新启动ftp
- 4.3. 监控ftp运行状态
- 五、测试验证
- 5.1. 预期效果
- 5.2. 准备测试文件
- 5.3. 用户上传文件
- 5.4. 效果分析
- 5.5. nb用户文件下载
- 5.6. 效果分析
- 5.7. 异常解决
一、用户与目录
1. 用户与目录约定
厂商 | 用户 | 目录 |
---|---|---|
移动 | yd | /app/ftp/yd |
电信 | dx | /app/ftp/dx |
联通 | lt | /app/ftp/lt |
微软 | wr | /app/ftp/wr |
京东 | jd | /app/ftp/jd |
内部系统 | jd | /app/ftp |
2. 用户创建
useradd yd
useradd dx
useradd lt
useradd wr
useradd jd
useradd nb
3. 用户密码
密码统一为123456
passwd yd
passwd dx
passwd lt
passwd wr
passwd jd
passwd nb
4. 创建用户家目录(非默认)
mkdir /app/ftp/yd /app/ftp/dx /app/ftp/lt /app/ftp/wr /app/ftp/jd /app/ftp/nb -p
操作记录:
[root@localhost ~]# mkdir /app/ftp/yd /app/ftp/dx /app/ftp/lt /app/ftp/wr /app/ftp/jd /app/ftp/nb -p
[root@localhost ~]# cd /app/ftp/
[root@localhost ftp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 9月 10 18:17 dx
drwxr-xr-x. 2 root root 6 9月 10 18:17 jd
drwxr-xr-x. 2 root root 6 9月 10 18:17 lt
drwxr-xr-x. 2 root root 6 9月 10 18:17 wr
drwxr-xr-x. 2 root root 6 9月 10 18:17 yd
drwxr-xr-x. 2 root root 6 9月 10 18:17 nb
[root@localhost ftp]#
5. 用户家目录绑定
vim /etc/passwd
原配置:
调整后配置:
二、用户、组、权限
2.1. 查看ftp组ID
将yd、dx、lt、wr、jd、nb6个用户组ID都修改为ftp组ID
# 查看现ftp组IDcat /etc/group
2.2. 修改ftp组ID
默认
yd:x:1004:1004::/app/ftp/yd:/bin/bash
dx:x:1005:1005::/app/ftp/dx:/bin/bash
lt:x:1006:1006::/app/ftp/lt:/bin/bash
wr:x:1007:1007::/app/ftp/wr:/bin/bash
jd:x:1008:1008::/app/ftp/jd:/bin/bash
nb:x:1009:1009::/app/ftp:/bin/bash
执行修改组ID命令
usermod -g 50 yd
usermod -g 50 dx
usermod -g 50 lt
usermod -g 50 wr
usermod -g 50 jd
usermod -g 50 nb
调整后
yd:x:1004:50::/app/ftp/yd:/bin/bash
dx:x:1005:50::/app/ftp/dx:/bin/bash
lt:x:1006:50::/app/ftp/lt:/bin/bash
wr:x:1007:50::/app/ftp/wr:/bin/bash
jd:x:1008:50::/app/ftp/jd:/bin/bash
nb:x:1009:50::/app/ftp:/bin/bash
2.3. 用户添加到组
将yd、dx、lt、wr、jd、nb6个用户添加到ftp组
默认:
cat /etc/group
将用户添加到ftp组
usermod -G ftp yd
usermod -G ftp dx
usermod -G ftp lt
usermod -G ftp wr
usermod -G ftp jd
usermod -G ftp nb
调整后
三、用户、组、权限
3.1. 调整用户家目录组的权限(非内部系统)
将yd、dx、lt、wr、jd、nb6个用户的家目录的用户从属权限调整为对应的用户,对用用户的家目录的用户组从属权限调整为ftp用户组
默认
cd /app/ftp/
ll
先调整yd、dx、lt、wr、jd
5个用户的操作
chown yd.ftp yd/ -R
chown dx.ftp dx/ -R
chown lt.ftp lt/ -R
chown wr.ftp wr/ -R
chown jd.ftp jd/ -R
注意:在/app/ftp/
目录下执行上面的命令
调整后效果
3.2. 调整用户家目录组的权限(内部系统)
然后,对nb用户的操作如下,进入到/app目录执行以下命令
默认
cd /app
chown nb.ftp ftp/
调整后效果
3.5. 赋予权限
chmod 775 ftp/ -R
注:
四、ftp配置与启动
4.1. 限制用户活动范围
简言之,就给是每个用户限制本身用户的目录可见范围
- 打开权限限制属性
vim /etc/vsftpd/vsftpd.conf
把101行和103行注释打开
vim /etc/vsftpd/chroot_list# 把这些用户添加进去
yd
dx
lt
wr
jd
nb
注:以前的u01用户
先忽略
4.2. 重新启动ftp
# 重新启动ftp
systemctl start vsftpd.service
4.3. 监控ftp运行状态
# 监控ftp运行状态
systemctl status vsftpd.service
五、测试验证
5.1. 预期效果
yd、dx、lt、wr、jd
5个用户上传的文件,只对自己可见
yd、dx、lt、wr、jd
5个用户上传的文件,他们之间相互是不可见
yd、dx、lt、wr、jd
5个用户上传的文件,nb用户均可见并可以进行下载解析
nb用户上传的文件,yd、dx、lt、wr、jd
5个用户不可见
5.2. 准备测试文件
5.3. 用户上传文件
ip:192.168.159.102
用户名:yd、dx、lt、wr、jd、nb
密码:123456
端口:21
-
yd用户上传文件
-
dx用户上传文件
-
lt用户上传文件
-
wr用户上传文件
-
jd用户上传文件
-
nb用户上传文件
5.4. 效果分析
从面截图可以看出:
yd、dx、lt、wr、jd
5个用户上传的文件,只对自己可见
yd、dx、lt、wr、jd
5个用户上传的文件,他们之间相互是不可见
5.5. nb用户文件下载
登录nb用户下载yd、dx、lt、wr、jd
5个用户上传的文件
执行前:
-
nb
用户下载yd用户
上传的文件
-
nb
用户下载dx用户
上传的文件
-
nb
用户下载lt用户
上传的文件
-
nb
用户下载wr用户
上传的文件
-
nb
用户下载jd用户
上传的文件
5.6. 效果分析
yd、dx、lt、wr、jd
5个用户上传的文件,nb用户均可见并可以进行下载解析
nb用户上传的文件,yd、dx、lt、wr、jd
5个用户不可见(因为这5个用户活动的可见目录范围限制到了用户本身的家目录下面,ftp目录属于他们家目录的上一级目录)
5.7. 异常解决
如果遇到以下异常请移步
ftp 553 Could not create file
现在的效果是这样的,内部系统可以看到