Redhat AS5 or Centos 5 配置自带的vsftp
运行/sbin/chkconfig   vsftpd on    vsftp 自启动
建立ftp目录 ,现在设置为/ftpfile
新建组 groupadd ftpuser
新建用户 useradd -G ftpuser -s /sbin/nologin -d /ftpfile user01
user01是用户名
chmod 750 /ftpfile
chown user01 /ftpfile
passwd user01
setsebool -P allow_ftpd_anon_write=1
建立目录 mkdir /etc/selinux/POLICYTYPE/contexts/files/
建立文件 vi file_contexts.local
#文件内容如下
/ftpfile(/.*)? system_u:object_r:public_content_rw_t
 
#执行如下命令
chcon -t public_content_rw_t /ftpfile
 
/etc/vsftpd/vsftpd.conf的详细配置见其他
 
#虚拟用户配置
对于用DB库存储用户名及密码的方式来说:
 
(1)查看系统是否有相应软件包
 
# rpm –qa | grep db4
 
db4-devel-4.2.52-7.1
 
db4-4.2.52-7.1
 
db4-utils-4.2.52-7.1
 
如果没有则安装
 db4
 db4 - devel
 db4 - utils
其中db_load安装db4_utils里面
(2)建立一个logins.txt的文件,单行为用户名,双行为密码,例如
 
# vi /home/logins.txt
 
test1
 
12345
 
test2
 
12345
 
 
 
(3)建立数据库文件并设置文件属性
 
# db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db
 
# chmod 600 /etc/vsftpd_login.db
 
(4)建立认证文件
 
# vi /etc/pam.d/ftp 插入如下两行
如果 pam_service_name=vsftpd
则修改  /etc/pam.d/vsftpd
打开ftpvsftpd后,删除所有内容,插入下面两行:
 
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
 
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
 
(5)建立一个虚拟用户
 
useradd -d /home/vsftpd -s /sbin/nologin vsftpd
 
只要更改这个虚拟用户的目录,那么ftp登录之后的目录也就随之更改
  chown  vsftpd.vsftpd /home/vsftpd
 
 
ls -ld /home/vsftpd
 
drwx------ 3 vsftpd vsftpd 1024 Jun 6 22:55 /home/vsftpd/
 
 
 
(6)编写配置文件
 
# vi /etc/vsftpd.conf
 
listen=YES //使用standalone启动vsftpd
 
listen_port=2121
 
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=vsftpd //这两行的意思是采用虚拟用户形式
 
virtual_use_local_privs=YES //虚拟用户和本地用户权限相同
 
user_config_dir=/etc/vsftpd_user_conf //定义虚拟用户配置文件目录
 
 
 
pasv_enable=YES //建立资料联机采用被动方式
 
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模式连接超时
 
 
 
 
 
(7)建立每个用户的根目录、配置文件的目录和配置文件
 
# mkdir /home/vsftpd/test1
 
# mkdir /etc/vsftpd_user_conf
 
# vi /etc/vsftpd_user_conf/test1 文件内容如下
 
local_root=/home/vsftpd/test1
 
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/test2 文件内容如下
 
local_root=/home/vsftpd/test1
 
write_enable=NO
 
anon_world_readable_only=NO
 
anon_upload_enable=NO
 
anon_mkdir_write_enable=NO
 
anon_other_write_enable=NO
 
 
 
 
# chmod 700 /home/vsftpd/test1
 
# chown vsftpd.vsftpd /home/vsftpd/test1
 
 
这样,test1用户可以下载、上传、修改 /home/vsftpd/test1里的文件,而test2用户只能下载/home/vsftpd/test1里面的文件。