概述:
所谓虚拟用户,就是指客户端登录时所使用的
FTP
用户名和密码在系统里并不真实存在;实际上每个虚拟用户是通过一个真实的本地用户来登录
FTP
服务器的。这样做可以有效的控制服务器的安全,因为用户并不真实存在,所以该用户不能远程登录,也不能从物理上登录该系统,从而达到了保护服务器的目的。
软件来源:
[url]http://vsftpd.beasts.org[/url]
软件版本:
vsftpd- 2.0.5 .tar.gz
操作系统:
RedHat Enterprise Linux AS 3
1.vsftpd
软件的安装
# tar �Czxvf
vsftpd- 2.0.5 .tar.gz //
解压软件包
# cd
vsftpd- 2.0.5 //
进入解压后的目录
# make && make install //
编译并安装
# cp vsftpd.conf /etc/ //
拷贝主配置文件到
/etc
目录下
# chkconfig vsftpd off //
关闭进程守护模式
2
.添加一个本地用户,并且禁止其
SSH
方式登录
# useradd -s /sbin/nologin wjc
3
.编辑
vsftpd
主配置文件
# vi /etc/vsftpd/vsftpd.conf
local_enable=YES //
打开本地用户
local_umask=022 //
本地用户创建文件夹和上传文件的权限,实际值
=777-umask
connect_from_port_20=YES //
连接端口为
20
max_per_ip=4 //
每个
IP
最多连接
4
个客户端
max_clients=200 //FTP
最多支持
200
个用户
listen=YES //
打开监听模式,否则需要用守护模式启动服务
guest_enable=YES //
开启虚拟用户访问功能
guest_username=wjc //
虚拟用户实际用
wjc
用户来登录
pam_service_name=ftp.vu //
密码验证方式
user_config_dir=/etc/vsftpd_user_conf //
虚拟用户的配置文件所在的目录
注:
,因为主配置文件是被先读的,然后再读用户的配置文件。所以
在主配置文件中给的权限越低,在后面用户管理的时候对用户的权限划分的空间就越大
4
.编辑验证方式文件
# vi /etc/pam.d/ftp.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
5
.编辑虚拟用户和密码
# vi /tmp/login.txt
test1 //
用户名
test1 //
密码
test2
test2
6
.虚拟用户的权限控制
# mkdir /etc/vsftpd_user_conf
在
/etc/vsftpd_user_conf
目录下用虚拟用户的登录名来命名其配置文件
给用户
test1
添加配置文件
# vi /etc/vsftpd_user_conf/test1
local_root=/var/ftpvu/testftp //
限制虚拟用户登录的主目录
anon_world_readable_only=no //
准许虚拟用户可以浏览
write_enable=yes //
开放写的权限
anon_upload_enable=yes //
开放上传权限
anon_mkdir_write_enable=yes //
开放创建目录的权限
anon_other_write_enable=yes //
其他写权限,如:重命名
同样你可以创建
test2
文件,给
test2
用户创建不同的权限,以达到控制虚拟用户不同的访问权限的目的
7
.建立访问者的口令库文件
,
然后修改其权限
# db_load -T -t hash -f /tmp/login.txt /etc/vsftpd_login.db
# chmod 600 /etc/vsftpd_login.db
8
.开启
FTP
服务
# /usr/local/sbin/vsftpd &
9.
验证服务是否开启
//
查看进程
# ps -x | grep vsftpd
//
查看端口
# netstat �Ctln
10.
关闭
FTP
服务
# ps �Cx | grep vsftpd
# kill -9 PID //-9
这个参数为强制,可不加;
PID
为进程号,可以用
ps
来查看
目前没有更好的办法来停止
FTP
服务,所以只能杀进程来关闭了
11.
可能出现的问题
500 OOPS: could not bind listening IPv4 socket
有可能
FTP
服务器是运行的
;
也有可能是因为没有关闭守护状态