阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS6.3下vsftpd通过pam认证实现虚拟用户文件共享

217次阅读
没有评论

共计 4259 个字符,预计需要花费 11 分钟才能阅读完成。

FTP 的全称是 File Transfer Protocol(文件传输协议), 就是专门用来传输文件的协议. 它工作在 OSI 模型的第七层, 即是应用层, 使用 TCP 传输而不是 UDP. 这样 FTP 客户端和服务器建立连接前就要经过一个 ” 三次握手 ” 的过程.FTP 服务还有一个非常重要的特点是它可以独立于平台。

Linux 下实现 FTP 服务的软件很多, 最常见的有 vsftpd,Wu-ftpd 和 Proftp 等。Red Hat Enterprise Linux 中默认安装的是 vsftpd。

通常, 访问 FTP 服务器时需要经过验证, 只有经过了 FTP 服务器的相关验证, 用户才能访问和传输文件.vsftpd 提供了 3 种 ftp 登录形式:

    (1)anonymous(匿名帐号)

使用 anonymous 是应用广泛的一种 FTP 服务器. 如果用户在 FTP 服务器上没有帐号, 那么用户可以以 anonymous 为用户名, 以自己的电子邮件地址为密码进行登录. 当匿名用户登录 FTP 服务器后, 其登录目录为匿名 FTP 服务器的根目录 /var/ftp. 为了减轻 FTP 服务器的负载, 一般情况下, 应关闭匿名帐号的上传功能。

    (2)real(真实帐号)

real 也称为本地帐号, 就是以真实的用户名和密码进行登录, 但前提条件是用户在 FTP 服务器上拥有自己的帐号. 用真实帐号登录后, 其登录的目录为用户自己的目录, 该目录在系统建立帐号时系统就自动创建。

    (3)guest(虚拟帐号)

如果用户在 FTP 服务器上拥有帐号, 但此帐号只能用于文件传输服务, 那么该帐号就是 guest,guest 是真实帐号的一种形式, 它们的不同之处在于,geust 登录 FTP 服务器后, 不能访问除宿主目录以外的内容。

下面就对其详细介绍。

接下来我们开始实现 vsftpd 的虚拟用户的功能:

1、yum 安装 vsftpd 程序:

[root@master ~]# yum install vsftpd -y

2、修改配置文件

备份修改配置文件

[root@master ~]# cd /etc/vsftpd
[root@master vsftpd]# ll
total 28
-rw——-. 1 root root  125 Oct 18 07:54 ftpusers
-rw——-. 1 root root  361 Oct 18 07:54 user_list
-rw——-. 1 root root 4599 Oct 18 07:54 vsftpd.conf
-rw——-. 1 root root 4599 Jan  6 10:53 vsftpd.conf.bak
-rwxr–r–. 1 root root  338 Oct 18 07:54 vsftpd_conf_migrate.sh
[root@master vsftpd]# cp vsftpd.conf{,.bak}
[root@master vsftpd]# cat vsftpd.conf | grep “^[^#]”
anonymous_enable=NO  // 是否允许 anonymous 登录 FTP 服务器, 默认是允许的。
local_enable=YES  // 是否允许本地用户登录 FTP 服务器, 默认是允许
write_enable=YES  // 是否允许用户具有在 FTP 服务器文件中执行写的权限, 默认是允许
anon_umask=022  // 设置虚拟用户的文件生成掩码为 022, 默认是 077
dirmessage_enable=YES  // 激活目录信息, 当远程用户更改目录时, 将出现提示信息
xferlog_enable=YES  // 启用上传和下载日志功能
connect_from_port_20=YES  // 启用 FTP 数据端口的连接请求
xferlog_file=/var/log/vsftpd.log  // 设置日志文件的文件名和存储路径, 这是默认的
xferlog_std_format=YES  // 是否使用标准的 ftpd xferlog 日志文件格式
listen=YES  // 使 vsftpd 处于独立启动模式
user_config_dir=/etc/vsftpd/vuser_dir  // 使用虚拟用户配置文件的目录
pam_service_name=/etc/pam.d/ftp.vu  // 设置 PAM 认证服务的配置文件名称, 该文件存放在 /etc/pam.d/ 目录下.
userlist_enable=NO  // 用户列表中的用户是否允许登录 FTP 服务器, 默认是不允许
chroot_list_enable=YES  // 如果希望用户登录后不能切换到自己目录以外的其它目录, 需要设置该项
tcp_wrappers=YES  // 使用 tcp_wrqppers 作为主机访问控制方式
guest_enable=YES  // 是否启用来宾用户(也就是启用虚拟用户)
guest_username=root  // 如果启用了虚拟用户后上传文件修改文件的用户名
chown_uploads=YES  // 是否启用上传文件后修改为指定的属主
chown_username=root  // 是否启用上传文件后修改为指定的属主用户

