设为首页 收藏本站
查看: 1898|回复: 6

[经验分享] Linux FTP虚拟用户实现之vsftpd

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-10-31 09:46:16 | 显示全部楼层 |阅读模式
vsftpd可以支持虚拟用户,这样这些用户跟系统用户不搭嘎,只能访问FTP服务提供的资源,系统势必就要安全的多了。我们实现FTP匿名用户可以有两种方式,可以把虚拟用户列表保存到本地一个数据文件中,也可以把数据保存至数据库文件中。下面分别介绍两种实现方式:
本地数据文件方式:
环境及需求:CentOS5.8
软件包:vsftpd, db4-utils(要用到其提供的db_load工具把文本格式的用户列表转换成二进制的数据格式供vsftpd使用)
1、安装所需软件包
yum –y install vsftpd db4-utils
2、创建用户口令文件
[iyunv@ha1 vsftpd]# cd /etc/vsftpd/
[iyunv@ha1 vsftpd]# vim vuser
tom  /*奇数行为用户名
tompwd /*偶数行为上面用户的密码
jerry
jerrypwd
3、生成用户口令文件,并记得更改文件权限只有root有读写权限
[iyunv@ha1 vsftpd]# db_load -T -t hash -f vuser vuser.db
[iyunv@ha1 vsftpd]# ls
chroot_list  ssl        vsftpd.conf             vuser
ftpusers     user_list  vsftpd_conf_migrate.sh  vuser.db
[iyunv@ha1 vsftpd]# chmod 700 vuser vuser.db
[iyunv@ha1 vsftpd]# ll vuser vuser.db
-rwx------ 1 root root    26 Oct 29 13:40 vuser
-rwx------ 1 root root 12288 Oct 29 13:42 vuser.db
4、为其提供PAM的配置文件
[iyunv@ha1 vsftpd]# cd /etc/pam.d/
[iyunv@ha1 pam.d]# vim vsftpd.vuser
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser 注意这里db文件名后面的.db不用带上,这个相当于后缀吧,.db前面的才是文件名
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
5、创建虚拟用户映射的系统用户,指定其家目录,不需要登陆权限及密码
[iyunv@ha1 pam.d]# useradd -d /var/ftp/vuser -s /sbin/nologin vftpuser
[iyunv@ha1 pam.d]# ll -d /var/ftp/vuser/
drwx------ 3 vftpuser vftpuser 4096 Oct 29 13:55 /var/ftp/vuser/
6、编辑vsftpd配置文件使其支持虚拟用户
[iyunv@ha1 pam.d]# vim /etc/vsftpd/vsftpd.conf #添加以下几行
guest_enable=YES  /*启用虚拟用户
guest_username=vftpuser /*指定FTP虚拟用户映射到的系统用户
pam_service_name=vsftpd.vuser /*定义PAM认证文件
保存退出,重启vsftpd服务
service vsftpd restart
7、用虚拟账号登陆验证,可以看到可以成功使用tom账号登陆ftp并且上传文件,文件位于vftpuser家目录/var/ftp/vuser下
[iyunv@ha1 pam.# !ftpftp 192.168.188.128Connected to 192.168.188.128.220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (192.168.188.128:root): tom331 Please specify the password.Password:230 Login successful. Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 "/"ftp> lcd /etc/Local directory now /etcftp> put issuelocal: issue remote: issue227 Entering Passive Mode (192,168,188,128,231,93)150 Ok to send data.226 File receive OK.47 bytes sent in 0.0045 seconds (10 Kbytes/s)ftp> bye221 Goodbye.[iyunv@ha1 pam.# ls /var/ftp/vuser/issue
通过MySQL数据库服务器提供口令数据
1、安装mysql
yum –y install mysql-server mysql-devel
2、编译安装pam-mysql

下载地址:http://nchc.dl.sourceforge.net/p ... mysql-0.7RC1.tar.gz
下载完解压,编译安装,configure 只要指定一下—with-mysql即可,
[iyunv@ha1 ~# tar xf pam_mysql-0.7RC1.tar.gz [iyunv@ha1 ~# cd pam_mysql-0.7RC1[iyunv@ha1 pam_mysql-0.# lsacinclude.m4  config.status  install-sh   mkinstalldirs      pkg.m4aclocal.m4    config.sub     libtool      NEWS               READMEChangeLog     configure      ltmain.sh    pam_mysql.c        stamp-hconfig.guess  configure.in   Makefile     pam_mysql.la       stamp-h.inconfig.h      COPYING        Makefile.am  pam_mysql.loconfig.h.in   CREDITS        Makefile.in  pam_mysql.specconfig.log    INSTALL        missing      pam_mysql.spec.in[iyunv@ha1 pam_mysql-0.# ./configure --with-mysql=/usr

[iyunv@ha1 pam_mysql-0.7RC1]# make && make install
3、创建用户口令数据库
创建一个用户文件 vim /etc/vsftpd/vuser (字段之间用Tab键隔开,由于我的表有个id字段,所以第一个字段直接加个Tab)
tom      tom
jerry     jerry
mysql> CREATE DATABASE vsftpd;    //创建数据库Query OK, 1 row affected (0.03 sec)mysql> USE vsftpd;    //切到数据库vsftpdDatabase changedmysql> CREATE TABLE vuser    //创建用户表    -> (id SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> name CHAR(20) BINARY NOT NULL,    -> password CHAR(48) BINARY NOT NULL);    Query OK, 0 rows affected (0.10 sec)mysql> DESC vuser; //查看表结构+----------+-------------+------+-----+---------+----------------+| Field    | Type        | Null | Key | Default | Extra          |+----------+-------------+------+-----+---------+----------------+| id       | smallint(6) | NO   | PRI | NULL    | auto_increment | | name     | char(20)    | NO   |     | NULL    |                | | password | char(48)    | NO   |     | NULL    |                | +----------+-------------+------+-----+---------+----------------+3 rows in set (0.04 sec)mysql> LOAD DATA LOCAL INFILE "/etc/vsftpd/vuser" INTO TABLE vuser;    //可以直接从文本文件中批量导入用户Query OK, 4 rows affected, 12 warnings (0.04 sec)Records: 4  Deleted: 0  Skipped: 0  Warnings: 8mysql> INSERT INTO vuser (name,password) VALUES ('bob',password('bob')),('tina','tina'); //当然也可以直接批量插入用户数据,这里我一个使用了mysql的password函数,一个没有使用,因为pam_mysql和mysql使用的password函数可能不一样,会导致无法认证,下面会分别测试一下Query OK, 2 rows affected (0.03 sec)Records: 2  Duplicates: 0  Warnings: 0mysql> GRANT SELECT ON vsftpd.* TO vftpuser@localhost IDENTIFIED BY 'vftpuser';Query OK, 0 rows affected (0.10 sec)mysql> GRANT SELECT ON vsftpd.* TO vftpuser@127.0.0.1 IDENTIFIED BY 'vftpuser'; //这两行给予vftpuser用户vsftpd数据库所有表查询权限Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;    //刷新权限信息使权限生效Query OK, 0 rows affected (0.04 sec)


我们用vftpuser登陆mysql验证一下是否具有查询权限
[iyunv@ha1 ~# mysql -u vftpuser -pEnter password: Welcome to the MySQL monitor.  Commands end with ; or g.Your MySQL connection id is 7Server version: 5.0.95 Source distributionCopyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.mysql> SHOW DATABASES;+--------------------+| Database           |+--------------------+| information_schema | | test               | | vsftpd             | +--------------------+3 rows in set (0.00 sec)mysql> USE vsftpd;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> SHOW TABLES;+------------------+| Tables_in_vsftpd |+------------------+| vuser            | +------------------+1 row in set (0.00 sec)mysql> SELECT * FROM vuser;+----+-------+------------------+| id | name  | password         |+----+-------+------------------+|  1 | tom   | tom              | |  2 | jerry | jerry            ||  3 | tina  | tina             | |  4 | bob   | 7d67547927a4589e |   +----+-------+------------------+4 rows in set (0.00 sec)

4、为mysql创建一个pam配置文件
[iyunv@ha1 pam.d]# cd /etc/pam.d
[iyunv@ha1 pam.d]# vim vsftpd.mysql
auth required /usr/lib/security/pam_mysql.so user=vftpuser passwd=vftpuser host=localhost db=vsftpd table=vuser usercolumn=name passwordcolumn=password crypt=0
account required /usr/lib/security/pam_mysql.so user=vftpuser passwd=vftpuser host=localhost db=vsftpd table=vuser usercolumn=name passwordcolumn=password ctypt=0

5、创建虚拟用户映射的系统用户,指定其家目录,不需要登陆权限及密码
[iyunv@ha1 pam.d]# useradd -d /var/ftp/vuser -s /sbin/nologin vftpuser
[iyunv@ha1 pam.d]# ll -d /var/ftp/vuser/
drwx------ 3 vftpuser vftpuser 4096 Oct 29 13:55 /var/ftp/vuser/
6、修改vsftpd配置文件,支持通过mysql认证
[iyunv@ha1 pam.d]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vftpuser
pam_service_name=vsftpd.mysql
anon_world_readable_only=NO
用windows客户端登陆验证,需要注意的是虚拟用户默认使用的是匿名用户的权限,配置文件要加上一句anon_world_readable_only=NO,不然的话ls命令结果列不出来。
1612050_1383100827pCEC.png



虚拟用户高级设置
虚拟用户默认使用的匿名用户的权限,当然vsftpd还支持继承系统用户的权限:

virtual_use_local_privs参数
当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。
当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,
anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。
此外,如果有需要,我们还可以为我们的虚拟用户分别定义权限:
此时只要在vsftpd.conf加上一行
user_config_dir=/etc/vsftpd/vsftpd.conf
然后创建vsftpd.conf目录,在些目录下分别创建与虚拟用户同名的文件,里面写上相应的权限设置就可以啦,更多的功能小伙伴根据需要自由发挥啦。


运维网声明 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-10161-1-1.html 上篇帖子: rhel6下搭建FTP文件传输服务 下篇帖子: CentOS配置vsftpd Linux 用户

尚未签到

发表于 2013-10-31 22:47:54 | 显示全部楼层
月经不仅仅是女人的痛苦,也是男人的痛苦。

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

尚未签到

发表于 2013-11-1 13:31:10 | 显示全部楼层
找到好贴不容易,我顶你了,谢了

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

尚未签到

发表于 2013-11-1 19:02:28 | 显示全部楼层
丑,但是丑的特别,也就是特别的丑!

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

尚未签到

发表于 2013-11-1 20:23:57 | 显示全部楼层
不在放荡中变坏,就在沉默中变态!

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

尚未签到

发表于 2013-11-2 15:47:43 | 显示全部楼层
我抢、我抢、我抢沙发~

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

尚未签到

发表于 2013-11-2 19:35:43 | 显示全部楼层
如果回帖是一种美德,那我早就成为圣人了!

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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