centos 7 vsftpd重启报错 vsftpd.service: control process exited, code=exited status=1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos 7 vsftpd重启报错 vsftpd.service: control process exited, code=exited status=1相关的知识,希望对你有一定的参考价值。

vsftpd.service: control process exited, code=exited status=1
Unit vsftpd.service has failed.
查了很多网站和论坛都是让修改vsftpd.conf。只有status=2的时候才是vsftpd.conf里面的代码有问题

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。

工作方式

主动模式:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始 监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
被动模式:当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

先安装vsftpd

[root@localhost ~]# yum install vsftpd -y[root@localhost ~]# systemctl  start vsftpd      #启动vsftpd[root@localhost ~]# systemctl  status vsftpd    #查看vsftpd状态
vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
Active: active (running) since 五 2018-02-02 08:22:39 CST; 1min 50s ago
Process: 12558 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 12559 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─12559 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

vsftp三种认证模式

annoymous 匿名用户 #无虚输入密码即可访问
local user 真实用户 #服务器上存在的用户
guest user 虚拟用户 #映射到ftp服务器的用户

vsftpd的默认配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).anonymous_enable=YES  #允许匿名用户登陆## Uncomment this to allow local users to log in.# When SELinux is enforcing check for SE bool ftp_home_dirlocal_enable=YES  #允许本地用户登陆## Uncomment this to enable any form of FTP write command.write_enable=YES  #允许本地用户读写## Default umask for local users is 077. You may wish to change this to 022,# if your users expect that (022 is used by most other ftpd's)local_umask=022  #本地用户创建文件的umask值......
dirmessage_enable=YES    #当用户进入某个目录时,会显示该目录需要注意的内容是  messagexferlog_enable=YES #启动维护记录服务器上传和下载情况的日志文件connect_from_port_20=YES   #FTP PORT主动模式进行数据传输时使用20端口xferlog_std_format=YES #传输日志文件将以标准 xferlog 的格式书写listen_ipv6=YES  #监听ipv6pam_service_name=vsftpd  #pam认证模块的名字userlist_enable=YES   #拒绝登陆ftp的名单tcp_wrappers=YES   #限制IP访问vsftpd

匿名用户认证

我们刚才已经开启了vsftpd 我们已经可以登陆ftp站点 #需关闭防火墙或设置规则 并关闭selinux

我们已经登陆到ftp站点了


试着创建一个文件夹 出现550报错 是因为我们是以匿名用户登陆到FTP站点 并没有给匿名用户创建目录的权限
在vsftpd配置文件中添加

anon_upload_enbale  #允许匿名用户上传anon_mkdir_write_enable=yes  #允许匿名用户创建目录anon_other_write_enable=yes #允许匿名用户修改目录名称或删除目录

再赋予匿名用户登陆的文件夹最高权限
chmod 777 /var/ftp/pub

已经可以创建并修改文件夹
还有一种方法 是将匿名用户登陆到的目录系统用户改成ftp 就不用修改目录权限

[root@localhost ~]#chown -Rf ftp /var/ftp/pub

本地用户模式

修改vsftp配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

加入一行

local_root=/etc/ftp

创建 一个用户

[root@localhost ~]#useradd 51cto[root@localhost ~]# passwd 51cto更改用户 51cto 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

创建这个目录

[root@localhost ~]#mkdir /etc/ftp

重启一下vsftpd
用我们刚创建的用户登陆

登陆成功
诶? 既然说本地用户模式是 服务器上真是存在的用户 那我们的管理员root 也是真实存在的 那是否可以登陆呢?

无法登陆 这是为什么呢?
这是因为vsftpd有一个禁止用户登陆的名单

在上面的匿名用户说过 vsftpd默认是开启禁止用户名单的 我们的root用户在名单之中 自然就无法登陆了 禁止root用户登陆也对服务器提升了安全性 防止***通过ftp爆破root密码

虚拟用户

虚拟用户是这三种认证模式中最安全的一种 也稍微复杂一些
虚拟用户是用PAM认证模块中配置 FTP认证的数据库文件来进行加密

关于PAM认证可以看http://blog.51cto.com/tyjhz/1436175

首先我们在/etc/目录下 创立一个用户数据库文件

