我使用的虚拟机是CentOS Linux release 7.6.1810 (Core)操作系统,这个版本的操作系统和vsftp不兼容,会乱码,找了很多办法解决不了,因此选择了pureftp。
1、yum安装pureftp
默认的 yum 源没有提供 pure-ftpd,需要先安装 epel 扩展源:
yum install epel-release
yum install pure-ftpd
2、修改配置文件
通过yum的方式安装之后,配置文件的位置是/etc/pure-ftpd/pure-ftpd.conf。
注意修改以下几项:
MinUID 100 #如果这个数字比较小,就把它调大一点,否则如果建的用户的uid比这个数字小,会报“530 Login authentication failed”错误
AnonymousOnly no #只允许匿名用户登录。
NoAnonymous yes #不允许匿名用户登录
ProhibitDotFilesWrite no #不能删除/写入隐藏文件。如果ftp目录内有隐藏文件的话,改为yes。
ProhibitDotFilesRead no #禁止读取隐藏文件。如果ftp目录内有隐藏文件的话,改为yes。
PureDB /etc/pure-ftpd/pureftpd.pdb #用户数据库文件。我建好ftp之后这行配置默认是被注释掉的,所以我登录ftp一直报错“530 Login authentication failed”。因为没有启用用户数据库文件,ftp读取不到用户,所以这行一定要启用
其他的我没有修改,都是默认的。
3、启动pureftp
systemctl start pure-ftpd
systemctl status pure-ftpd //执行之后,看到绿色的active表明pureftp搭建成功
4、建ftp用户
我的需求是,建两个用户,一个用户有读写权限,一个用户只有读的权限。pureftp的用户比较特殊,它有一个虚拟用户的概念,虚拟用户是挂靠在真实用户下面的,因此具备和真实用户一样的读写权限。所以我们需要建两个真实linux用户,一个具备读写权限,一个具备读权限。
(1)创建用户组
groupadd ftpgroup
(2)创建系统用户
useradd user1 -g ftpgroup -d /abc/def -s /sbin/nologin //可读可写
useradd user2 -g ftpgroup -d /abc/def -s /sbin/nologin //只读
(3)创建pureftp虚拟用户,并配置好密码
pure-pw useradd randw -u user1 -g ftpgroup -d /abc/def
Password:
Enter it again:
pure-pw useradd ronly -u user2 -g ftpgroup -d /abc/def
Password:
Enter it again:
(4)修改 FTP 文件夹目录权限
chmod 755 /abc/def
(5)创建用户信息数据库文件,list显示用户列表
pure-pw mkdb
pure-pw list
randw /abc/def/./
ronly /abc/def/./
(6)测试
使用randw登录ftp,登录成功
C:\Users\pku>ftp 202.112.?.?
连接到 202.112.?.?。
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 2 of 50 allowed.
220-Local time is now 08:31. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
200 OK, UTF-8 enabled
用户(202.112.183.194:(none)): randw
331 User randw OK. Password required
密码:
230 OK. Current directory is /
使用put命令传输文件
ftp> put E:\test.txt
200 PORT command successful
150 Connecting to port 1038
226 File successfully transferred
使用ronly登录
C:\Users\pku>ftp 202.112.?.?
连接到 202.112.?.?。
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 2 of 50 allowed.
220-Local time is now 08:31. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
200 OK, UTF-8 enabled
用户(202.112.183.194:(none)): ronly
331 User ronly OK. Password required
密码:
230 OK. Current directory is /
查看文件
ftp> ls
200 PORT command successful
150 Connecting to port 1854
.
..
1.txt
test.txt
226-Options: -a
226 8 matches total
传输文件
ftp> put E:\2.txt
200 PORT command successful
553 Can't open that file: Permission denied
传输文件就会报错不被允许。
通过简单的测试,可以看出,ftp已经搭建好,并且满足了不同的用户有不同的权限。