文件共享存储服务-ftp

ftp|lftp

  1. ftp(File Transfer Protocol)文件传输协议
  2. C/S模式
  3. 默认使用20、21端口:20端口传输数据,21端口传输命令
  4. PORT主动模式
  5. PASV被动模式

vsftpd

  1. 安装 yum install vsftpd -y
  2. 三种认证模式:匿名用户、本地用户、虚拟用户

匿名用户

  1. 使用ftp用户作为映射用户,默认家目录是/var/ftp
  2. 相关配置文件参数详解
参数 功能
anonymous_enable=[YES| NO] 是否允许匿名用户访问,默认YES
write_enable=[YES|NO] 是否允许修改文件系统,默认为YES
anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件,默认NO
anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建文件夹,默认NO
anon_other_write_enable=[YES|NO] 是否允许匿名用户具有删除、重命名等权限,默认NO

本地用户

  1. 使用本地用户,家目录即为默认存储目录,安全性大于匿名用户
  2. 相关配置文件参数详解
参数 功能
local_enable=[YES|NO] 是否允许本地用户登陆ftp,默认YES
local_umask=022 本地用户上传文件的umask值
write_enable=[YES|NO] 是否允许修改文件系统,默认为YES
chroot_local_user=[YES|NO] 将用户权限禁锢在家目录,默认为NO
allow_writeable_chroot=[YES|NO] 是否允许对家目录目录执行写入操作

虚拟用户

  1. 创建用户数据库文件,仅供ftp服务进行认证使用,安全性最高

示例

要求

  1. 以/ftp作为ftp根目录,/ftp/pub作为公共目录只允许查看、下载
  2. /ftp/hr目录只允许hr用户上传、下载、删除等操作,别的用户不可以查看
  3. /ftp/cw目录只允许cw用户上次、下载、删除等操作,别的用户不可以查看
  4. 本地用户登录ftp需要禁锢在家目录

环境

系统 IP 软件 备注
Server_centos7 192.168.11.140 vsftpd 关闭防火墙和selinux
Client_centos7 192.168.11.141 ftp lftp null

操作步骤

Server端操作步骤

  1. 安装
]# yum install vsftpd -y
  1. 创建/ftp/{pub,hr,cw}目录
]# mkdir -p /ftp/{pub,hr,cw}
  1. 创建本地用户
]# useradd -d /ftp -s /sbin/nologin hr;echo "123123"|passwd --stdin hr
]# chown -R hr.hr /ftp/hr;chmod 700 /ftp/hr
]# useradd -d /ftp -s /sbin/nologin cw;echo "123123"|passwd --stdin cw
]# chown -R cw.cw /ftp/cw;chmod 700 /ftp/cw
  1. 修改配置文件
]# mv /etc/vsftpd/vsftpd.conf{,.bak}
]# grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO

local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
local_umask=022

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
]# systemctl start vsftpd

Client端操作步骤

  1. 安装ftp/lftp工具
]# yum install ftp lftp -y #根据自己喜好选择安装ftp/lftp
  1. 验证cw用户是否可以在/ftp/cw目录下上传、下载、删除等操作
]# lftp -u cw 192.168.11.140
lftp cw@192.168.11.140:~> ls
drwx------    2 0        0               6 May 30 10:27 cw
drwx------    2 0        0               6 May 30 10:27 hr
drwxr-xr-x    2 0        0               6 May 30 10:27 pub
lftp cw@192.168.11.140:/cw> ls
lftp cw@192.168.11.140:/cw> pwd
ftp://cw@192.168.11.140/cw
lftp cw@192.168.11.140:/cw> put /etc/issue
23 bytes transferred
lftp cw@192.168.11.140:/cw> ls
-rw-r--r--    1 1003     1003           23 May 30 10:34 issue
lftp cw@192.168.11.140:/cw> mkdir test
mkdir ok, `test' created
lftp cw@192.168.11.140:/cw> ls
-rw-r--r--    1 1003     1003           23 May 30 10:34 issue
drwxr-xr-x    2 1003     1003            6 May 30 10:34 test
lftp cw@192.168.11.140:/cw> rm -rf test
rm ok, `test' removed
lftp cw@192.168.11.140:/cw> ls
-rw-r--r--    1 1003     1003           23 May 30 10:34 issue
  1. 验证cw用户是否可查看/ftp/{pub,hr}目录的内容,并是否可以上传、下载、删除等
lftp cw@192.168.11.140:/> pwd
ftp://cw@192.168.11.140/
lftp cw@192.168.11.140:/> ls
drwx------    2 0        0               6 May 30 10:27 cw
drwx------    2 0        0               6 May 30 10:27 hr
drwxr-xr-x    2 0        0               6 May 30 10:27 pub
lftp cw@192.168.11.140:/> cd hr
lftp cw@192.168.11.140:/hr> pwd
ftp://cw@192.168.11.140/hr
lftp cw@192.168.11.140:/hr> ls
ls: Access failed: 550 Failed to change directory.
lftp cw@192.168.11.140:/hr> 
lftp cw@192.168.11.140:/> pwd
ftp://cw@192.168.11.140/
lftp cw@192.168.11.140:/> ls
drwx------    2 0        0               6 May 30 10:27 cw
drwx------    2 0        0               6 May 30 10:27 hr
drwxr-xr-x    2 0        0               6 May 30 10:27 pub
lftp cw@192.168.11.140:/> cd hr
lftp cw@192.168.11.140:/hr> pwd
ftp://cw@192.168.11.140/hr
lftp cw@192.168.11.140:/hr> ls
ls: Access failed: 550 Failed to change directory.
lftp cw@192.168.11.140:/hr> cd ../pub/
lftp cw@192.168.11.140:/pub> ls
lftp cw@192.168.11.140:/pub> put /etc/redhat-release 
put: Access failed: 553 Could not create file. (redhat-release)
lftp cw@192.168.11.140:/pub> ls
-rw-r--r--    1 0        0               0 May 30 10:37 1.txt
lftp cw@192.168.11.140:/pub> get 1.txt 
lftp cw@192.168.11.140:/pub> !ls
1.txt  anaconda-ks.cfg	apache-tomcat-8.5.53.tar.gz  dead.letter  test.file
  1. 符合示例要求,结束

注意点:
1.注意目录的权限
2.注意vsftp.conf的配置文件是否禁锢在家目录
3.vsftpd.conf参数详解,也可以 man vsftpd.conf查看帮助

上一篇:Python查找列表中某个元素返回所有下标


下一篇:0-1knapsack