3、在 /etc/vsftpd/ 下创建两个目录

vuser_db  #后续存放虚拟用户的配置文件
vuser_dir  #存放虚拟用户的认证文件
[root@master vsftpd]# mkdir vuser_db vuser_dir
[root@master vsftpd]# cd vuser_db/
[root@master vuser_db]# ll 
total 20
-rw-r–r–. 1 root root    69 Jan  5 11:25 login_vuser
-rw-r–r–. 1 root root 12288 Jan  5 11:26 vuser.db
[root@master vuser_db]# vim login_vuser
// 以下是 login_vuser 虚拟用户的帐号密码格式,奇数行为用户名,双数行为密码
user003
20150105
user004
20150106
user005
20150107
// 生成数据库文件
// 选项 - T 允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的,为了让 Vsftpd 这个应用程序能够通过文本来载入用户数据,必须要使用这个选项。
如果指定了选项 -T,那么一定要追跟子选项 -t
子选项 -t,追加在在 - T 选项后,用来指定转译载入的数据库类型。扩展介绍下,- t 可以指定的数据类型有 Btree、Hash、Queue 和 Recon 数据库。
-f:参数后面接包含用户名和密码的文本文件,文件的内容是:奇数行用户名、偶数行密码
[root@master vuser_db]# db_load -T -t hash -f /etc/vsftpd/vuser_db/login_vuser /etc/vsftpd/vuser_db/vuser.db

4、更改 pam 认证模块

[root@master vuser_db]# cd /etc/pam.d/
[root@master vuser_db]# vim ftp.vu  // 这个文件名要与主配置文件中的 pam_service_name 指定的一致
// 最后面的 vuser 就是 vuser.db,但是这里的后缀不是需要写的
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_db/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_db/vuser

5、为虚拟用户创建对应的文件

[root@master vsftpd]# cd /etc/vsftpd/vuser_dir/
[root@master vuser_dir]# ll  //login_vuser 中有多少个帐号就创建多少个虚拟用户文件
total 6
-rw-r–r–. 1 root root 177 Jan  5 17:03 user003
-rw-r–r–. 1 root root 177 Jan  5 17:09 user004
-rw-r–r–. 1 root root 177 Jan  5 17:19 user005
[root@master vuser_dir]# vim user003
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/www/test  // 指定虚拟用户有权限登录到哪个目录
chown_upload_mode=0777  // 虚拟用户上传文件的权限设置

到这里基本上算是配置完成了,可以启动 vsftpd 服务了:

root@master vsftpd]# service vsftpd start

然后可以直接在 windows 下登录测试一下看了:

CentOS6.3 下 vsftpd 通过 pam 认证实现虚拟用户文件共享CentOS6.3 下 vsftpd 通过 pam 认证实现虚拟用户文件共享

OK,到这里就完全实现了 pam 认证的 vsftpd 虚拟用户的配置了,可以实现虚拟用户登录 FTP 功能了。

玩转 vsftpd 服务器的四大高级配置:http://www.linuxidc.com/Linux/2013-09/90565.htm

vsFTPd 配置教程:http://www.linuxidc.com/Linux/2013-09/90562.htm

Ubuntu 实用简单的 FTP 架设 http://www.linuxidc.com/Linux/2012-02/55346.htm

Ubuntu 上架设 FTP 服务器和 Apache 服务器 http://www.linuxidc.com/Linux/2011-04/35295.htm

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

RHEL6 平台下 SeLinux 和 vsftpd 的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm

Linux 系统 vsftpd 源码安装 http://www.linuxidc.com/Linux/2013-03/81475.htm

openSUSE 13.2/13.1 下安装配置 FTP 服务器 vsftpd  http://www.linuxidc.com/Linux/2014-12/110070.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计4259字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中