RHEL5.5安装vsftpd并配置虚拟用户及开放防火墙和(2)

# vi /etc/pam.d/vsftpd
auth    required        /lib/security/pam_userdb.so     db=/etc/vsftpd/vuser    (注:无须后缀.db)
account required        /lib/security/pam_userdb.so     db=/etc/vsftpd/vuser

4, 建立vsftpd虚拟用户所需的系统用户账号并设置相应的权限, 所有虚拟用户账号登录后都将在/var/ftp目录

# useradd -s /sbin/nologin -d /var/ftp/ vuser
# chmod u-w /var/ftp/

5, 设置vsftpd.conf主配置文件

# vi /etc/vsftpd/vsftpd.conf

local_enable=YES
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd (vsftpd意指:/etc/pam.d/目录下的vsftpd文件)

(以下为可选项)
local_umask=022         (虚拟用户上传文件的掩码)
anon_umask=077          (匿名用户上传文件的掩码)
chown_uploads=YES       (允许改变上传文件的属主)
chown_username=vuser    (改变上传文件的属主为vuser)

6, 重启vsftpd服务
# service vsftpd restart

7, 测试vsftpd中的虚拟用户账号teacher

#ftp 127.0.0.1
name (localhost:root):teacher
password:
ftp>

8, 对不同的虚拟用户设置不同的权限

(1).设置主配置文件

# mkdir /etc/vsftpd/vuser_conf          (建立用户配置文件的保存目录)
# vi /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vuser_conf  (设置用户配置文件的保存目录)

(2). 为虚拟用户建立单独的配置文件,配置文件名称和用户名相同。用户配置文件中没有的配置项将按照vsftpd.conf配置文件中的内容设置。

# vi /etc/vsftpd/vuser_conf/teacher

anon_world_readable_only=NO   (表示用户可以浏览FTP目录和下载文件)
anon_upload_enable=YES        (表示用户可以上传文件)
anon_mkdir_write_enable=YES   (表示用户具有建立和删除目录的权利)
anon_other_write_enable=YES   (表示用户具有文件改名和删除文件的权限)

(3) 重启服务

# service vsftpd restart


七,配置并启动防火墙

1, 设置被动模式及使用的端口号

# vi /etc/vsftpd/vsftpd.con

pasv_enable=YES
pasv_min_port=65300
pasv_max_port=65360

2, 添加允许的端口

# iptables -I RH-Firewall-1-INPUT -p tcp --dport 21 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT -p tcp --dport 65300:65360 -j ACCEPT
# iptables-save     (保存配置)

3, 重启服务

# service vsftpd restart
# service iptables start
 
八,排错

1, vsftpd: refusing to run with writable root inside chroot()
-> 原因:vsftpd升级了安全性验证, 即如果开启了chroot来控制用户路径,则用户不能再具有根目录的写权限。
-> 解决:# chmod u-w /var/ftp/

2, cannot change directory:/var/ftp
-> 原因:SELinux阻止访问
-> 解决:
# setsebool -P ftpd_disable_trans 1
# service vsftpd restart

3, 上传文件的中文文件名乱码
-> 原因:字符集问题
-> 解决:
(1) # vi /etc/sysconfig/i18n
LANG="zh_CN.GB18030"
(2) 客户端软件设置字体为中文字体,连接字符集为GBxxx或cp936

4, 提示只允许匿名用户登录
-> 解决:在vsftpd.conf中设置
local_enable=YES

更多RedHat相关信息见RedHat 专题页面 ?tid=10

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/21eeb91a71d12167d421fab86a889b9f.html