minhuaF / blog

I will write my front-end story.
9 stars 1 forks source link

Linux 安装 ftp #6

Open minhuaF opened 6 years ago

minhuaF commented 6 years ago

第一次在Linux上面玩装东西,还是挺好玩的,不过有点头晕,多打点命令就好了。

首先,在Linux上下载和安装ftp的安装程序,如果是内部服务器,不能链接外网的话,就需要在另一台服务器拷贝文件过去目标服务器;如果服务器是可以联网的话,就直接通过命令来处理就好了。

下载并安装

检查是否已安装ftp

rpm -qa | grep ftp

离线安装 需下载和拷贝安装程序,然后安装。下载 FTP:http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd(x86-64) 1

拷贝上传到对应的服务器

scp -r /home/test root@12.224.34.676:/home/lk/cpfile
rpm -ivh vsftpd-3.0.2-21.el7.x86_64.rpm

在线安装 通过命令直接下载安装

yum install vsftpd

启动vsftpd,测试是否安装成功

service vsftpd start

展示[确定]即安装成功 image

ftp配置

anonymous_enable=NO      # 是否开启匿名登录
local_enable=YES                # 是否允许本地用户登录
write_enable=YES               # 是否允许上传
local_umask=022                # 默认的umask码
diremssage_enable=YES    # 是否显示目录说明文件
xferlog_enable=YES           # 是否记录ftp传输过程
connect_from_prot_20=YES      # 是否确定端口传输来自20
xferlog_ftd_format=YES           # 是否使用标准的ftp xferlog模式
chroot_list_enable=YES            # 是否将系统用户限制在自己的home目录下
chroot_list_file=/etc/vsftpd/chroot_list    # 列表不受限制的用户
listen=YES     # 是否开启监听
pam_service_name=vsftpd  # 服务名称
userlist_enable=YES
tcp_wrappers=YES

修改ftp默认21端口

一般内网情况下,端口通信是有限制的,ftp默认是21端口,如果网络不通的情况下,建议修改ftp的默认端口,使其能直接通信。

vi /etc/vsftpd/vsftpd.conf 

在末尾加上,然后重启

listen_port=8080 #注意等号两边不用空格

修改系统services的配置(这个系统的端口,我尝试了下不修改也是没有问题的,具体为什么要修改这个,还不确认)

vi /etc/services

修改以下配置,然后重启vsftpd即可

ftp 21/tcp  改为 ftp 8080/tcp ,
ftp 21/udp  改为 ftp 8080/tcp

可查看vsftpd的端口使用情况

netstat -tnulp | grep vsftpd

开启防火墙

设置了上面的步骤之后,需要查看下服务器的防火墙是否对21、2323端口开启了权限。

cat /etc/sysconfig/iptables

查看配置,要是没有对使用的端口进行配置,则需要添加上

vi /etc/sysconfig/iptables

添加下面语句

-A INPUT -m state --state NEW -m tcp -p tcp --dport 端口号 -j ACCEPT

添加后需要重启防火墙,使配置生效

service iptables restart

如果原来没有/etc/sysconfig/iptables,则需要新建。

vi /etc/sysconfig/iptables

添加以下内容

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2323 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

一般配置完之后,试试能不能登录和访问,这个时候一般是不行的,看报错提示语,是获取List的问题,是没有配置ftp默认访问路径导致的。我用的是filezilla_ f2qh ws2 0i d4ujfyfh

添加ftp用户,并配置ftp默认访问路径

创建一个用户,然后修改用户的登陆shell为nologin,让用户不能登陆系统,只能使用ftp之内的服务

useradd -d /home/ftp -g ftpgroups -s /sbin/nologin ftpuser  
passwd ftpuser    #设置该用户的密码
 chmod -R 777 /home/ftp #修改ftp账号的权限

取消匿名登录,进入编进页面,把第一行 anonymous_enable=YES ,改为NO,然后重启。

vi /etc/vsftpd/vsftpd.conf

指定ftp默认访问路径,在vsftpd.conf上添加local_root=/home/ftp,即可。

service vsftpd restart    #修改完之后需要重启vsftpd

登录账号查看发现也能访问上层目录,甚至根目录,这不是我们想要的,修改一下配置文件让其只能访问自身目录。如下设置。

vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
service vsftpd restart   #修改完之后需要重启vsftpd

为ftp设置被动模式

一般完成以上步骤之后,已经可以在客户端通过8080端口匿名访问ftp的目录,不过可能会报错,可能会很慢。ftp通信有2种模式,一种是主动模式,一种是被动模式。主要使用的是ftp的被动模式,在/etc/vsftpd/csftpd.conf后面添加以下配置,即可设置为被动模式。配置结束后重启vsftpd

pasv_enable=YES
pasv_min_port=2323 
pasv_max_port=2323

重新登录,大功告成! lz06 p _hvj j7rwu v azj

参考文档

vsftpd服务器userlist_enable和userlist_deny配置项的应用