2012年(3)
分类: LINUX
2012-10-26 09:11:53
rhel5中搭建ftp服务器
一、安装vsftpd:使用光盘安装即可。
rpm –Uvh vsftpd*rpm
vsftpd安装完成之后,默认的主配置文件为/etc/vsftpd/vsftpd.conf.下面按自上而下的顺序介绍此文件的参数设定。
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #允许匿名访问,即允许anonymous账号访问ftp服务 local_enable=YES #允许使用本机用户账号登录 write_enable=YES #用户可以读写 local_umask=022 #默认掩码位022,即默认创建的文件权限位755 dirmessage_enable=YES #若目录下存在.message文件,则显示该文件内容 xferlog_enable=YES #默认上传/下载的日志被记录在/var/log/vsftpd.log中 connect_from_port_20=YES #从20端口连接,默认状况下,20为ftp的数据传输端口 xferlog_std_format=YES #使用标准格式登记上传/下载记录 listen=YES #当此项设定为YES的时候,vsftpd运行于standalone模式下。默认为开启。 pam_service_name=vsftpd #列出与vsftpd相关的pam文件 userlist_enable=YES #当此项设定为YES的时候,启动配置文件/etc/vsftpd.user_list。此时有两种情况: ① 此时若没有userlist_deny=NO,则/etc/vsftpd.user_list中的用户不可以访问vsftpd服务器 ② 此时若存在userlist_deny=NO,则仅接受/etc/vsftpd.user_list中存在的用户的登录请求(同时这些用户不存在于/etc/vsftpd.ftpusers中) #当此项设定为NO时,不会启用配置文件/etc/vsftpd.user_list tcp_wrappers=YES #启用tcp wrapper支持 |
二、匿名vsftpd的搭建
匿名vsftpd的搭建非常简单。前面已经介绍了vsftpd的安装,安装后需要启动服务,命令如下:
service vsftpd start
为了使该服务在每次开机时自动运行,需要下面的命令:
chkconfig --level 2345 vsftpd on
之后,将下面的允许匿名用户访问的参数设定好:
anonymous_enable=YES
重启vsftpd的服务:
service vsftpd restart
最后,将iptables中的tcp端口20与21打开。这样一个匿名的vsftpd服务器就搭建好了,匿名用户将只能访问/var/ftp下面的文件和目录。
三、仅允许系统用户访问的服务器的设定
安装和启动部分略过。接下来位 vsftpd.conf的设定:
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #不允许匿名访问 local_enable=YES write_enable=YES local_umask=022 #启动系统用户访问,可读写文件,并且掩码为022
uerlist_enable=YES userlist_deny=NO #仅接受/etc/vsftpd/user_list中存在的用户的登录请求 #同时这些用户不存在于/etc/vsftpd/ftpusers中 #编辑这两个文件,前者相当于白名单,后者相当于黑名单 pasv_enable=YES #port_enbale=YES pasv_min_port=9001 pasv_max_port=9200 #被动模式,传输端口为9001~9200 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list #编辑/etc/vsftpd/chroot_list,其中的用户将不能访问ftp根目录以上的目录 user_localtime=YES dirmessage_enable=YES xferlog_enable=YES #connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd tcp_wrappers=YES |
重新启动vsftpd服务:
Service vsftpd restart
这样一个只允许系统用户访问的ftp服务器就搭建好了。
四、 vsftpd虚拟用户
在客户端访问vsftpd服务时,根据vsftpd的设定,一般可以使用匿名或者系统账户。那么,如果我们想创建一些用户,并使这些用户仅仅能访问vsftpd,而不可以登录系统,那么我们就需要创建虚拟用户,而这些虚拟用户仅能访问vsftpd。什么是虚拟用户?虚拟用户和系统实体用户的区别是:实体用户在/etc/passwd中对应信息,而虚拟用户只是针对vsftpd与/etc/passwd文件无关。下面介绍如何添加虚拟用户。
首先要确认如下包已安装。
Rpm –qa | grep db4
db4-devel-4.3.29-10.el5
db4-utils-4.3.29-10.el5
db4-4.3.29-10.el5
接下来,需要创建虚拟用户的用户名和密码。创建一个文档,假定这个文件位/tmp/id.txt,内容如下:
lee
hello
baby
love
其中单数行为用户名,双数行为密码。如:lee为用户名,hello为密码。
生成用户账号的数据库文件并设定数据文件权限,最后删除/tmp/id.txt:
db_load –T –t hash –f /tmp/id.txt /etc/vsftpd/vsftpd_id.db
chmod 600 /etc/vsftpd/vsftpd_id.db
下面设定vsftpd.conf文件,内容如下
vi /etc/vsftpd/vsftpd.conf
pasv_enable=YES pasv_min_port=9001 pasv_max_port=9200 #被动模式,传输端口为9001~9200 anonymous_enable=NO #禁止匿名用户访问 local_enable=YES #允许本机账户访问 write_enable=YES local_umask=022 virtual_use_local_privs=YES #虚拟用户权限与本机相同 guest_enable=YES #允许使用虚拟用户 guest_username=ftp #虚拟用户登录后,用户身份为ftp xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES pam_service_name=vsftpd.virtual #设定PAM文件名称,这个PAM文件指定了验证顺序 user_sub_token=$USER #基于模板,自动生成虚拟用户的家目录 local_root=/home/vsftpd/$USER #用户上传目录 chroot_local_user=YES hide_ids=YES #隐藏文件的所有组和用户信息 use_localtime=YES dirmessage_enable=YES xferlog_enable=YES xferlog_std_format=YES listen=YES userlist_enable=YES tcp_wrappers=YES |
接着建立PAM文件/etc/pam.d/vsftpd.virtual,内容如下:
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_id
account required pam_userdb.so db=/etc/vsftpd/vsftpd_id
session required pam_loginuid.so
下面建立相关的目录:
mkdir /home/vsftpd
mkdir –p /home/vsftpd/{lee,baby}
chown –R ftp:ftp /home/vsftpd
重启vsftpd服务:
Service vsftpd restart
如果设置正确,则虚拟机用户可以登录服务器。输出如下:
[root@localhost ~]# ftp 127.0.0.1
Connected to 127.0.0.1.
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 (127.0.0.1:root): xyz
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
至此,ftp服务器搭建结束。O(∩_∩)O