centos yum安装与配置vsFTPd FTP服务器(转)

vsftpd作为FTP服务器,在Linux系统中是非常常用的。下面我们介绍如何在centos系统上安装vsftp。

什么是vsftpd

vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

vsftpd 的名字代表"very secure FTP daemon", 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。

安装vsftpd

1、以管理员(root)身份执行以下命令

  1. yum install vsftpd

2、设置开机启动vsftpd ftp服务

  1. chkconfig vsftpd on

3、启动vsftpd服务

  1. service vsftpd start

管理vsftpd相关命令:

停止vsftpd:  service vsftpd stop

重启vsftpd:  service vsftpd restart

配置防火墙

打开/etc/sysconfig/iptables文件

  1. vi /etc/sysconfig/iptables

在REJECT行之前添加如下代码

  1. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

保存和关闭文件,重启防火墙

  1. service iptables start

配置vsftpd服务器

默认的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本编辑器打开。

  1. vi /etc/vsftpd/vsftpd.conf

添加ftp用户

下面是添加ftpuser用户,设置根目录为/home/wwwroot/ftpuser,禁止此用户登录SSH的权限,并限制其访问其它目录。

1、修改/etc/vsftpd/vsftpd.conf

将底下三行

  1. #chroot_list_enable=YES
  2. # (default follows)
  3. #chroot_list_file=/etc/vsftpd.chroot_list

改为

  1. chroot_list_enable=YES
  2. # (default follows)
  3. chroot_list_file=/etc/vsftpd/chroot_list

2、增加用户ftpuser,指向目录/home/wwwroot/ftpuser,禁止登录SSH权限。

  1. useradd -d /home/wwwroot/ftpuser -g ftp -s /sbin/nologin ftpuser

3、设置用户口令

  1. passwd ftpuser

4、编辑文件chroot_list:

  1. vi /etc/vsftpd/chroot_list

内容为ftp用户名,每个用户占一行,如:

peter
john

5、重新启动vsftpd

  1. service vsftpd restart

另外,如果觉得以后管理ftp用户名嫌麻烦,可以使用centos官方发布的脚本管理。地址如下:

http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users

打开vsftpd的配置文件,redhat的配置文件默认为/etc/vsftpd.conf:
要想使用本地用户登录的话则只需更改下列选项
local_enable 改为YES
chroot_local_user=YES
#当设置为YES时,本地用户登录后就自动转到他们的用户主目录中去。
#注意!:该选项用安全问题,特别是当用户有上传文件或访问shell的权限时.仅在你知道自#己要作什么时才设置为YES
download_enable=YES
#允许下载,若为NO时则不允许下载。
write_enable=YES
#该选项用于设置是否允许使用会改变FTP文件系统的命令.这些命令有:STOP,DELE,RNFR,
#RNTO,MKD,RMD,APPE,SITE
#

下面是翻译的vsftpd.conf手册页

