Ftp虚拟用户创建过程

Ftp虚拟用户创建过程

ftp虚拟用户创建过程

需求:
​ 搭建一台ftp服务器,并且使用虚拟用户登录,虚拟用户具有上传、下载、创建、删除、修改等功能。

过程:

1.安装vsftpd

1
2
3
4
5
# rpm -qa vsftpd                       //检测是否安装vsftpd
# yum -y install vsftpd //没有则使用yum方式安装
# chkconfig vsftpd on
# service vsftpd start
# iptables -F

2.创建虚拟用户

ftp服务器虚拟用户的原理是把虚拟用户的权限映射到系统用户上,而虚拟用户权限是由系统用户对目录的控制得到的。

1
2
# useradd weihu -s /sbin/nologin              //创建映射的系统用户weihu
# chmod -R 750 /home/weihu //修改weihu用户家目录的权限

3.修改vsftpd的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# cp /etc/vsftpd/vsftpd.conf{,.bak}
# vi /etc/vsftpd/vsftpd.conf

添加如下内容:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
chroot_local_user=YES
chroot_list_enable=NO
guest_enable=YES
user_config_dir=/etc/vsftpd/config
pam_service_name=vsftpd

其中
pasv_enable=YES 指定开启vsftpd被动模式,在被动模式下只需要vsftpd服务器开启相应端口即可,客户端无需再开启端口。
pasv_min_port=30000 指定被动模式最小端口号。
pasv_max_port=31000 指定被动模式最大端口号。
guest_enable表示是否开启vsftpd虚拟用户的功能,yes表示开启,no表示不开启。
user_config_dir指定每个虚拟用户账号配置目录。
pam_service_name设置PAM使用的名称,该名称就是/etc/pam.d/目录下vsftpd.virtual的文件。
chroot_local_user=YES是否将所有用户锁定在主目录,YES为启用,NO禁用.(包括注释掉也为禁用)。
chroot_list_enable=NO是否启动锁定用户的名单,YES为启用,NO禁用(包括注释掉也为禁用)。
chroot_local_user=YES和chroot_list_enable=NO一起使用表示禁止所有用户切换到上级目录。

4.创建虚拟用户账号的配置目录

1
2
3
4
5
6
7
# mkdir /etc/vsftpd/config

# vim /etc/vsftpd/login.txt

创建存储虚拟用户账号和密码的文件,并且添加如下内容:
weihu
weihu123

其中,第一行表示虚拟用户的用户名,第二行表示虚拟用户的密码,每个一行,可以写多个。
这个文件的虚拟用户和密码的文本文件无法被系统帐号直接调用,所以我们需要使用db_load命令
生成db口令数据库文件,生成命令如下:

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

5.虚拟用户的PAM认证

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

编辑/etc/pam.d/vsftpd文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# vim /etc/pam.d/vsftpd

进入文件后注释掉原来的内容,添加如下内容:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login

auth是指对用户的用户名口令进行验证。
accout是指对用户的帐户有哪些权限哪些限制进行验证。
/lib64/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。
db=/etc/vsftpd/login则指定了验证库函数将到这个指定的数据库中调用数据进行验证。其实该文件指的是/etc/vsftpd/login.db文件。
注意:db=/etc/vsftpd/login格式是这样的,去掉.db后缀。

32位的系统可能使用下面的认证内容
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login

6.创建虚拟用户配置文件

​ PAM配置完毕后,我们现在开始创建虚拟用户与系统用户对应的文件。切换到/etc/vsftpd/config目录下,并创建weihu文件。
注意该文件名称一定要与login.txt中的虚拟用户要对应。比如现在login.txt文件有weihu用户,那么在 /etc/vsftpd/config目录下
创建一个文件名为weihu的文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# cd /etc/vsftpd
# vi config/weihu

添加如下内容:
guest_username=weihu
local_root=/home/weihu
virtual_use_local_privs=YES
anon_umask=133

其中,guest_username=weihu 表示的是设置FTP对应的系统用户为weihu,也可以是其他用户,比如创建名为alice的用户
local_root=/home/weihu 表示使用本地用户登录到ftp时的默认目录
virtual_use_local_privs=YES 虚拟用户和本地用户有相同的权限
anon_umask 表示文件上传的默认掩码。计算方式是777减去anon_umask就是上传文件的权限。在此设置的是133,
也就是说上传后文件的权限是644。即上传的文件对所属用户来说只有读写权限,没有执行权限。

修改完之后,重启vsftpd服务
1
service vsftpd restart