资讯专栏INFORMATION COLUMN

pure-ftpd 使用虚拟用户 安装/配置 方法

cooxer / 3703人阅读

摘要:所以在已经设置了虚拟用户后,最好将其他认证方式关闭。修改默认字符集选择使用的理由之一就是可以设置字符集,解决在上传中文乱码的问题。可能是因为默认配置里服务端显式指定了,所以在我的资源管理器上也能正常显示中文,但浏览器中打开还是乱码。

pure-ftpd 使用虚拟用户 安装/配置 方法 运行环境/版本

OS : 16.04.2

pure-ftpd : 1.0.36-3.2build1

安装
#直接使用包管理器安装
sudo apt-get install pure-ftpd
创建对应的系统用户

虚拟用户需要关联系统用户来获得对服务器上的文件的访问控制权限,可以使用多个虚拟用户关联同一个系统用户来然后使用不同的访问目录,也可以关联不同的系统用户来实现不同的权限控制。这里我使用第一种方式。

# 创建系统用户的组
sudo groupadd ftpgroup
# 创建系统用户,加入刚刚创建的组
sudo useradd ftpuser -g ftpgroup -s /sbin/nologin
# 创建ftp存储目录,并使响应的系统用户拥有权限
sudo mkdir -p /var/opt/ftp/user1
sudo mkdir -p /var/opt/ftp/user2
sudo chown -R ftpuser:ftpgroup /var/opt/ftp/
创建虚拟用户

虚拟用户可以通过安装附带的 pure-pw 工具来进行管理

sudo pure-pw useradd user1 -u ftpuser -g ftpgroup -d /var/opt/ftp/user1
# 运行命令后会要求在终端中输入要设置的用户密码
sudo pure-pw useradd user2 -u ftpuser -g ftpgroup -d /var/opt/ftp/user2
# 用户创建完成后需要运行下面命令创建/更新用户数据库。或者在运行 pure-pw useradd 等命令时加上 -m 参数直接创建/更新数据库以省略本步。 
sudo pure-pw mkdb

这里有一个坑,使用 apt-get 安装的 pure-ftpd 默认没有开启虚拟用户的的认证方式,所以就算创建了虚拟用户,仍然无法登陆ftp。pure-ftpd 的默认配置文件位置在 /etc/pure-ftpd 文件夹下,启用虚拟用户认证的方式需要在认证文件夹 /etc/pure-ftpd/auth 下创建对应认证方式的软连接。

cd /etc/pure-ftpd/auth/
# 创建虚拟用户认证的软连接
sudo ln -s ../conf/PureDB 60puredb
# 还需要检查一下设置中虚拟用户方式是否是开启状态
cat 60puredb 
# 结果为 /etc/pure-ftpd/pureftpd.pdb 。内容为虚拟用户数据库文件

之后再重启 pure-ftpd 服务。

sudo systemctl restart pure-ftpd

此时已经可以通过 ftp 客户端使用创建好的虚拟用户进行连接了。

配置用户
# 常见用法如下
# 添加用户
sudo pure-pw useradd user1 -u ftpuser -g ftpgroup -d /var/opt/ftp/user1
# 修改密码
sudo pure-pw passwd user2
# 显示用户列表
sudo pure-pw list
# 生成/重新生成用户数据库文件
sudo pure-pw mkdb
# 更多详细用法参考
man pure-pw
其他配置

prue-ftpd 的配置文件不同于常见的 vsftpd ,它使用在conf文件夹的文件名做为配置项,使用文件的内容作为配置值。经过上面简单配置后,配置文件夹的结构如下:

$ pwd
/etc/pure-ftpd
$ tree 
.
├── auth
│   ├── 60puredb -> ../conf/PureDB
│   ├── 65unix -> ../conf/UnixAuthentication
│   └── 70pam -> ../conf/PAMAuthentication
├── conf
│   ├── AltLog
│   ├── FSCharset
│   ├── MinUID
│   ├── NoAnonymous
│   ├── PAMAuthentication
│   ├── PureDB
│   ├── TLSCipherSuite
│   └── UnixAuthentication
├── db
├── pureftpd-dir-aliases
├── pureftpd.passwd
└── pureftpd.pdb

关闭系统用户访问

使用虚拟用户方式访问 ftp 时默认配置就是限制根目录 (chroot) 的,而系统用户使用 pam 方式认证登录后是不对 ftp 根目录进行限制的,这样无形之中增加了风险。所以在已经设置了虚拟用户后,最好将其他认证方式关闭。

sudo sh -c "echo "no" > conf/PAMAuthentication"
sudo sh -c "echo "no" > conf/UnixAuthentication" 

修改默认字符集

