在Linux中搭建FTP服务器

           在Linux中搭建FTP服务器
在Linux中搭建一个ftp服务器,以供工作小组保管文件使用。禁用匿名。小组使用ftp账号:ftpusr,工作目录在:/u02/uploads
实现步骤: 
1.检查安装vsftpd服务器
以root进入终端后(其他账户进入终端的可以用su root 输入密码后进入root 模式)之后,在终端命令窗口输入以下命令进行验证:# rpm –qa | grep vsftpd。如果结果显示为“vsftpd-1.1.3-8”,则说明系统已经安装vsftpd服务器。若没有回复,即系统中没有安装。
在Linux中搭建FTP服务器
2.rhel版本的系统光盘中带有vsftpd安装包,所以接下来,是挂载系统光盘到/media下以便调取。
在Linux中搭建FTP服务器
3.上述截图显示本系统中没有安装vsftpd服务器,则用rpm命令安装。
即在终端命令窗口中安装vsftpd的命令: #rpm -ivh vsftpd-1.1.3-8.i386.rpm。
先mount光驱,在/mnt/cdrom/Server目录里有rpm,rpm -ivh vsftpd*
  在Linux中搭建FTP服务器
在Linux中搭建FTP服务器
4.创建用户
(1)首先要启动服务
在Linux中搭建FTP服务器
rhel7之后service 被systemctl 代替,命令改为 systemctl start vsftpd
(2)创建用户并设置密码
 # useradd -d /u02/ftpusr  ftpusr //建立用户并制定根目录
   # passwd ftpusr,输入密码两次
   建立上传文件目录
   # mkdir /u02/ftpusr/uploads
   # chown -R ftpusr:ftpusr /u02/ftpusr/uploads
   # chmod +775 /u02/ftpusr/uploads
5.vsftpd的配置
安装完之后在/etc/vsftpd/路径下会存在三个配置文件。
vsftpd.conf: 主配置文件
ftpusers: 指定哪些用户不能访问FTP服务器,这里的用户包括root在内的一些重要用户,该文件一直起作用,无论vsftpd.conf怎样设置,相当于一个登录ftp服务器的黑名单。
user_list: 指定的是否可以访问ftp服务器的用户列表。通过vsftpd.conf文件中的 userlist_enable、userlist_deny、userlist_file的配置来决定配置中的用户是否可以访问。
(1)查看主配置文件的默认配置:
(使用:cat /etc/vsftpd/vsftpd.conf |grep -v '^#';)
在Linux中搭建FTP服务器
(2)修改配置文件:
 vi /etc/vsftpd/vsftpd.conf进入ftp配置文件目录并编辑此文件
在Linux中搭建FTP服务器
a.禁止匿名用户登录
anonymous_enable=NO
在Linux中搭建FTP服务器
若设置匿名登录为允许登录,要同时修改相应读写参数
anon_upload_enable=YES
anon_mkdir_write_enable=YES
b.设置本地用户登录
local_enable=YES
c.设置ftp用户写权限
write_enable=YES
d.设置chroot_local_user,chroot_list_enable,chroot_list_file三个参数
主要控制用户对FTP服务器目录的访问权限,作用如下:
chroot_local_user #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
chroot_list_enable #是否启动限制用户的名单 YES为启用  NO禁用(包括注释掉也为禁用)
chroot_list_file=/etc/vsftpd/chroot_list #是否限制在主目录下的用户名单.
至于是限制名单还是排除名单,这取决于chroot_local_user的值.我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。
那么我们势必需要在全局设定下能做出一些 微调 ,即,我们总是需要一种 例外机制",所以当chroot_list_enable=YES时,表示我们 需要例外 。而 例外 的含义总是有一个上下文的,即,当 全部用户被锁定于主目录 时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!
实际应用中做法具体做法:
chroot_local_user=NO
# chroot_list_enable=YES (注释情况下默认为NO,实践中打开此选项导致无法登陆)
chroot_list_file=/etc/vsftpd/chroot_list,删除前面的那个#号,表示开启此限制功能;
e.进入配置文件后,查找userlist_enable、userlist_deny、userlist_file三行配置,若没有,则增加。
我们的系统配置如下:
   userlist_enable=YES  #执行限制用户登录,若为NO,则userlist_deny、userlist_file设置无效,NO时表示不限制用户登录
userlist_deny=NO    #只允许userlist_file文件中的用户可访问ftp
如果userlist_deny=NO:只允许userlist_file文件中的用户可访问ftp;如果userlist_deny=YES:userlist_file文件中列举的用户不能通过ftp访问系统。
userlist_file=/etc/vsftpd/user_list
    所以需要把用户加入到/etc/vsftpd/user_list文件中,每个用户一行。
  在Linux中搭建FTP服务器
f.设置登录用户根目录
local_root=/u02/ftpusr/uploads
g.设置 tcp_wrappers=NO,表示不限制连接,默认状态为yes,但两个文件列表为空
TCP_Wrappers的使用主要是依靠两个配置文件/etc/hosts.allow, /etc/hosts.deny,用于拒绝和接受具有TCP_Wrappers控制全的程序。不过在刚开始的时候,/etc/hosts.allow,/etc/hosts.deny什么都没有添加,此时没有限制,是都可以连接的。 
h.(编辑完,按esc后使用“:wq”保存并退出)
  (3)编辑目录访问限制文件chroot_list,当不限制目录访问时本文件无效,可以不编辑。
   在etc目录找到/etc/vsftpd/chroot_list文件,进入编辑状态
   加入你要限制的用户名,一行一个用户,比如ftp1,表示限制ftp1用户的目录访问于主目录,其他目录不能访问,编辑完,按esc后使用“:wq”保存并退出)
  (4)编辑限制用户登录文件user_list
   进入vsftpd目录,找到/etc/vsftpd/user_list,键入vi user_list,或 vi /etc/vsftpd/user_list打开文件。
   键入ftpusr,意味允许ftpusr登陆ftp服务器。
   当限制用户登录选项有效时,匿名用户(anonymous)若登录,也要加入文件文件,否则,vsftpd.conf中配置的anonymous_enable=YES就无效了。
   编辑完成,按ESC,并键入:wq 保存退出
   在其他Windows机器上,用ftpusr通过ftp访问系统,用户成功登陆,并且成功的被限制在自己的主目录下,无法访问其他目录。
 
关闭防火墙:
首先查看防火墙状态:
systemctl status firewalld
关闭防火墙:
systemctl stop firewalld
彻底禁用防火墙
systemctl disable firewald
打开防火墙命令:systemctl start firew
在Linux中搭建FTP服务器