网站首页 » 网站运营 » Linux » centos7 vsftpd 虚拟用户配置
上一篇:
下一篇:

centos7 vsftpd 虚拟用户配置

虚拟用户的配置说复杂也不复杂,说简单也不一定简单,我在配置这个东西的时候也折腾了好长时间,最后还是把它虚拟用户的配置弄明白了。下面就给大家分享我的此时此刻的喜悦。

首先引起我对虚拟用户配置的注意是因为一次 wordpress  后台上传图片报错的经历。因为刚配置完云服务器,所以问题就不接二连三的出现,后台无法上传图片就是其中一个为了更好的解决图片上传的问题,于是开始了 FTP 虚拟用户征服之路。

FTP 虚拟用户有别于一般的用户,它不用通过 useradd 命令来添加用户,只需要在配置文件就可以了。内容有点多,提好你的裤腰带。我们开始吧!

什么是 vsftpd 虚拟用户

什么是 vsftpd 虚拟用户?前面已经有提过,就是不用通过 useradd 命令来添加用户,而是通过配置 FTP 配置文件来实现新增用户的目的,这些用户你无法用平时的命令行来获取到用户信息比如:
方法一:

cat /etc/passwd

方法二:

cut -d : -f 1 /etc/passwd

对于 FTP 虚拟用户来说只限于 FTP 范围内使用。因为你是在 FTP 里配置这些用户的。而在这里所说的 FTP 虚拟用户又有别于 Linux 系统中的虚拟用户,因为 Linux 系统中的虚拟用户是可以通过上面的命令行查找到用户信息的。在这篇文章中,我们是要配置 vsftp 虚拟用户,这个你得先明确,不然后面你会觉得很乱,甚至不知道自己在做什么。

FTP 虚拟用户作用

为什么要用到 FTP 的虚拟用户,这里给你分析下原因。

第一:出于安全性方面的考虑,由于是 FTP 虚拟用户,所有没有了系统用户的一些权限,比如SHELL权限,无法登录到系统。

第二:配置 FTP 虚拟用户可以带来一些方便,并可以更好地解决一些问题,比如上面说到的 WordPress 后台无法上传图片。

你可以把多个 FTP 虚拟用户映射到系统的一个本地用户上或者把多个 FTP 虚拟用户分别映射系统多个本地用户,比如多个 FTP 虚拟用户映射到本地的 ftp 用户,实现所以 FTP 虚拟用户权限的统一管理。这个在实际的应用中是非常的有用的,比如你买了一台云服务器,然后里面放了好几个站点,那肯定得分配多个 FTP 用户,你可以在系统用添加这些用户,你也可以用本文正在介绍的 FTP 虚拟用户来实现。如果你用的是系统用户,那么你就会遇到这样的情况,比如当你的 Worpress 后台无法上传图片,导致这个问题的原因是 php 在处理图片上传请求用的是 php-fpm 这个用户,而你给你的站点目录配置所有者的时候可能就不是这个用户了,。对于这个目录来说你这个 php-fpm 就不是所有者。而你给这个目录的文件分配的权限是-rwxr–r–,这样的意思就是所有者有读写执行的权限,组用户有只读权限,其它用户有只读权限。php-fpm 这个用户对于这个站点目录来说就是 其它用户,其它用户只有只读权限,没有写权限,所以你无法通过后台来上传图片。

FTP 虚拟用户配置

在这里我们假设已经安装好了vsftp ,如果不知道怎么安装,这里有一篇关于vsftp安装的文章《Centos 7 FTP(vsftp)服务安装及配置》。好了,现在我们就来配置 FPT 虚拟用户。

修改 vsftp 配置文件 vsftpd.conf

sudo vim /etc/vsftpd/vsftpd.conf

下面的有些代码如果文件里有则修改,无则添加。

pam_service_name=vsftpd
guest_enable=YES
guest_username=nobody
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vu

Linux vsftpd 虚拟用户配置

授课时间

1.pam_service_name=vsftpd

启用vsftpd验证,设置PAM使用的名称,该名称就是/etc/pam.d/目录下的vsftpd 文件

2.guest_enable=YES

是否开户 vsftpd 虚拟用户功能 guest_username=nobody

映射到系统本地用户名

3.virtual_use_local_privs=YES

启用vsftpd虚拟用户,并且虚拟用户和本地用户具有相同的权限。

4.user_config_dir=/etc/vsftpd/vu vsftpd

虚拟用户存放目录,此目录待添加

创建 vsftpd 虚拟用户文件

配置好后,现在我们就新建 vsftpd 虚拟用户目录,也就是上面的第四点 /etc/vsftpd/vu 。这个目录用来存放每一个 vsftpd 虚拟用户。

sudo mkdir /etc/vsftpd/vu

目录创建好后,在这个目录下创建 vsfptd 虚拟用户文件。比如我们添加一个名为 yunkus 的 vsftpd 虚拟用户,那么你就要在这个 vu 目录下新新建一个名为 yunkus 的文件。

