archlinux TL-WN322G+(2.0) usb无线网卡安装
Python Web Site Process Bus v1.0 - 翻译

搭建 vsftpd 服务(虚拟用户)

TLHL28 posted @ Fri, 10 Sep 2010 17:55:51 +0800 in 随笔 , 2306 readers

环境

Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
 

准备

要使用到以下软件包
db4-4.3.29-10.el5 (默认安装)

db4-devel-4.3.29-10.el5 (默认安装)

vsftpd-2.0.5-16.el5 (默认安装)

db4-utils-4.3.29-10.el5 (需要下载)
 
我们需要db4-utils 来生成数据库文件,安装db4-utils, 执行如下指令
rpm -ivh db4-utils-4.3.29-10.el5.x86_64.rpm
 
 

用户配置

1.用户记录文件
创建一个文件记录用户名和密码. 奇数行为用户名, 偶数行为密码. 如下例
vim /home/loguser
输入以下内容
hopejy

hopejy

test

test
2.生成用户数据库
db_load -T -t hash -f /home/loguser /etc/vsftpd/vsftpd_loggin.db
 
3.创建系统vsftpd用户
创建用户vsftpd 家目录为/home/vsftpd ,不可登录shell. 用户组为ftp
useradd vsftpd -d /home/vsftpd -s /bin/false -g ftp
由于都是由root进行操作, 所以要更改生成的目录的拥有者
chown vsftpd:ftp /home/vsftpd/ -R
创建虚拟用户配置文件及其存放目录
mkdir /etc/vsftpd_user_conf
以hopejy为例, 创建虚拟用户配置文件:
vim /etc/vsftpd_user_conf/hopejy #配置文件名要和用户名一致
输入以下以下内容,给予hopejy所有权限(增,删,上传,下载,修改)
#指定家目录, 文件夹的名字要与用户一致

# 不同用户可创建不同目录,如test 则为   /home/vsftpd/test. **也可以指定为同一目录** 

local_root=/home/vsftpd/hopejy

#放开匿名用户浏览权限

anon_world_readable_only=NO

#开放匿名上传权限

anon_upload_enable=YES

#可创建目录的同时可以在此目录中上传文件

anon_mkdir_write_enable=YES

#匿名帐号可以有删除的权限

anon_other_write_enable=NO
 

vsftpd 配置

1. PAM配置
打开文件 :
vim /etc/pam.d/vsftpd.vu
输入以下内容
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
 
2. vsftpd 配置
打开文件:
vim /etc/vsftpd/vsftpd.conf
配置内容如下:
#独立的vsftpd服务器

listen=YES 

#本地帐户能够登录

local_enable=YES  

#本地用户写权限

write_enable=YES  

#开放上传权限

anon_upload_enable=YES 

#匿名账户可有删除的权限

anon_other_write_enable=YES  

#切换目录时,显示目录下.message内容

dirmessage_enable=YES  

# 记录上传下载记录

xferlog_enable=YES 

#从20端口连接

connect_from_port_20=YES  

#锁定本地用户到家目录

chroot_local_user=YES  

 #如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录

chroot_list_enable=YES 

#列出相关本地用户

chroot_list_file=/etc/vsftpd/chroot_list 

#这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd 不需要file system 的权限时,就会将使用者限制在此数据夹中。默认值为/usr/share/empty

secure_chroot_dir=/var/run/vsftpd 

 #定义PAM 所使用的名称,预设为vsftpd

pam_service_name=vsftpd.vu 

#允许本地用户登录

guest_enable=YES  

 #本地用户名

guest_username=vsftpd 

#虚拟用户配置目录

user_config_dir=/etc/vsftpd_user_conf  


#当virtual_use_local_privs=YES时,假造用户和本地 用户有雷同的权限;

#当virtual_use_local_privs=NO时,假造用户和匿名用户有雷同的权限,默认是NO。

#当virtual_use_local_privs=YES,write_enable=YES时,假造用户具有写权限(上传、下载、删除、重定名)

virtual_use_local_privs=NO

log_ftp_protocol=YES  #记录ftp协议信息
 

SELinux配置

由于SElinux 在linux系统安全机制上又进行了严格的限制.
默认不对ftp服务的权限开发。所以我们必须先开放ftp服务的访问权限. 不然在一切配置完后, 会一直登录失败
开放ftp用户目录的访问权限.
# setsebool -P ftp_home_dir on
 
查看SELinux状态
getenforce
设置SELinux状态: 关闭setenforce.
setenforce 0
查看有关ftp服务操作权限开启情况
getsebool -a | grep ftp
会得出如下结果
allow_ftpd_anon_write --> off

allow_ftpd_full_access --> off

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

allow_tftp_anon_write --> off

ftp_home_dir --> on

ftpd_connect_db --> off

ftpd_disable_trans --> off

ftpd_is_daemon --> on

httpd_enable_ftp_server --> off

tftpd_disable_trans --> off
 

开启vsftpd服务

执行以下指令开启vsftpd
service vsftpd start
或者
/etc/init.d/vsftpd start
测试
登录ftp
ftp localhost
如果无意外,能看到以下信息
Connected to localhost.localdomain.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (localhost:root): hopejy

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> 

参考资料


Login *


loading captcha image...
(type the code from the image)
or Ctrl+Enter