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

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版|50资产|一周时长
简介:

  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程序:

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

  

    2、修改配置文件

    备份修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[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/下创建两个目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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认证模块

1
2
3
4
5
[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、为虚拟用户创建对应的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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服务了:

1
root@master vsftpd] # service vsftpd start


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

wKioL1SrlKfAgnH7AAGQnuIbTMM983.jpg

wKiom1SrlAaCcsQuAAFRvBXhLIg833.jpg


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










本文转自 wei0164 51CTO博客,原文链接:http://blog.51cto.com/tanxw/1599747,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
网络协议 Linux Go
Centos7CA认证中心
CA是Certificate Authority的缩写,负责发放、更新、撤销和验证数字证书,用于身份认证和数据不可否认性,常通过443端口。配置CA涉及修改openssl.cnf,创建并设置认证中心,删除并新建index文件。客户端则需生成密钥和CSR,将CSR发送至CA,CA签名后回传证书。最终,客户端可查看收到的证书。
126 0
|
6月前
|
网络协议 Unix Linux
Centos下nfs+rpcbind实现服务器之间的文件共享
Centos下nfs+rpcbind实现服务器之间的文件共享
269 0
|
网络协议 Linux 文件存储
【Linux系统】Centos7系统下配置samba共享
【Linux系统】Centos7系统下配置samba共享
704 1
|
运维 Linux
【Linux网络服务】Centos7搭建nfs文件共享服务器
【Linux网络服务】Centos7搭建nfs文件共享服务器
【Linux网络服务】Centos7搭建nfs文件共享服务器
|
存储 Apache
Centos7.7下建立无共享存储的WEB集群(pcs+pacemaker+corosync)
Centos7.7下建立无共享存储的WEB集群(pcs+pacemaker+corosync)
74 0
|
安全 Linux 数据安全/隐私保护
谁再说不会搭建vsftpd,就把这个脚本给他扔过去!——CentOS7下一键脚本搭建虚拟用户模式的vsftpd服务器
谁再说不会搭建vsftpd,就把这个脚本给他扔过去!——CentOS7下一键脚本搭建虚拟用户模式的vsftpd服务器
423 0
谁再说不会搭建vsftpd,就把这个脚本给他扔过去!——CentOS7下一键脚本搭建虚拟用户模式的vsftpd服务器
|
存储 安全 Linux
CentOS 6 配置FTP虚拟用户
CentOS 6 配置FTP虚拟用户
306 0
|
存储 Apache
Centos7.7下建立无共享存储的WEB集群(pcs+pacemaker+corosync)
本篇内容记录了Centos7.7下建立无共享存储的WEB集群的相关操作。
238 0
|
机器学习/深度学习 网络协议 安全
|
Web App开发 监控 关系型数据库
CentOS安装Awstats分析nginx日志并通过htpasswd认证访问
这篇笔记记录了在CentOS7.6中安装Awstats7.7,使用Awstats分析nginx日志,以及使用php+nginx搭建web管理界面,通过htpasswd认证访问的过程
3805 0