设为首页 收藏本站
查看: 1459|回复: 0

[经验分享] vsftp企业级搭建和应用实施

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-17 11:05:09 | 显示全部楼层 |阅读模式
【解决】Vsftp匿名上传问题本文前提需要关闭selinux

编辑Vsftp的配置文件vsftp.conf。有关匿名的相关选项全部开启,如下图:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
以上设置,基本上大家都知道的。但是如果你只修改此文件的话,你会发现使用匿名用户还是无法上传文件。
需要注意就是vsftpd的公共目录/var/ftp/pub的权限

我们在此需要做的就是把该目录的权限设置为777,切记不要修改该目录的所属者及所属组,否则即使你修改了该目录的权限,也是无法上传文件的。该目录默认所属者是root用户和root用户组。

刚开始我就是犯了这样的错误,把该目录的所属者修改为ftp用户。因为我猜想vsftp的匿名用户使用的就是系统中的ftp用户。可是事实告诉我,我的猜想是错的。
切记,匿名用户只能在/var/ftp/pub目录下。
wKioL1QX8T3jrwhZAAG0-vbWPwg330.jpg




vsftpd虚拟用户与匿名用户配合使用

要求:在公司FTP服务器上,用户ilanni对/data目录下所有的目录都具有管理员权限,即删除、新建、重命名、上传等。而匿名用户可以浏览data目录下的所有目录,其中只对tmp目录具有管理员权限。

这样可以达到只有一个管理员账号,可以对/data目录进行操作,而公司的其他员工帐号都可以浏览/data目录,并且在/data/tmp目录下可以新建自己的目录,并上传文件等权限。

现在我们先新建目录/data,如下图:

[iyunv@localhost /]# mkdir data

再在/data/目录新建几个目录以及tmp目录,如下图:

[iyunv@localhost /]# cd /data/

[iyunv@localhost data]# mkdir soft gane tmp

为了更简单的进行控制,我们就不在系统中新建用户,直接使用root用户及root用户组,通过root用户及root用户组对目录的权限,来达到虚拟用户对目录的权限。

因为/data/tmp目录对于匿名用户来说具有各种权限,所以我们需要修改/data/tmp目录的用户及用户组权限。

该目录是root用户创建,所以目前该目录的权限是root用户拥有所有权,如下图:

1
2
3
4
5
[iyunv@mail data]# ll
总计 12
drwxr-xr-x 2 root root 4096 09-16 16:09 gane
drwxr-xr-x 2 root root 4096 09-16 16:09 soft
drwxr-xr-x 2 root root 4096 09-16 16:09 tmp



现在修改权限为777,即所有用户对该目录具有所有权。

1
2
3
4
5
6
[iyunv@mail data]# chmod 777 tmp/
[iyunv@mail data]# ll
总计 12
drwxr-xr-x 2 root root 4096 09-16 16:09 gane
drwxr-xr-x 2 root root 4096 09-16 16:09 soft
drwxrwxrwx 2 root root 4096 09-16 16:09 tmp



目录权限修改完毕后,现在开始配置vsftpd虚拟用户。

修改vsftpd的配置文件如下:
1
2
3
4
5
6
7
anonymous_enable=YES
anon_upload_enable=YES   //开启匿名用户的上传权限
anon_mkdir_write_enable=YES   //开启匿名用户创建目录的权限
anon_other_write_enable=YES   //开启匿名用户删除和重命名的权限
为了让用户登录后直接进入的就是/data目录,在此我们还要修改本地用户与匿名用户的默认根目录
local_root=/data
anon_root=/data



现在开始添加vsftpd虚拟用户ilanni

1
2
3
4
cd /etc/vsftpd
Vim login.txt
ilanni
ilanni



添加完毕后,我们需要使用db_load命令把该用户添加到数据库文件中:

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

注意该操作建议多执行两次,因为有可能执行一次不成功。

数据库文件操作完毕,我们现在开始创建ilanni对应相关配置文件。打开vu目录并创建ilanni文件,并添加如下内容:

1
2
3
4
5
mkdir -pv /etc/vsftpd/vu
vim ilanni
guest_username=root
local_root=/data/
virtual_use_local_privs=YES



以上全部配置完毕后,要重启vsftpd服务。

测试相关权限。先使用匿名用户,进行测试。匿名用户登录

测试匿名用户在/data/soft/目录下上传文件,上传失败。

clip_image010_thumb4.png

测试匿名用户在/data/tmp/目录下上传文件,上传成功。

wKiom1QYGUfzKLwUAAIBebuowxc844.jpg