sudo vim /etc/vsftpd/vu/yunkus

添加如下内容

guest_username=nobody
local_root=/var/www/yunkus.com/
virtual_use_local_privs=YES
anon_umask=133

Linux vsftpd 虚拟用户配置

授课时间

1.guest_username=nobody

这个命令你可以根据自己的需要来决定要不要,因为前面我们已经在/etc/vsftpd/vsftpd.conf这个配置文件里添加好了,如果你想单独设置这个用户映射到另一个系统本地用户,那么你就可以在这里把 nobody 更改为其它本地用户名。

2.local_root=/var/www/yunkus.com/

设置此 vsftpd 虚拟用户的根目录,这也就意味着此用户登录 ftp 后默认进到这个目录。

3.virtual_use_local_privs=YES

这个跟第一个也是同样的道,如果你想单独设置此用户,那就这里可以进行单独设置。

4.anon_umask=133
这行代码的意思就是设置此用户上传文件时,文件的默认权限。这个可以理解成一个掩码,你上传文件的权限就是通过 777 减去 anon_umask 计算出来的。在此我们设置的是133,也就是说上传后文件的权限是644。

修改 /etc/pam.d/vsftpd

sudo vim /etc/pam.d/vsftpd

把里面的所有内容注释掉,添加如下两行代码

auth required pam_userdb.so  db=/etc/vsftpd/login
account required pam_userdb.so db=/etc/vsftpd/login

Linux vsftpd 虚拟用户配置

授课时间

1.auth

对用户的用户名口令进行验证。

2.accout

对用户的帐户有哪些权限哪些限制进行验证。

3.pam_userdb.so

表示该条审核将调用 pam_userdb.so 这个库函数进行。

4.db=/etc/vsftpd/login

这是一个存放 vsftpd 虚拟用户的文件列表,等会我们就去创建它

创建 login 文件

创建一个logo.txt 并编辑内容

sudo vim /etc/vsftpd/login.txt
注意:

这个是一个用户列表,内容编写规则为用户名占一行,密码占一行。

yunkus
123456

Linux vsftpd 虚拟用户配置

文件编辑完之后,保存退出。接下来我们就得把这个login.txt 文件生成 db 口令的数据库文件,执行如下命令行:

sudo db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

这样你就可以在/etc/vsftpd/ 目录下看到有两个 login 文件了,一个是 .txt 格式的,一个是 .db 格式的。

sudo ls -lh /etc/vsftpd

Linux vsftpd 虚拟用户配置

现在你就可以在在 FTP 里用账户:yunkus,密码:123456  的账号来连接服务器里的 vsftpd 来进行文件的上传下载了。

如果你无法生成.db口令数据库文件,那么你可以查看你系统有没有安装 db4,如果没有,那么你可以尝试先安装 db4。

查看是否已经安装了生成 db 口令数据文件的包

rpm -qa | grep db4

如果没有则可以执行以下命令来进行安装

yum install db4 -y

安装完这后,再次执行 db 生成口令数据库文件。

注意:

本例子中的站点目录及目录下的所有文件文件名的所有者都设置成 nobody,站点的下的所有目录的权限设置为dwrxr-xr-x,文件的权限设置为-wr-r–r–

最后一步就是把站点目录及目录下的所有文件,文件夹的所有者设置成 nobody

sudo chown -R nobody:nobody  /var/www/yunkus.com

到此 vsftpd 虚拟用户教程已经告一段落,如果你在配中还有什么不明白的,可以评论留言。

WordPress 后台上传图片问题

在这里还我们也顺便把 WordPress 后台无法上传图片的问题解决一下。解决的方法非常的简单,因为上面都已经为我们铺好路了,我们只需要作一个地方的小修改就可以解决图片无法上传的问题。编辑一下 www.conf 文件:

sudo vim /etc/php-fpm.d/www.conf

把 php 程序默认的访问用户名 php-fpm 及用户组 php-fpm 修改为 nobody 用户和nobody 用户组。

Linux vsftpd 虚拟用户配置

这个配置完成后重启下php 服务就可以了。

sudo systemctl restart php-fpm

关于 vsftpd 虚拟用户的配置及 WordPress 后台无法上传图片的问题到给大家分享到这里。可是后来我发现竟然没法登录 phpMyAdmin 了。出现下面的错误提示:

phpMyAdmin – Error

Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser. session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)

如果你也遇到了这样的问题,你可以参考我这篇文章《phpMyAdmin 登录出错 session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied》这个问题解决完之后,你应该就可以过上小康生活了。

  • 微信扫一扫,赏我

  • 支付宝扫一扫,赏我

声明

原创文章,不经本站同意,不得以任何形式转载,如有不便,请多多包涵!

本文永久链接:http://yunkus.com/centos7-vsftpd-virtual-user-config/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论 END