vsftp虚拟用户形式的实现

上一篇 / 下一篇  2008-11-04 10:37:29

1. 编译安装

在make之前编辑 builddefs.h 文件

# vi builddefs.h
将undef都改为define,支持tcp_wrappers,支持PAM认证方式,支持SSL。文件内容如下: 
#ifndef VSF_BUILDDEFS_H 
#define VSF_BUILDDEFS_H 
#define VSF_BUILD_TCPWRAPPERS 
#undef VSF_BUILD_PAM 
#define VSF_BUILD_SSL 
#endif /* VSF_BUILDDEFS_H */ 

2. 虚拟用户形式的实现

2.1 使用pam认证的方式:

2.1.1 用DB存储用户名和密码,查看系统是否有相应软件包:

# rpm –qa | grep db4
db4-devel-4.2.52-7.1
db4-4.2.52-7.1
db4-utils-4.2.52-7.1 

2.1.2 建立一个文件,单行为用户名,双行为密码,例如
# vi /etc/vsftpd_users
user1
12345
user2
12345

2.1.3 利用上一步建立的文件建立数据库文件并设置文件属性 

# db_load -T -t hash -f /etc/vsftpd_users /etc/vsftpd_login.db
# chmod 600 /etc/vsftpd_login.db 

2.1.4 建立pam认证文件/etc/pam.d/ftp(文件名必须为ftp)
# vi /etc/pam.d/ftp
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login 
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login 

2.1.5 创建一个用户ftp,在2.1.2中建立的虚拟用户将利用用户ftp的身份登录到其主目录(为实现这一目的需要在修改vsftpd配置文件中的guest_username指令),并为安全起见修改其主目录的属主和权限。

# useradd -d /var/ftp -s /sbin/nologin ftp
# chown root:root /var/ftp
# chmod og-w /var/ftp

2.1.6 建立每个用户的根目录、配置文件的目录和配置文件,目的:使user1用户的根目录为/var/ftp/user1,并且可以下载、上传、修改 /var/ftp/user1里的文件,而user2用户的根目录为/var/ftp/user2,并且只能下载/var/ftp/user2里面的文件。

# mkdir /var/vsftpd/user1 /var/vsftpd/user2
# mkdir /etc/vsftpd_user_conf 

# vi /etc/vsftpd_user_conf/user1
user1文件内容如下:
local_root=/var/ftp/user1 
write_enable=YES 
anon_world_readable_only=NO 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES 
anon_other_write_enable=YES 

# vi /etc/vsftpd_user_conf/user2
user2文件内容如下:
local_root=/var/ftp/user2 
write_enable=NO
anon_world_readable_only=NO 
anon_upload_enable=NO 
anon_mkdir_write_enable=NO 
anon_other_write_enable=NO
设置目录权限:
# chown ftp:ftp /var/ftp/user1 /var/ftp/user2
# chmod 700 /var/ftp/user1 /var/ftp/user2

2.1.7 编写vsftpd配置文件

listen=YES //使用standalone启动vsftpd
listen_port=21 
max_clients=100 //可接受的最大连接数
max_per_ip=5 //每个IP最大的连接数
local_max_rate=5120000 //本地用户的传输比率(b/s)
tcp_wrappers=YES //支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny) 

anonymous_enable=NO //禁用匿名账户
local_enable=YES //PAM方式此处必须为YES
write_enable=NO //全局控制不可以上传
anon_upload_enable=NO //匿名用户不可以上传
anon_mkdir_write_enable=NO //匿名用户不可以建目录
anon_other_write_enable=NO //匿名用户不可以修改
chroot_local_user=YES //不充许用户更改根目录

guest_enable=YES 
guest_username=ftp//这两行的意思是采用虚拟用户形式
virtual_use_local_privs=YES //虚拟用户和本地用户权限相同
user_config_dir=/etc/vsftpd_user_conf//定义虚拟用户配置文件目录

pasv_enable=YES //建立资料联机采用passiv方式 
pasv_min_port=30000 //建立资料联机所可以使用port 范围的上界,0表示任意。默认值为0。 
pasv_max_port=30999 //建立资料联机所可以使用port 范围的下界,0表示任意。默认值为0。 

xferlog_enable=YES //开启日志记录
xferlog_file=/var/log/vsftpd.log //日志存放文件位置

idle_session_timeout=600 //空闲连接超时
data_connection_timeout=120 //数据传输超时
accept_timeout=60 //PAVS请求超时
connect_timeout=60 // PROT模式连接超时

2.1.8 启动vsftpd服务
# /usr/local/sbin/vsftpd /etc/vsftpd.conf &


相关阅读:

TAG: vsftp

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar