rhel5.5安装vsftpd并配置虚拟用户及开放防火墙和selinux

本文详细介绍如何在RHEL5系统上配置vsftpd搭建FTP服务器,包括安装配置过程、虚拟用户设置、防火墙配置等关键步骤,并提供常见问题解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,下载并安装

1, 至rpm.pbone.net或rpmfind.net搜索并下载: vsftpd-2.2.2-2.el5.i386.rpm
2, 安装
# rpm -ivh vsftpd-2.2.2-2.el5.i386.rpm
3, 备份配置文件:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
4, vsftpd文件说明

/etc/vsftpd/vsftpd.conf     主配置文件
/usr/sbin/vsftpd            Vsftpd的主程序
/etc/rc.d/init.d/vsftpd     启动脚本
/etc/pam.d/vsftpd           PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)
/etc/vsftpd/ftpusers        禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下)
/etc/vsftpd/user_list       禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4中此文件在/etc/目录下)
/var/ftp                    匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录
/var/ftp/pub                匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)
/etc/logrotate.d/vsftpd.log 日志文件

二, 安装db4包,使能db_load

# yum install db4.i386
# yum install db4-utils.i386

三, 关闭防火墙

# service iptables stop

四、关闭SELinux

方法有多个

1、暂时关闭
# setenforce 0 (关闭)
# setenforce 1 (启用)
# getenforce   (查看状态)

2、编辑配置文件
# vi /etc/selinux/config
将SELINUX=enforcing改为:SELINUX=disabled

五, 配置匿名用户访问

1, vsftpd安装后,其配置文件所在目录为:/etc/vsftpd/;匿名用户的主目录为:/var/ftp

2, 配置vsftpd.conf主配置文件(服务器配置支持上传)

# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES        (允许匿名用户访问)
anon_upload_enable=YES      (允许匿名用户上传文件)
anon_mkdir_write_enable=YES (允许匿名用户创建目录)

3, 创建上传目录及配置目录权限(注意:匿名用户的主目录/var/ftp权限是755,这个权限不能随意改变,否则客户端无法连接)

# mkdir /var/ftp/homework/
# chown ftp /var/ftp/homework/
# ls -Zd /var/ftp/homework/             (查看上下文)
drwxrwxr-x  ftp ftp user_u:object_r:public_content_t /var/ftp/homework/
# chcon -t public_content_rw_t /var/ftp/homework/   (修改上下文,使可写)
# ls -Zd /var/ftp/homework/             (查看确认上下文)
drwxrwxr-x  ftp ftp user_u:object_r:public_content_rw_t /var/ftp/homework/

(若未关闭SELinux,还需以下步骤)
# getsebool -a | grep ftp               (查找与ftp相关的 SELinux bool值)
# setsebool -P allow_ftpd_anon_write 1  (设置SELinux bool值, 允许ftpd写, -P选项表示写入配置文件并永久生效)

4, 重启服务

# service vsftpd restart

5, 客户端连接测试

(1) 客户端匿名用户可从pub下载文件
(2) 客户端匿名用户上传文件至homework, 上传文件的默认权限属性为600(配置文件中anon_umask=077),无法下载、删除或覆盖的。

六, 配置虚拟用户访问

1, 建立虚拟用户口令库文件, 文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令。

# vi /etc/vsftpd/vuser.txt
teacher      (奇数行设置虚拟用户名)
123456      (偶数行设置用户口令)
student
123456

2, 生成vsftpd 的认证文件

# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db   (生成认证文件)
# file  /etc/vsftpd/vuser.db         (查看文件类型)
/etc/vsftpd/vuser.db:Berkeley DB (Hash,version  8 , native byte-order)
# chmod 600 /etc/vsftpd/vuser.db     (生成的认证文件的权限应设置为只对root用户可读可写)

3, 建立虚拟用户所需的PAM配置文件

# 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
# service 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

九,参考http://bbs.51cto.com/thread-717151-1.html 《RHEL5中配置vsftpd搭建FTP服务器》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lazyclough

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值