Linux (Red Hat 9) 的 vsftpd 的配置与使用 (db格式的虚拟用户)
今天终于把 vsftpd 的虚拟用户配置完毕了,可以使用,现记录在此
- Red Hat 9 服务器模式默认没有装vsftpd的,避免麻烦,建议手动安装
- Red Hat 9 服务器模式默认没有装开发工具(中间包含db工具,其中也包含了gcc等工具),建议手动安装
- 如果未安装,请在此 http://rpmfind.net/linux/RPM/index.html 搜索 Red Hat 9 的相应RPM,进行安装
#wget http://wupei.j2megame.org/1.txt 利用该命令在linux上下载文件
#wget -b 后台下载,记录文件写在当前目录下"wget-log"文件中 - 没有db_load命令,缺少相应文件: db4-java-4.0.14-20.i386.rpm 和 db4-utils-4.0.14-20.i386.rpm
- 查找当前安装: #rpm –qa | grep db4 安装: #rpm -ivh *.rpm
卸载: #rpm -e packgename
配置过程:
一. 匿名用户登录(上传与下载)
- 查找是否有vsftpd: #rpm -qa vsftpd, 没有就按照上面说的方法进行rpm的安装
- 编辑配置文件: #vi /var/vsftpd/vsftpd.conf (其他Linux可能在 /var/vsftpd.conf)
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO - 启动FTP服务器: #service vsftpd start, 显示OK,代表正常启动
- 使用FTP工具(如flashfxp)匿名用户登录,成功,但只能读取,当前访问的目录 /var/ftp/pub
- 修改目录权限: #chmod 777 /var/ftp/pub
- 重新启动FTP服务器: #service vsftpd restart 显示OK,重启成功
- 这是匿名用户登录,可以在 当前目录 进行任何操作,但是子目录仍然不能上传,因为权限不够…
二. 虚拟用户配置
- 查找是否支持db4: #rpm -qa|grep db4 如果没有,按本文开头的方法进行安装…
(重装系统?好主意.一开始我也是这么干的…半个小时而已,但是使用一下linux的下载,安装,卸载RPM命令也是很必要的) - 添加虚拟用户名和密码: #vi /etc/vsftpd/vsftpd_users.txt (格式:一行用户名一行密码)
user1
user1password
user2
user2password - 生成DB文件:
#db_load -T -t hash -f /etc/vsftpd/vsftpd_users.txt /etc/vsftpd/vsftpd_login.db - 修改DB文件权限,只允许root可读可写: #chmod 600 /etc/vsftpd/vsftpd_login.db
- 生成跟虚拟用户database相关联的PAM文件:
#vi /etc/pam.d/vsftpd.pam
内容:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login - 建立虚拟用户所映射的系统帐户,定位虚拟用户所在的目录
#useradd -d /var/ftp/myftpvirtual -s /sbin/nologin myftpvirtual
(-s /sbin/nologin 应该是不允许直接登录)(/var/ftp/myftpvirtual目录之前是不存在的) 拷贝hosts #cp /etc/hosts /var/ftp/myftpvirtual(经测试,可以不添加…这句干什么用啊?)- 修改配置文件 #vi /etc/vsftpd/vsftpd.conf 添加或修改
#出于安全的角度禁用了匿名用户,启用非匿名用户—就是我们刚才我们创建的虚拟用户“myftpvirtual“
anonymous_enable=NO
local_enable=YES#这些是出于安全的目的,写命令全部被禁用了
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO#这个是确信能将虚拟用户限制在我们上述的/var/ftp/myftpvirtual目录中
chroot_local_user=YES#这个guest_enable是非常重要的—它用来激活虚拟用户! guest_username
是将所有虚拟用户映射成我们先前设置的真实用户"myftpvirtual"。这也决定了虚拟用户在文件系统中的位置,也就是
"myftpvirtual"的主目录 /var/ftp/myftpvirtual。
guest_enable=YES
guest_username=virtual#这个将vsftpd 设置成独立模式也就是不通过 inetd或者xinetd来运行。这意味着你直接运行vsftpd的可执行命令就可以启动它了。
listen=YES#支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)
tcp_wrappers=YES#启用per-user 配置,对不同的虚拟用户设置不同的权限
user_config_dir=/etc/vsftpd/vsftpd_user_conf#指定pam_service_name
pam_service_name=vsftpd.pam
userlist_enable=YES
- 对不同虚拟用户进行权限设定
#vi /etc/vsftpd/vsftpd/vsftpd_user_conf/user1 (对应着刚才需的虚拟用户名)
添加:
#用户主目录
local_root = /var/ftp/myftpvirtual
#写权限
write_enable=YES
#上传权限
anon_upload_enable=YES
#重建目录权限
anon_mkdir_write_enable=YES
#删除,改名,移动等权限
anon_other_write_enable=YES
#是否仅仅读取
anon_world_readable_only=NO
- 完成user1, 添加user2的权限文件,OK
- 重启vsftpd #service vsftpd restart 显示OK,成功
- FTP,用户名,密码,登录,成功,操作
- 设置 vsftpd 服务 开机自启动
# vi /etc/rc.d/rc.local
添加:
/etc/init.d/vsftpd start - 完成
不容易…完成…呵呵,试试吧
ps:
- 每次添加完新用户后,就必须执行如下命令,重新Hash用户名文件才能起作用 #db_load -T -t hash -f
- 更改一个或多个用户的权限和密码不需要执行任何命令
- 行的值都不要有空格,否则登录时会出现错误,举个例子,假如我在write_enable=YES后多了个空格,那我登录时就出现如下错误: 500 OOPS: bad bool value in config file for: write_enable
- download_enable = NO 是非法语句,删除 (Red Hat 9)
Trackback from your site.