Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux 安装 ftp #6

Open
minhuaF opened this issue Jun 4, 2018 · 0 comments
Open

Linux 安装 ftp #6

minhuaF opened this issue Jun 4, 2018 · 0 comments

Comments

@minhuaF
Copy link
Owner

minhuaF commented Jun 4, 2018

第一次在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配置项的应用

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant