CentOS7服务器架设ftp过程

一、vsftp安装篇

复制代码代码如下:
# 安装vsftpd
yum -y install vsftpd
# 启动
systemctl start vsftpd.service

# 开启启动
systemctl enable vsftpd.service

二、vsftp相关命令之服务篇

复制代码代码如下:
# 启动ftp服务
service vsftpd start
# 查看ftp服务状态
service vsftpd status
# 重启ftp服务
service vsftpd restart
# 关闭ftp服务
service vsftpd stop

三、vsftp配置篇

复制代码代码如下:
#进入vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf
# 禁止匿名用户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_list_enable=YES
# touch /etc/vsftpd/chroot_list 新建
chroot_list_file=/etc/vsftpd/chroot_list
use_localtime=YES
# 以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
# 重启 vsftpd
service vsftpd restart

四、vsftp用户篇

复制代码代码如下:
# 创建用户
useradd -d /home/webapps/www.xxx.com -s /sbin/nologin -M hzh1990
# 设置用户到文件夹
chown -R username /home/webapps/www.xxx.com/public
# 设置权限
chown -R 777  /home/webapps/www.xxx.com/public
# 添加密码
passwd hzh1990 -> 密码 -> 确认密码
useradd -d /home/webzte -s /sbin/nologin -M webzte
五、遇到的问题
1、启动时遇到问题。
现象与描述
[root@localhost ~]# service vsftpd start
Redirecting to /bin/systemctl start  vsftpd.service
Job for vsftpd.service failed. See ‘systemctl status vsftpd.service’ and ‘journalctl -xn’ for details.
按照提示输入systemctl status vsftpd.service 和 journalctl -xn 显示如下:
[root@localhost ~]# systemctl status vsftpd.service -l
vsftpd.service – Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
Active: failed (Result: exit-code) since Thu 2014-09-18 01:50:43 CST; 3min 50s ago
Process: 2136 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=2)Sep 18 01:50:43 localhost.localdomain systemd[1]: vsftpd.service: control process exited, code=exited status=2
Sep 18 01:50:43 localhost.localdomain systemd[1]: Failed to start Vsftpd ftp daemon.
Sep 18 01:50:43 localhost.localdomain systemd[1]: Unit vsftpd.service entered failed state.

 

解决与思考
# When “listen” directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=NO
把listen改成NO成功启动了

 

2、客户端无法连接ftp
现象与描述
客户端无法连接到服务器,telnet也不行,怀疑被服务器防火墙ban了
解决与思考
先考虑把21端口加入到服务器firewalld规则里,但是太复杂,没查到相关文档,决定禁用firewalld采用iptables来解决。

在CentOS/RHEL 7系统中,要用iptables和ip6tables服务代替FirewallD服务,需要以root身份运行以下命令,先禁用FirewallD:

# systemctl disable firewalld
# systemctl stop firewalld

然后安装iptables-services程序包,以root身份输入以下命令:

# yum install iptables-services

iptables-services程序包包含了iptables和ip6tables服务。然后,以root身份运行iptables和ip6tables命令:

# systemctl start iptables
# systemctl start ip6tables
# systemctl enable iptables
# systemctl enable ip6tables

vi /etc/sysconfig/iptables

systemctl status iptables

 

3、ftp客户端连接进去后,用户能进入到上层及其他目录

现象与描述
如题。
解决与思考

————————————–分割线—————————————————

2016-12-09 决定尝试FTP虚拟用户登录。

我们登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录。

匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous。

本地用户登录:使用系统用户登录,在/etc/passwd中。

虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器。

FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。

一、本地数据文件方式

1. 添加虚拟用户口令文件

[root@CentOS5 /]#vi /etc/vsftpd/vftpuser.txt

添加虚拟用户名和密码,一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码。

bobyuan #用户名

123456 #密码

markwang #用户名

123456 #密码

 

2. 生成虚拟用户口令认证文件

将刚添加的vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。

首先查看系统有没有安装生成口令认证文件所需的软件db4-utils。

[root@CentOS5 /]#rpm –qa |grep db4-utils

[root@CentOS5 /]#rpm –ivh db4-utils-4.3.29-9.fc6.i386.rpm

rpm -qa |grep db4-utils

rpm -qa |grep db4

rpm -ivh db4-utils-4.3.29-9.fc6.i386.rpm

上述几行均失败。

yum provides db_load

成功。

db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db

3. 编辑vsftpd的PAM认证文件

在/etc/pam.d目录下,

[root@CentOS5 /]#vi /etc/pam.d/vsftpd

将里面其他的都注释掉,添加下面这两行:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser

发表评论

电子邮件地址不会被公开。 必填项已用*标注