vsftpd 服务器基础设定
1、所需要的软件及软件结构
在centos6下可以直接yum install vsftpd来进行安装,可以先查看系统是否已经安装。
安装完软件之后,在/etc/vsftpd的目录下我们可以看到一下几个文件,比较重要,大家务必先对这个几个文件的用途先做一番了解,避免走弯路。
/etc/vsftpd/vsftpd.conf
严格来说,整个 vsftpd 的配置文件就只有这个档案!这个档案的设定是以 bash 的变量设定相同的方式来处理的,也就是『参数=设定值』来设定的,注意, 等号两边不能有空白喔!至于详细的 vsftpd.conf 可以使用『 man 5 vsftpd.conf 』来详查。
/etc/pam.d/vsftpd
这个是 vsftpd 使用 PAM 模块时的相关配置文件。主要用来作为身份认证之用,还有一些用户身份的抵挡功能,也是透过这个档案来达成的。你可以察看一下该档案:
root@bd-stg-test-97:/etc/vsftpd#cat /etc/pam.d/vsftpd #%PAM-1.0 session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth
上面那个 file 后面接的档案是『限制使用者无法使用 vsftpd 』之意。
/etc/vsftpd/ftpusers
与上一个档案有关系,也就是 PAM 模块 (/etc/pam.d/vsftpd) 所指定的那个无法登入的用户配置文件啊!这个档案的设定很简单,你只要将『不想让他登入 FTP 的账号』写入这个档案即可。一行一个账号,看起来像这样:
root@bd-stg-test-97:/etc/vsftpd#cat ftpusers # Users that are not allowed to login via ftp root bin daemon ...
一般都是一些系统级别的账号,即用户id小于500,为了安全起见,一般也不建议使用系统账号进行登录。在实际中,你可以注销或添加某个用户来限制用户的访问。
/etc/vsftpd/user_list
这个档案是否能够生效与 vsftpd.conf 内的两个参数有关,分别是『 userlist_enable, userlist_deny 』。如果说 /etc/vsftpd/ftpusers 是 PAM 模块的抵挡设定项目,那么这个 /etc/vsftpd/user_list 则是 vsftpd 自定义的抵挡项目。事实上这个档案与 /etc/vsftpd/ftpusers 几乎一模一样,在预设的情况下,你可以将不希望可登入 vsftpd 的账号写入这里。不过这个档案的功能会依据 vsftpd.conf 配置文件内的userlist_deny={YES/NO} 而不同,这得要特别留意喔!
/etc/vsftpd/chroot_list
这个档案预设是不存在的,所以你必须要手动自行建立。这个档案的主要功能是可以将某些账号的使用者 chroot在他们的家目录下!但这个档案要生效与 vsftpd.conf 内的『 chroot_list_enable, chroot_list_file 』两个参数有关。如果你想要将某些实体用户限制在他们的家目录下而不许到其他目录去,可以启动这个设定项目喔!
2、 vsftpd.conf 设定值说明
事实上,/etc/vsftpd/vsftpd.conf 本身就是一个挺详细的配置文件,且使用『 man 5 vsftpd.conf 』则可以得到完整的参数说明。不过我们这里依旧先将 vsftpd.conf 内的常用参数给他写出来,由于篇幅原因,我在另外的文章中列出了设定值项的具体用途,如有需要,请大家移步至:vsftp配置文件中的设定值详解
3、实际案例 —— 针对实体账号的设定
建立ftp实体账号,即一个id大于500的普通用户,指定家目录即他的用户活动目录
#useradd activity -d /opt/ftp_dir/activity/ -s /sbin/nologin
配置文件设定
# vim /etc/vsftpd/vsftpd.conf # 1. 与匿名者相关的信息,在这个案例中将匿名登录取消: anonymous_enable=NO #禁止匿名登录 # 2. 与实体用户相关的信息:可写入,且 umask 为 002 local_enable=YES #支持本地端的实体用户登入 write_enable=YES #允许用户上传数据 (包括档案与目录) local_umask=002 #建立新目录 (775) 与档案 (664) 的权限 userlist_enable=YES #vsftp自定义限制用户访问开启 userlist_deny=YES #限制为黑名单 userlist_file=/etc/vsftpd/user_list #限制名单文件 chroot_local_user=YES #开启本地用户chroot功能 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list #这个文件中记录的账户将关闭chroot local_max_rate=300000 #限制用户的总下载流量,单位是 bytes/second max_clients=10 #最大客户端连接 max_per_ip=3 #每个ip最多连接数 pasv_min_port=6508 #被动模式最小端口号 pasv_max_port=6518 #被动模式最大端口号 # 3. 与服务器环境有关的设定 use_localtime=YES #使用当地时间 dirmessage_enable=YES #若目录下有 .message 则会显示该档案的内容 xferlog_enable=YES #启动登录文件记录,记录于 /var/log/xferlog connect_from_port_20=YES #支持主动式联机功能 xferlog_std_format=YES #支持 WuFTP 的登录档格式 listen=YES #使用 stand alone 方式启动 vsftpd pam_service_name=vsftpd #支持 PAM 模块的管理 tcp_wrappers=YES #支持 TCP Wrappers 的防火墙机制 banner_file=/etc/vsftpd/welcome.txt #建立客户端连接服务器后的提示语
测试阶段
#ftp localhost 输入账号和密码后,即可以看到自己活动目录的内容,本案例支持下载和上传
后话:在linux推荐一个ftp的lftp的客户端,十分方便简洁,详细用法大家可以自行查找~