选择使用 pure-ftpd 的理由之一就是可以设置 GBK 字符集 ,解决在 windows 上传中文乱码的问题。(可能是因为默认配置里服务端显式指定了 UTF-8 ,所以在我 WIN7 的资源管理器上也能正常显示中文,但IE 浏览器中打开 ftp 还是乱码。具体使用哪种字符集请根据需要确定。另外,如果需要修改字符集的话最好在FTP还是空的时候修改,这样不会造成已经上传的文件字符集和系统设置不同导致乱码。)

sudo sh -c "echo "GBK" > conf/FSCharset"

修改用户最小UID

在 pure-ftpd 的设置中有一项 conf/MinUID ,UID大于等于这个值的用户才可以登录(包括虚拟用户对应的系统用户)。所以出现用户无法登录的问题时,也可能是用户的UID小于这个值导致的,这时需要修改这个值或用户的UID解决。

sudo sh -c "echo "1000" > conf/MinUID"

不解析主机名

设置这项可以加快 ftp 连接速度

sudo sh -c "echo "yes" > conf/DontResolve"

更多配置

# 更多配置可以参考
man pure-ftpd-wrapper

因为我是用的是软件包直接安装好了服务化的 pure-ftpd 所以使用的就是如上所示的修改配置方式。其他情况下还可以直接在 pure-ftpd 服务启动时添加参数,详见官网

# 将当前配置文件显示为参数形式
$ pure-ftpd-wrapper --show-options
-l puredb:/etc/pure-ftpd/pureftpd.pdb -J ALL:!aNULL:!SSLv3 -E -O clf:/var/log/pure-ftpd/transfer.log -8 UTF-8 -u 1000 -H -g /var/run/pure-ftpd/pure-ftpd.pid

参考文档

Pure-ftpd服务安装及虚拟用户设置
Pure-ftpd服务安装设置
用pureftpd+pureDB虚拟用户,建立一个简单安全(不需要数据库支持)的linux ftp网站

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10750.html

相关文章

  • pure-ftpd 使用虚拟用户 安装/配置 方法

    摘要:所以在已经设置了虚拟用户后,最好将其他认证方式关闭。修改默认字符集选择使用的理由之一就是可以设置字符集,解决在上传中文乱码的问题。可能是因为默认配置里服务端显式指定了,所以在我的资源管理器上也能正常显示中文,但浏览器中打开还是乱码。 pure-ftpd 使用虚拟用户 安装/配置 方法 运行环境/版本 OS : 16.04.2 pure-ftpd : 1.0.36-3.2build1 安...

    姘存按 评论0 收藏0
  • Pureftpd操作指南——你恰好用得上系列

    摘要:备选的长参数也被支持的,下面是一个等价的命令针对喜欢配置文件的用户,官方给出了一种方案通过一个封装工具,将配置文件解析并将其转换成命令行参数。 前言 Pure-ftpd提供了一个轻量级、快速、多语言、具备基本功能特性的FTPServer配置方案。本文展示了如何在CentOS7.x上安装和配置Pure-ftpd,并在此过程中阐述PUre-Ftpd的设计特性。 安装 首先需要开启epel,...

    vibiu 评论0 收藏0
  • Pureftpd操作指南——你恰好用得上系列

    摘要:备选的长参数也被支持的,下面是一个等价的命令针对喜欢配置文件的用户,官方给出了一种方案通过一个封装工具,将配置文件解析并将其转换成命令行参数。 前言 Pure-ftpd提供了一个轻量级、快速、多语言、具备基本功能特性的FTPServer配置方案。本文展示了如何在CentOS7.x上安装和配置Pure-ftpd,并在此过程中阐述PUre-Ftpd的设计特性。 安装 首先需要开启epel,...

    zhangwang 评论0 收藏0
  • 使用docker-compose安装pure-ftp

    摘要:安装目的本文是用部署项目的第一篇用于管理独立于容器之外的数据文件,建议安装到开发环境和测试环境并对程序员开放权限安装简单,建议作为第一个服务进行练习前置条件学习从入门到实践测试环境建议为专业版和,其它环境本人未测试已在服务器上安装和安 安装目的 本文是《用docker部署WEB项目》的第一篇 pure-ftp用于管理独立于doker容器之外的数据文件,建议安装到开发环境和测试环境并对...

    solocoder 评论0 收藏0
  • 一键安装LNMP或LAMP Web环境实现Linux服务器部署 PHP MySQL Nginx/Ap

    摘要:目前,我们看到的老蒋采用的部署的环境,在镜像中配置,于是我们会称作为。有没有一件傻瓜式安装工具脚本呢这里老蒋要推荐的来自国内比较老牌且一直更新维护的一键安装包,我们可以较为直观且无人值守的安装需要的网站服务器环境。如今我们建站较多的还是会选择VPS云服务器,很少会去选择虚拟主机,固然前者有很多的优点。不过相比虚拟主机不同的是,VPS云服务器需要我们自己配置WEB环境,而且我们较多的还是会选择...

    IntMain 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<