第一步,如果你没有安装vsftpd,请执行如下命令安装。
[root@test ~]# yum -y install vsftpd第二步,开始配置。vsftpd的默认配置文件目录是/etc/vsftpd,在配置开始前,
我们先把原来的主配置文件/etc/vsftpd/vsftpd.conf先备份。 [root@test ~]# cd /etc/vsftpd/ [root@test vsftpd]# cp vsftpd.conf vsftpd.conf.orig一个基本的配置文件,根据你自己的需要你可能要做修改,在这里默认注释的行我就不写了。
[root@test vsftpd]# vim vsftpd.confanonymous_enable=YES
local_enable=NO write_enable=YES local_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES idle_session_timeout=600 listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES 1、vsftpd.conf文件的配置(vi /etc/vsftpd/vsftpd.conf)#允许匿名用户登录FTP
anonymous_enable=YES
#设置匿名用户的登录目录(如需要,需自己添加并修改)
anon_root=/var/ftp/pub (默认就是这个、不加上也行)
#打开匿名用户的上传权限
anon_upload_enable=YES
#打开匿名用户创建目录的权限
anon_mkdir_write_enable=YES
#打开匿名用户删除和重命名的权限(如需要,需自己添加)
anon_other_write_enable=YES
#匿名用户的掩码(如需要,需自己添加,含义:如umask是022,这时创建一个权限为666的文件,文件的实际权限为666-022=644)
anon_umask=022
2、ftp目录的权限设置
默认情况下,ftp的根目录为/var/ftp,为了安全,这个目录默认不允许上传文件 因为其木有写入权限。要想上传文件就要改权限:
chmod 757 /var/ftp/pub 一般至此,便实现vsftpd匿名用户的上传下载了。如果还不行,就是下面的问题。3、selinux的配置
SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控制的实现,是 Linux上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
最简单的办法,关闭selinux
方法1:修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
方法2:用命令setenforce 0,无需重启。(setenforce的格式:setenforce [ Enforcing | Permissive | 1 | 0 ])
方法3:在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux。
使用getenforce查看当前selinux是否正在运行。
不关闭selinux,就要设置selinux的ftp权限。
1、使用getsebool -a | grep ftp查看ftp相关设置状态,我们要将allow_ftpd_anon_write设为on。
2、使用setsebool -P 进行设置。例:setsebool -P allow_ftpd_anon_write=on。
或使用togglesebool进行bool值取反,例如togglesebool allow_ftpd_anon_write。
二、本地用户配置:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES ascii_upload_enable=YES ascii_download_enable=YES connect_from_port_20=YES ftpd_banner=Welcome to use my test ftp server! chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/vsftpd_list listen=YES userlist_enable=YES userlist_deny=NO pam_service_name=vsftpd tcp_wrappers=YES pasv_enable=YES pasv_min_port=60000 pasv_max_port=60500
#禁止匿名用户anonymous登录
anonymous_enable=NO#允许本地用户登录
local_enable=YES#让登录的用户有写权限(上传,删除)
write_enable=YES#默认umask
local_umask=022#把传输记录的日志保存到/var/log/vsftpd.log
xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=NO#允许ASCII模式上传
ascii_upload_enable=YES #允许ASCII模式下载 ascii_download_enable=YES# 使用20号端口传输数据
connect_from_port_20=YES#欢迎标语
ftpd_banner=Welcome to use my test ftp server.#接下来的三条配置很重要
#chroot_local_user设置了YES,那么所有的用户默认将被chroot,也就用户目录被限制在了自己的home下,无法向上改变目录 #chroot_list_enable设置了YES,即让chroot用户列表有效。 #★超重要:如果chroot_local_user设置了YES,那么chroot_list_file设置的文件里,是不被chroot的用户(可以向上改变目录) #★超重要:如果chroot_local_user设置了NO,那么chroot_list_file设置的文件里,是被chroot的用户(无法向上改变目录) chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list#以standalone模式在ipv4上运行
listen=YES#PAM认证服务名,这里默认是vsftpd,在安装vsftpd的时候已经创建了这个pam文件,
#在/etc/pam.d/vsftpd,根据这个pam文件里的设置,/etc/vsftpd/ftpusers #文件里的用户将禁止登录ftp服务器,比如root这样敏感的用户,所以你要禁止别的用户 #登录的时候,也可以把该用户追加到/etc/vsftpd/ftpusers里。 pam_service_name=vsftpd#userlist_enable=YES,用户访问控制列表有效,文件是/etc/vsftpd/user_list
#userlist_deny=YES,/etc/vsftpd/user_list里的用户不能登录 #userlist_deny=NO,只有/etc/vsftpd/user_list用户才可以登录 #★重要:无论这里如何设置,只是进一步限制用户,只是在上面/etc/vsftpd/ftpusers #的效果上叠加。比如/etc/vsftpd/ftpusers里有root用户,即便是你设置了 #userlist_deny=NO并且/etc/vsftpd/user_list有root,那root也是不能登录的! userlist_enable=YES userlist_deny=YES#允许使用/etc/hosts.allow和/etc/hosts.deny文件来限制对ftp的访问控制
tcp_wrappers=YES#关于PASV模式的配置
pasv_enable=YES #PASV模式连接时的最小端口 pasv_min_port=60000 #PASV模式连接时的最大端口 pasv_max_port=60500 三、虚拟用户配置:1、安装所需DB库rpm包:
[root@localhost CentOS]# rpm -ivh db4-
db4-4.3.29-10.el5_5.2.i386.rpm db4-java-4.3.29-10.el5_5.2.x86_64.rpm db4-4.3.29-10.el5_5.2.x86_64.rpm db4-tcl-4.3.29-10.el5_5.2.x86_64.rpm db4-devel-4.3.29-10.el5_5.2.i386.rpm db4-utils-4.3.29-10.el5_5.2.x86_64.rpm db4-devel-4.3.29-10.el5_5.2.x86_64.rpm2、装完后支持 db_load 命令:
[root@localhost CentOS]# db_ db_archive db_load dbus-cleanup-sockets db_verify3、创建对应虚拟用户文件:
[root@localhost home]# vi /etc/vsftpd/vsftpd.list yhby 123456 yhby2 123456 yhby3 123456 (奇数为用户偶数为密码)[root@localhost home]# cd /etc/vsftpd/
[root@localhost vsftpd]# db_load -T -t hash -f vsftpd.list vsftpd.db (建立相对应vsftpd.list的DB库命名和第3对步应)
[root@localhost vsftpd]# ls (如下建立成功) vsftpd.db vsftpd.list[root@localhost vsftpd]# file vsftpd.db (貌似是激活这个库)
vsftpd.db: Berkeley DB (Hash, version 8, native byte-order)[root@localhost vsftpd]# chown 600 /etc/vsftpd/vsftpd.db vsftpd.list (增加安全性)
[root@localhost vsftpd]# useradd -d /usr/xxoo -s /sbin/nologin xiaoxiao (建立虚拟用户对应的系统用户)
[root@localhost vsftpd]# chmod 755 /usr/xxoo/ (修改虚拟用户登录后的目录权限)
[root@localhost vsftpd]# ls -lh /boot > /usr/xxoo/ceshi.txt (创建测试文件)
[root@localhost vsftpd]# cd /etc/pam.d/ (建立PAM认证文件)
[root@localhost pam.d]# vi vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vsftpd (这是之前生成的DB库 必须省略.db)
account required pam_userdb.so db=/etc/vsftpd/vsftpd
[root@localhost xxoo]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 guest_enable=YES (开启虚拟用户) guest_username=xiaoxiao (所有虚拟用户映射的系统用户) dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log (日志路径) connect_from_port_20=YES xferlog_std_format=YES listen=YES idle_session_timeout=600 (连接死亡时间) chroot_local_user=YES (禁锢在用户自己的目录) pam_service_name=vsftpd.vu (新建的PAM文件) userlist_enable=YES (YES结合下面的NO则表示只允许user_list中的用户登录) userlist_deny=NO tcp_wrappers=YES pasv_enable=YES pasv_min_port=60000 pasv_max_port=605004、为不同虚拟用户建立独立的配置文件及权限 添加以下行:
[root@localhost xxoo]# vi /etc/vsftpd/vsftpd.confuser_config_dir=/etc/vsftpd/vsftpd_dir
[root@localhost xxoo]# mkdir /etc/vsftpd/vsftpd_dir (创建)[root@localhost xxoo]# cd /etc/vsftpd/vsftpd_dir/
[root@localhost vsftpd_dir]# vi yhby (其他用户以此类推)
anon_upload_enable=YES (上传)
anon_mkdir_write_enable=NO (创建、写入) anon_other_write_enable=NO (删除) local_root=/usr/xxoo/yhby (为虚拟用户建立单独的目录)5、建立行对应的虚拟用户目录:
[root@localhost vsftpd]# mkdir -p /usr/xxoo/yhby
[root@localhost yhby]# vi /usr/xxoo/tt.txt (建立测试页)