奇数行为账户偶数行为密码
为了安全我们用db_load命令 用哈希算法将明文信息转换成密文数据库文件并降低文件的权限 避免其他人看到数据库文件

[root@localhost etc]#db_load -T -t hash -f /etc/ftp/ftp.txt ftp.db[root@localhost etc]#rm ftp.txt[root@localhost etc]#chmod 600 ftp.db

我们用默认的pam文件 注释其他行
新加两行
db_load 后面跟的是数据库的路径不用写数据库的后缀
创建存放虚拟用户配置文件的目录

[root@localhost etc]#mdir -p /etc/ftp

配置虚拟用户权限

[root@localhost ftp]#vim user1

[root@localhost ftp]#vim user2

创建两个用户登陆的目录

[root@localhost ftp]#mkdir -p /home/user1 [root@localhost ftp]#mkdir -p /home/user2赋予最高权限
[root@localhost ftp]#chmod 777 /home/*

修改vsftpd配置文件

重启一下vsftpd
测试一下权限

追问

请看清楚题目谢谢,我并不是问如何安装,我现在遇到的是安装之后出现错误。

参考技术A 查看端口号ss -tanl |grep 21 参考技术B 我也遇到同样的问题,status=1.老哥,你解决了吗,求解决办法。 参考技术C 看日志,/var/log下的messages和xferlog

CentOS中vsftp安装配置卸载

1. 安装VSFTP

yum -y install vsftpd

2. 配置vsftpd.conf文件

 vim /etc/vsftpd/vsftpd.conf

 

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd‘s
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
#anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd‘s)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# The target log file can be vsftpd_log_file or xferlog_file.
# This depends on setting xferlog_std_format parameter
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
 
#chown_username=whoever
#
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/xferlog
#
# Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
ascii_upload_enable=YES
ascii_download_enable=YES
 
#
# You may fully customise the login banner string:
ftpd_banner=Welcome to lightnear FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
ls_recurse_enable=YES
#
# 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=YES
#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd with two configuration files.
# Make sure, that one of the listen options is commented !!
#listen_ipv6=YES
 
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
local_root=/var/public_root
tcp_wrappers=YES
use_localtime=YES
 
 

3. 增加FTP帐户

这里设置的账户名为“cent”,密码为“cent”

[[email protected] ~]# useradd cent -s /sbin/nologin

[[email protected] ~]# passwd cent

4. 编辑user_list文件,允许cent用户访问FTP

[[email protected] ~]# vi /etc/vsftpd/user_list

 
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
cent
 
 
 

 5. 建立我们的根目录,并设置访问权限

[[email protected] ~]# mkdir /var/public_root(指定的ftp文件夹)
[[email protected] ~]# chown -R cent /var/public_root(赋予用户访问)
[[email protected] ~]# chmod -R 755 /var/public_root(赋予文件夹可读可写的权限)
 
service vsftpd start / stop (开启ftp服务器/关闭服务)
 
 
 

 

配置完成我们登录时有可能碰到 500OOPS:can not change directory问题

1. 查看SELinux设置
# getsebool -a | grep ftp
发现 ftpd_disable_trans –> off 或者 ftp_home_dir–>off

2. 使用setsebool命令开启
# setsebool ftpd_disable_trans 1 或者 # setsebool ftp_home_dir 1

3. 查看当前状态是否是on的状态
# getsebool -a|grep ftp
此时 ftpd_disable_trans –> on 或者 ftp_home_dir–>on

4. 最后重启 # service vsftpd restart

 

6.centos 卸载vsftpd方法

rpm -aq vaftpd(查看是否存在ftp服务器)

rpm -e vsftpd-2.0.5-16.el5_5.1(删除ftp服务器)
 
接着手动删除文件夹即可
 
 

 

以上是关于centos 7 vsftpd重启报错 vsftpd.service: control process exited, code=exited status=1的主要内容,如果未能解决你的问题,请参考以下文章

Centos 7安装配置 vsftp服务 (虚拟用户登录)

Centos 7安装配置 vsftp服务(虚拟用户登录)

CentOS 7 VSFTP 配置虚拟用户

CentOS-Vsftp全新下载安装:如何产生vsftpd-2.1.2/vsftpd.pam 文件

centos 7 最小安装后 安装FTP服务器 vsftp

红帽7(centos 7)配置VSFTP