在linux系统中搭建FTP服务器

本文详细介绍如何在Linux系统中安装和配置vsftpd软件包来搭建FTP服务,包括安装过程、基本命令、核心配置文件详解及匿名用户上传下载的设置。

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

linux 系统是装好了,数据共享又成了问题我总不能那个U盘来回拔插吧,于是在linux系统上搭建FTP服务来共享数据是很不错的方案。


首先要安装linux下的vsftp软件包。  

  

         rpm -qa|grep vsftpd //查找vsftpd有没有安装

  如果没有安装就 vsftpd-2.0.1-5.i386.rpm (在第一张光盘)

  在linux中有一个非常重要的一点就是要挂载光驱 mount /media/cdrom

  在这里我们就不用源代码安装了。用的是rpm安装

  #rpm -ivh vsftpd-2.0.1-5.i386.rpm

  这里就安装好了。

常用命令:


       service vsftpd start 启动vsftpd服务
       service vsftpd restart   //重启服务
       service vsftpd stop  //停止服务

  如果在不设置任何的情况下,可以以匿名的方式访问该ftp。

  注.如果访问不了的时候请大家要把linux的防火墙也要关闭:

  iptables -F 清除防火墙. vsftpd




在安装好ftp会产生几个文件:


  /etc/vsftpd/vsftpd.conf 主配置文件

  /etc/vsftpd.ftpusers 指定哪些用户不能访问FTP服务器

  /etc/vsftpd.user_list文件中指定的用户是否可以访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。

  这几个文件就是整个ftp控制和禁止用户的权限配置。。。

下面我们就来设置一个vsftpd的核心文件


  # cd /etc/vsftpd/vsftpd.conf 这就是vsftpd的核心配置文件

  anonymous_enable=YES/no 是否允许匿名用户登录

  anon_upload_enable=yes/no 是否允许匿名上传文件

  local_enable= YES/no 是否允许本地用户登录

  write_enable= YES/no 是否允许本地用户上传

  guest_enable=yes/no 是否允许虚拟用户登录;

  local_mask=022 设置本地用户的文件生成掩码为022,默认值为077

  dirmessage_enable= YES 设置切换到目录时显示.message隐含文件的内容

  xferlog_enable= YES 激活上传和下载日志

  connect_from_port_20=YES 启用FTP数据端口连接

  pam_service_name=vsftpd 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d目录下

  userlist_enable= YES 允许vsftpd.user_list文件中的用户访问服务器

  userlist_deny= YES 拒绝vsftpd.user_list文件中的用户访问服务器

  listen= YES/no 是否使用独占启动方式(这一项比较重要)

  tcp_wrappers= YES/no 是否使用tcp_wrappers作为主机访问控制方式

  最主要的就是这些设置了。(这是一般都是默认的不是太懂的不要动)

大家可以设置下面的设置:


  ftpd_banner=welcome to ftp service 设置连接服务器后的欢迎信息

  idle_session_timeout=60限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒)

  data_connection_timeout=120 设置客户机在进行数据传输时,设置空闲的数据中断时间

  accept_timeout=60 设置在多长时间后自动建立连接

  connect_timeout=60 设置数据连接的最大激活时间,多长时间断开,为别人所使用;

  max_clients=200 指明服务器总的客户并发连接数为200

  max_per_ip=3 指明每个客户机的最大连接数为3

  local_max_rate=50000(50kbytes/sec)

  anon_max_rate=30000 设置本地用户和匿名用户的最大传输速率限制

  pasv_min_port=端口

  pasv-max-prot=端口号 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口;

  listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接;

  listen_port=端口号 设置FTP工作的端口号,默认的为21

  chroot_local_user=YES 设置所有的本地用户可以chroot

  chroot_local_user=NO 设置指定用户能够chroot

  chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list(只有/etc/vsftpd.chroot_list中的指定的用户才能执行)

  local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录,若没有指定,则每一个用户则进入到个人用户主目录;

  chroot_local_user=yes/no是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user,不能利用cd命令向上转;只能向下;

  chroot_list_enable=yes/no锁定指定文件中用户的主目录(部分),文件:/chroot_list_file=path 中指定;

  userlist_enable=YES/NO 是否加载用户列表文件;

  userlist_deny=YES 表示上面所加载的用户是否允许拒绝登录;

  userlist_file=/etc/vsftpd.user_list 列表文件

  这些就是高级设置了。大家可以适当的更改。

  #vi /etc/hosts.allow

  vsftpd:192.168.5.128:DENY设置该IP地址不可以访问ftp服务(vsftpd在独占启动方式下支持tcp_wrappers主机访问控制方式)

时间限制:


  #cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd/etc/xinetd.d/vsftpd

  #vi /etc/xinetd.d/vsftpd/

  修改 disable = no

  access_time = hour:min-hour:min(添加配置访问的时间限制(注:与vsftpd.conf中listen=NO相对应)

  例: access_time = 8:30-11:30 17:30-21:30 表示只有这两个时间段可以访问ftp



lvsftpd匿名用户上传和下载的配置


  配置要注意三部分,请一一仔细对照:


  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,为了安全,这个目录默认不允许设置为777权限,否则ftp将无法访问。但是我们要匿名上传文件,需要“other”用户的写权限,正确的做法:


  在/var/ftp中建立一个upload(名子自己起吧)文件夹,将个文件夹权限设置为777(视具体需要自己设),在upload这个文件夹中,匿名用户可以上传文件、创建文件夹、删除文件等。


  一般至此,便实现vsftpd匿名用户的上传下载了。如果还不行,就是下面的问题。


  3、selinux的配置


  SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控制的实现,是 Linux上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。


  最简单的办法,关闭selinux(如果都感觉配置正确了但是就是不能上传那就是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。


  3、修改selinux安全上下文,先介绍两个命令:


   命令1、ls -Z  ps -Z  id -Z  # 分别可以看到文件,进程和用户的SELinux属性


   命令2、#chcon 改变SELinux安全上下文


   chcon -u [user]  对象


       -r [role]


       -t [type]


       -R 递归


       --reference 源文件 目标文件           # 复制安全上下文


   使用方法:


    步骤1、ls -Zd /var/ftp/upload/ 通常会看到:


     drwxr-xr-x ftp root system_u:object_r:public_content_t /var/ftp/upload/


    步骤2、chcon -R -t public_content_rw_t /var/ftp/upload/


    步骤3、ls -Zd /var/ftp/upload/ 如果看到如下信息就OK了:


     drwxr-xr-x ftp root system_u:object_r:public_content_rw_t /var/ftp/upload/


  最后还是重启下selinux和vsftpd吧,不重启其实也没关系。重新登录到ftp上,应该就能解决问题了。


  另,selinux的图形界面 可由system-config-selinux命令进入。


  就这些内容了,希望对大家有帮

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值