#此为vsftp的配置
#更多详细信息,请见man 5 vsftpd.conf
#vsftpd 配置的格式非常简单,格式
# option=value 注:以#开头的为注释,将被忽略
# 以下为Boolean选项,value为YES或NO
#
listen=YES
#当为YES时,vsftpd将以单独模式运行.这意味着vsftpd不必以某种inetd运行,而是可以
#直接执行.vsftpd执行后会自己侦听和操作进入的连接
#
listen_ipv6=NO
#类似listen选项,但该选项使vsftpd侦听的地址为IPv6格式的.
#
allow_anon_ssl=NO
#该选项仅在ssl_enable为YES时才用,若设为YES表示允许匿名用户通过ssl连接
#
anon_mkdir_write_enable=NO
#该选项设置为YES时表示允许匿名用户创建新的目录,为了使该选项能够起作用必须
#使write_enable为YES且匿名的用户必须有在父目录写入的权限
#
anon_other_write_enable=NO
#该选项设置为YES时,匿名用户除了具有上传,创建目录的权限外还具有其他的权限
#如重命名等
#
anon_upload_enable=NO
#该选项为YES时表示匿名用户有上传文件的权限.为了使该选项工作必须使write_enable
#为YES
#
anon_world_readable_only=YES
#该选项为YES时,匿名用户只能下载具有全局可读属性的文件
#
anonymous_enable=NO
#该选项控制着是否允许匿名用户登录.当为YES时则同时允许匿名用户ftp和anonyous登录
#
ascii_download_enable=YES
#该选项用于指定是否允许下载时以ASCII模式传输数据
#
ascii_upload_enable=YES
#该选项设置是否允许上传时以ASCII模式传输数据
#
async_abor_enable=NO
#该选项设置为YES时,FTP命令将显示为"async ABOR"仅反对高级客户端使用这一特性.
#
background=NO
#该选项设置当vsftpd以"listen"模式运行时,则在后台运行侦听程序
#
check_shell=YES
#该选项只对以non-PAM编译的vsftpd起作用,当设置为NO时,则vsftpd不会根据/etc/shells
#文件来检查本地用户登录的shell是否有效
#
chmod_enable=YES
#该选项为YES时,允许本地用户使用CHMOD命令改变上传的文件的权限.匿名用户无法使用
#CHMOD命令
#
chown_uploads=YES
#当为YES时,所有匿名用户上传上来的文件都会将文件的所属关系改为由chown_user-name
#指定的用户
#
chroot_list_enable=NO
#该选项用于指定一系列可以使用chroot()的用户名,指定的用户在登录FTP后就会转向
#自己的主目录所在的位置.默认情况下指定的用户放在/etc/vsftpd.chroot_list文件中
#但可以在chroot_list_file指定别的文件名
#
chroot_local_user=NO
#当设置为YES时,本地用户登录后就自动转到他们的用户主目录中去。
#注意!:该选项用安全问题,特别是当用户有上传文件或访问shell的权限时.仅在你知道自#己要作什么时才设置为YES
#
connect_from_port_20=YES
#该选项用于设置是否使用20号端口传输数据.由于安全的原因,一些客户端坚持使用
#20号端口,但是禁用该选项可以使vsftpd运行在更低的特权中
#
debug_ssl=NO
#该选项为YES时,将会把OpenSSl连接的诊断信息存储在日志文件中。
#
delete_failed_uploads=YES
#当设置为YES时,在上传文件失败时删除该文件.
#
#deny_email_enable=NO
#该选项用于指定一系列拒绝匿名用户登录的密码邮件.默认情况下包含邮件的文件为
#/etc/vsftpd.banned_emails或由banned_email_file指定的文件中
#
dirlist_enable=YES
#是否允许用户列出目录的内容
#
dirmessage_enable=YES
#当为YES时表示当用户第一次进入一个新的目录时会显示目录的信息.默认情况下目录的
#信息在目录里面的.message文件里.但是你可以用message_file来指定别的.
#
download_enable=YES
#允许下载,若为NO时则不允许下载。
#
dual_log_enable=NO
#当设置为YES时将会同时产生两个日志文件,一个为/var/log/vsftpd.log(vsftpd自己
#风格的日志文件)和/var/log/xferlog(wu-ftpd风格的日志文件可以被标准的工具分析)
#
force_dot_files=NO
#若设置为YES时,在指定'ls -a'时会列出所有以.开始的隐藏文件,该选项则使.和..不列出
#
#force_anno_data_ssl=NO
#仅在ssl_enable为YES时可用,当该选项为YES时所有匿名用户登录时都要求使用SSL连接
#进行数据传输
#
#force_anon_logins_ssl=NO
#仅在ssl_enable为YES时可用,当该选项为YES时所有匿名用户登录时都要求使用SSl连接
#进行密码传输
#
#force_local_data_ssl=YES
#仅在ssl_enable为YES时可用,当为YES时,所有非匿名用户登录时都要求使用SSL链接进
#行数据传输
#
#force_local_logins_ssl=YES
#仅在ssl_enable为YES时可用,当为YES时,所有非匿名用户登录时到要求使用SSL链接
#进行密码传输
#
guest_enable=NO
#设置是否允许非匿名用户作为"guest"登录,一个guest登录用户映射为guest_username
#指定的一个用户名
#
hide_ids=YES
#当设置为YES时,所有目录列表中的组和用户的信息都被隐藏,用"ftp"代替。
#
#implicit_ssl=NO
#当为YES时,在所有ftp连接的第一件事就是SSL握手
#
local_enable=YES
#控制是否允许本地用户登录.(/etc/passwd中指定的用户登录)
#
lock_upload_files=YES
#设置当用户上传文件时是否锁住上传的文件。
#
log_ftp_protocol=YES
#当为YES时,所有FTP的请求和应答都被记录在日志文件中.可用于调试。
#
ls_recurse_enable=NO
#设置是否允许递归列出目录及其子目录中的内容
#
mdtm_write=YES
#允许使用MDTM设置修改的时间
#
no_anon_password=NO
#当为YES时,将使vsftpd不会询问匿名用户的密码
#
no_log_lock=NO
#当为YES时在记录日志时不会锁住日志文件
#
one_process_model=NO
#允许登录用户只能使用一个进程
#
passwd_chroot_enable=NO
#和chroot_local_user一起使用当为YES时.在用户转到自己主目录时不需要再输入密码。
#
pasv_addr_resolve=NO
#若你想使用主机名的话就设置为YES
#
pasv_enable=YES
#该选项用于设置是否使用PASV方式来获得数据连接。
#
#pasv_promiscuous=NO 
#如果你想禁用PORT安全检查(确保输出的数据仅连接到客户端)则设置为YES.仅在你在你
#知道你在作什么时.
#
require_cert=NO
#若设置为YES时,则所有的SSl客户端连接都需要提供证书,有效的证书在validate_cert中指
#定
#
require_ssl_reuse=NO
#当设置为YES时,所有的SSl数据连接都需要检阅SSL会话安全尽管该选项默认是安全的,但是他可
#能会破坏许多FTP客户端,所以你可能会禁用他
#
run_as_launching_user=NO
#若你希望使用引导vsftpd运行的用户去运行vsftpd.该选项在不能使用root用户访问FTP时很
#很有用。重要的警告!:不要使用该选项除非你真的知道你在作什么.
#
secure_email_list_enable=NO
#若你想指定一系列的邮件密码让匿名用户登录。默认情况下邮件密码存放在/etc/vsftpd.email_passwords,
#但可以email_password_file指定文件.
#
session_support=NO
#该选项控制着vsftpd是否试图控制着登录会话.若vsftpd控制着登录会话的话,则会更新utmp和wtmp日志文件.
#如果使用PAM认证的话他也会打开一个pam_session且只在退出登录后关闭.如果你不需要登录会话的话你可能
#会关闭此选项。
#
setproctitle_enable=NO
#若该选项为YES时vsftpd会试着显示系统中的进程的状态信息。换言之就是报告影响一个vsftpd
#会话的进程名。
#
ssl_enable=NO
#是否支持SSl连接。
#
ssl_request_cert=YES
#SSL连接时是否需要认证.
#
ssl_sslv2=NO
#该选项仅在ssl_enable可用时才应用当为YES时,允许SSL v2协议连接。TLS v1优先
#
ssl_sslv3=NO
#该选项仅在ssl_enable为YES时可用.允许使用SSl v3协议连接.TLS v1优先
#
ssl_tlsv1=YES
#该选项仅在ssl_enable为YES时可用,允许使用TLS v1协议。
#
strict_ssl_read_eof=NO
#该选项为YES时,在上传数据时需要通过SSL连接的终端,而不是端口上的一个EOF
#
strict_ssl_write_shutdown=NO
#当设置为YES时,在下载数据时需要通过SSL连接的端口,而不是端口上的一个EOF
#
syslog_enable=NO
#该选项为YES时.任何原来记录到/var/log/vsftpd.log的信息都将记录到系统日志文件中
#
tcp_wrappers=YES
#当该选项为YES时,连接时将通过tcp_wrapper访问控制(wrap为隐藏的意思)
#
text_userdb_names=NO
#该选项为YES时设置显示用户名和组名.默认情况下使用的是UID和GID
#
tilde_user_enable=NO
#控制vsftpd是否使用相对路径.(以~/something显示路径)
#
use_localtime=YES
#设置是否使用本地用户所在的时区显示时间.默认显示的时间为GMT时区的.
#
use_sendfile=YES
#用于设置在你的系统中使用sendfile()系统调用来测试的内部设置。
#
userlist_deny=NO
#设置禁止登录的用户列表,用户列表在userlist_file中指定的文件中指定
#
userlist_enable=NO
#允许从文件中加载允许登录的用户名列表
#
validate_cert=YES
#若设置为YES时,所有的SSL客户端需要合法的认证书
#
virtual_use_local_privs=NO
#该选项用于设置虚拟用户是否拥有和本地用户一样的特权.
#
write_enable=YES
#该选项用于设置是否允许使用会改变FTP文件系统的命令.这些命令有:STOP,DELE,RNFR,
#RNTO,MKD,RMD,APPE,SITE
#
xferlog_enable=YES
#设置为YES时,会产生一个关于上传和下载的日志文件,默认的日志文件为/var/log/vsftp.log
#但是可以通过vsftpd_log_file指定别的日志文件名
#
xferlog_std_format=NO
#设置是否产生标准格式(wu-ftpd风格的)日志文件.默认的文件名/var/log/xferlog
#但是可以通过xferlog_file指定别的日子文件名。
#
#
#
#
#
#数字选项
# 说明:以下为数字选项,一个数字选项的值不能是负数,可以指定一个八进制的数字
#在数字前加上'0'就是八进制的数值否则默认为十进制的数值.
#
#
#
accept_timeout=60
#该选项用于设置一个PASV风格的连接的超时,单位为s
#
anon_max_rate=1024
#该选项用于设置匿名用户的最大数据传输速度,单位b/s.若设置为0时表示无限制
#
anon_umask=077
#该选项用于设置匿名用户创建文件时的权限掩码.
#
chown_upload_mode=0600
#该选项用于设置匿名用户上传文件时使用chown强制改变文件的权限值
#
connect_timeout=60
#用于设置连接超时
#
data_connection_timeout=120
#用于设置没有进程使用时最大允许数据连接的超时
#
delay_failed_login=1
#设置登录失败时要延迟1s后才可以再次连接
#
delay_successful_login=0
#设置登录成功后的延迟时间,单位是s
#
file_open_mode=0777
#设置上传文件的权限,若你希望上传的文件可以被执行你需要设置为0777
#
ftp_data_port=21
#设置PORT风格的连接的端口,默认为20
#
idle_session_timeout=300
#设置远程客户端使用两个FTP命令之间的最大时间,超时后则退出客户端连接
#
listen_port=21
#当vsftpd在单独模式下运行时侦听的端口号
#
local_max_rate=2048
#设置本地用户最大的传输速度,b/s,若设置为0表示为限制。
#
local_umask=0077
#设置本地用户上传文件时的权限掩码
#
max_clients=10
#设置最大连接的IP数为10
#
max_login_fails=5
#设置在5次连接失败后终止会话
#
max_per_ip=1
#设置每个IP地址最多可以连接的数目为1次。若设置为0时表示无限次
#
pasv_max_port=0
#设置使用PASV风格连接时最大的端口号,0表示无限制
#
pasv_min_port=0
#设置使用PASV风格连接时最小的端口号,0表示无限制
#
trans_chunk_size=0
#你可能不会改变这个选项设置,但是你可以为更低宽带限制将此选项设置为像8192一样
#
#
#
#
#字符串设置
#
#
anon_root=/home/ftp/ftp
#设置匿名用户登录后转向的目录
#
#banned_email_file=/home/huangyandong/logs/vsftpd/vsftpd.banned_emails
#设置存放匿名用户邮件密码列表的文件
#
banner_file=/home/huangyandong/logs/vsftpd/vsftpd.banner
#设置包含当用户登录FTP时显示的内容的文件,会覆盖由ftpd_banner设置的字符串
#
#ca_certs_file
#该选项设置加载认证证书的文件
#
chown_username=huangyandong
#设置当上传文件后文件的所属关系该为huangyandong所有,仅在chown_uploads为YES时
#可用
#
chroot_list_file=/home/huangyandong/logs/vsftpd/vsftpd.chroot_list
#设置包含允许转到用户主目录的用户名的文件名,仅在chroot_local_user和chroot_list_enable
#为YES时可用
#
#cmds_allowed=PASV,RETR,QUIT
#指定一系列由,隔开的允许使用的FTP命令
#
cmds_denied=DELE,RMD
#指定一系列由,隔开的不允许使用的FTP命令
#此处指定不允许删除文件和目录
#
#deny_file
#指定包含一系列不允许访问的文件名的文件
#
#dsa_cert_file
#指定加载DSA证书的文件名
#
#dsa_private_key_file
#指定包含DSA私钥的文件
#
#email_password_file=/etc/vsftpd.email_password
#指定包含邮件密码的文件
#
#ftp_username=ftp
#指定操作匿名用户使用的根目录的用户名
#
#ftpd_banner
#指定用户登录FTP时显示的内容
#
#guest_username=ftp
#指定游客映射的用户名
#
#hide_file
#指定要隐藏的文件名匹配
#
#listen_address
#指定当在单独模式下运行时侦听的IP地址
#
#listen_address6
#指定当在单独模式下运行时侦听的IPV6地址
#
local_root=/home/ftp/ftp
#指定本地用户登录后转入的目录
#
#message_file
#该选项指定包含当用户转入一个新的目录时显示的内容的文件,默认文件为.message
#仅在dirmessage_enable可用时才有用
#
secure_chroot_dir=/home/huangyandong/logs/vsftpd/empty
#指定安全的目录名,该目录不能被ftp用户写入,在FTP文件系统不能访问是转入的目录
#
#userlist_file=/etc/vsftpd.user_list
#该选项用于指定在userlist_enable为YES时,从指定文件中加载用户列表
#
vsftpd_log_file=/home/huangyandong/logs/vsftpd/vsftpd.log
#用于指定日志文件,默认为/var/log/vsftpd.log
#
#xferlog_file=/home/huangyandong/logs/vsftpd/xferlog
#用于在xferlog_enable为YES时指定标准的日志文件默认为/var/log/xferlog
#
#
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

上一篇:QT数据类型的转化总结


下一篇:SpringCloud学习之Config分布式配置中心(八)