测试匿名用户在/data/tmp/目录下创建文件夹,创建成功。

wKioL1QYGaGSOqgAAAG8_PAETVc801.jpg


测试匿名用户在/data/tmp/目录下删除文件,删除成功。
wKioL1QYGf3iaEH1AAHRqkfc4ww928.jpg
使用FTP用户ilanni登录
wKiom1QYGkiQf2gwAAIZV2EoyMI004.jpg
测试FTP用户在/data/目录下创建文件夹,创建成功
wKiom1QYGm7hiWPuAAEDiOaHHQQ719.jpg
测试FTP用户在/data/目录下上传文件,上传成功。
wKiom1QYGvKyX15_AAGdVegydas982.jpg
测试FTP用户在/data/目录下删除文件,删除成功。
wKioL1QYG1_y4LSRAAE3pxtGvEc152.jpg


Vsftpd使用虚拟用户,访问FTP

由于需要,公司网站目录需要把上传权限开通,并且同一个目录需要不同的人给与不同的权限。但是上传只能通过FTP进行上传。而网站服务器上的FTP服务器使用的是Vsftpd。

具体要求如下:

网站根目录/www,对用户ailanni具有所有权,能上传、下载、删除、创建目录权限。

对bilanni用户具有下载、浏览权限。其他用户直接跳转到FTP公共目录下。

根据这个要求我们需要使用到vsftpd的虚拟用户。

Vsftp虚拟用户的原理是:把虚拟用户的权限映射到系统用户上。而虚拟用户的权限是有系统用户对目录的控制达到的。

如果安装上述要求的话,我们的思路是这样的。

在系统中新建用户ailanni,使其对/www目录具有所有权。而修改其用户组,使其用户组对/www目录只具有查看、浏览权限。

首先、安装Vsftpd软件。

yum –y install vsftpd

安装完毕,我们先来建立所需要的用户。注意该系统用户一定要建立家目录,否则在后边无法登陆FTP服务器。

useradd ailanni

useradd bilanni

查看用户所属的用户组:

id ailanni

id bilanni

可以看到目前ailanni用户属于ailanni用户组,bilanni用户属于bilanni用户组,但要达到bilanni对www目录具有浏览、上传权限。我们需要把该用户加入到ailanni用户组,通过这样控制相关权限。

现在来把bilanni用户,加入到ailanni用户组。

usermod -G ailanni bilanni

id bilanni

用户建立完毕,我们现在来创建/www目录,并修改其相关的属性。

mkdir /www

我们可以看到目前www目录,所属的用户及用户组为root。现在来进行修改,修改ailanni用户具有所有权限,ailanni用户组具有浏览、权限,其他用户组没有任何权限。把www目录的权限修改为750

chown –R ailanni:ailanni /www

chmod –R 750  /www/

现在配置vsftpd,切换到vsftpd的安装目录,编辑vsftpd.conf文件。如下图:


添加如下的内容:

guest_enable=yes   //是否开启vsftpd虚拟用户的功能,yes表示开启,no表示不开启。

user_config_dir=/etc/vsftpd/vu   //指定每个虚拟用户账号配置目录。

pam_service_name=vsftpd    //设置PAM使用的名称,该名称就是/etc/pam.d/目录下vsfptd文件的文件名

配置完毕后,我们需要创建vsftpd虚拟用户账号的配置目录,如下图:

mkdir /etc/vsftpd/vu

创建Vsftpd虚拟用户,把这些用户名和密码存放在一个文件中。该文件内容格式是:用户名占奇数行,密码占偶数行。

1
2
3
4
5
6
cd /etc/vsftpd/vu
vim login.txt
ilannia
ilanni
ilannib
ilanni



这个文件中ilannia与ilannib是vsftpd虚拟的用户名,ilanni为密码。

这个文件的虚拟用户和密码的文本文件无法被系统帐号直接调用,需要使用db_load命令生成db口令数据库文件,如下

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


为了使服务器能够使用上述生成的数据库文件,对客户端进行身份验证,需要调用系统的PAM模块。PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。

我们现在切换到/etc/pam.d/ 目录下,编辑vsfptd文件。把该文件默认的内容注释掉,添加如下内容:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login

account required /lib/security/pam_userdb.so db=/etc/vsftpd/login

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

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

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

注意该函数会根据系统的位数而所在位置不同。








运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-24958-1-1.html 上篇帖子: vsftp--500 OOPS: vsftpd: refusing to run with writable root inside chroot() 下篇帖子: vsftpd 服务器安装参数设置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表