您的当前位置:首页正文

CentOS下配置FTP服务器

2023-11-06 来源:客趣旅游网
CentOS下配置FTP服务器

安装:

chkconfig --list 查看安装了哪些服务

1、进入到centos 终端上 首先执行 yum search vsftpd 查看安装软件名字; 2、然后安装 列出来的软件名,首选第一个 yum install vsftpd,开始执行安装 3、安装好后通过 service vsftpd status 查看ftp 运行状态 启动:service vsftpd start 停止:service vsftpd stop 重启:service vsftpd restart 4、设置开机启动vsftpd ftp服务

chkconfig vsftpd on(或 chkconfig --levels 345 vsftpd on) 5、开启防火墙的20、21端口: vi /etc/sysconfig/iptables 添加下面两行:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -p tcp --dport 30000:30100(和配置文件里对应) -j ACCEPT

重启防火墙:service iptables start 6、安装pam和db4

yum install vsftpd pam* db4* -y

配置:

备份现有配置文件:

[root@localhostvsftpd]# cd /etc/vsftpd/

[root@localhostvsftpd]# cpvsftpd.confvsftpd.conf.bak

1、修改配置文件

vi /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=NO //不允许匿名用户访问

#

# Uncomment this to allow local users to log in.

local_enable=YES //设定本地用户可以访问。主要是为虚拟宿主用户,如果该项目设定为

NO那么所有虚拟用户将无法访问。 #

# 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=NO //禁止匿名用户上传。 #

# Uncomment this if you want the anonymous FTP user to be able to create # new directories.

anon_mkdir_write_enable=NO //禁止匿名用户建立目录。 #

# 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 //设定端口20进行数据连接。 #

# 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=NO //设定禁止上传文件更改宿主。 #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/vsftpd.log //日志保存路径 #

# 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

#nopriv_user=vsftpd //设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。 #

# 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 //设定支持ASCII模式的上传和下载功能。 #

# You may fully customise the login banner string:

ftpd_banner=Welcome to blah FTP service. //设定Vsftpd的登陆标语 #

# 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 //禁止用户登出自己的FTP主目录。 # (default follows)

chroot_list_file=/etc/vsftpd/chroot_list //如果开启了chroot_list_enable=YES,那么一定要开启这个,这条是锁定登录用户只能家目录的位置。 #

# 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=NO //禁止用户登陆FTP后使用\"ls -R\"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服务器造成威胁。 #

# 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 //设定该Vsftpd服务工作在StandAlone模式下。顺便展开说明一下,所谓 StandAlone模式就是该服务拥有自己的守护进程支持,在ps -A命令下我们将可用看到vsftpd的守护进程名。如果不想工作在StandAlone模式下,则可以选择SuperDaemon模式,在该模式下 vsftpd将没有自己的守护进程,而是由超级守护进程Xinetd全权代理,与此同时,Vsftp服务的许多功能将得不到实现。 #

# 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 //设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。

userlist_enable=YES //设定userlist_file中的用户将不得使用FTP。 tcp_wrappers=YES //设定支持TCP Wrappers。

#使用虚拟用户需要增加以下部分默认中不包含这些设定项目,需要自己手动添加: virtual_use_local_privs=YES //设定虚拟用户的权限符合他们的宿主用户。

user_config_dir=/etc/vsftpd/vconf //设定虚拟用户个人Vsftp的配置文件存放路径。这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,注:就是这些配置文件名必须和虚拟用户名相同。

max_clients=300 //设置FTP服务器最大接入客户端数为300个

设置可以浏览器访问 pasv_enable=YES

pasv_max_port=30100

pasv_min_port=30000

2、虚拟用户理解:

虚拟用户,顾名思义,并不是一个合法的Linux系统帐户,但是他可以用来登陆该系统上运行的FTP服务器.

当用户在连接上FTP服务器后,会被要求输入用户名和密码.FTP服务器在拿到这个用户名和密码后,会调用相应的PAM认证模块对,和系统中的FTP认证文件进行相比较.如果该用户名和密码与FTP认证文件中的某条记录相符,就通过认证,然后该帐户就被映射成一个Linux下的本地帐户,然后根据使用该本地帐户对FTP资源进行访问.否则则断开该连接请求. 3、创建日志文件

[root@localhostvsftpd]# touch /var/log/vsftpd.log

4、创建虚拟用户名单文件,建立了一个虚拟用户名单文件,用来记录vsftpd虚拟用户的用户名和口令的数据文件,这里命名为v_user。为了目录清晰,这个名单文件就放置在/etc/vsftpd/vconf/下

[root@localhostvsftpd]#mkdir /etc/vsftpd/vconf/

[root@localhostvsftpd]#touch /etc/vsftpd/vconf/v_user

5、创建虚拟用户 ,编辑上面创建的虚拟用户名单文件v_user,在其中加入用户的用户名和口令信息。( 格式:奇数行为用户名,偶数行是密码) [root@localhostvsftpd]#vi /etc/vsftpd/vconf/v_user test //用户名 123123 //密码 6、创建用户的配置文件

用户配置文件的名字要和创建的“虚拟用户”名字对应 #touch /etc/vsftpd/vconf/test #vim /etc/vsftpd/vconf/test

guest_enable=yes //开启虚拟账号登录

local_root=/data/ftptest/ //虚拟用户的个人目录路径 anon_world_readable_only=NO anon_upload_enable=YES

anon_mkdir_write_enable=YES anon_other_write_enable=YES

local_max_rate=1048576 //本地用户的最大传输速度,单位是Byts/s

7、建立虚拟用户目录 如果不建立虚拟用户的个人目录,那么所有的虚拟用户登录后所在的目录都是同一个目录下 # mkdir /data/ftp/

# chmod 700 /data/ftp/ //如果不设置为700的权限,则会发生如下错误 “500 OOPS: cannot change directory:/data/ftp” 8、创建用户:test useradd test passwd test 输入账户密码

9、创建chroot_list

touch /etc/vsftpd/chroot_list,在里面添加用户,帐户输入一行一个,保存就可以了,如果不需要限制用户,也可以只建立一个空文件,或者将chroot_list_enable=NO

连接上传下载:

CMD命令行下访问: 1. 连接ftp服务器

格式:ftp [hostname| ip-address] a)在linux命令行下输入: ftp 192.168.1.1

b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。 ftp服务器连接失败,错误提示:

500 OOPS: cannot change directory:/home/******* 500 OOPS: child died 解决方法:

在终端输入命令:

setsebool ftpd_disable_trans 1 如果不能执行,提示“

Could not change active booleans: Invalid boolean” 可以在linux终端执行以下命令

setsebool allow_ftpd_full_access 1 setsebool allow_ftpd_use_cifs 1 setsebool allow_ftpd_use_nfs 1 setsebool ftp_home_dir 1

setsebool httpd_enable_ftp_server 1 setsebool tftp_anon_write 1 service iptables restart 2. 下载文件

下载文件通常用get和mget这两条命令。 a) get

格式:get [remote-file] [local-file] 将文件从远端主机中传送至本地主机中。 如要获取远程服务器上/usr/your/1.htm,则 ftp> get /usr/your/1.htm 1.htm (回车) b) mget

格式:mget [remote-files]

从远端主机接收一批文件至本地主机。

如要获取服务器上/usr/your/下的所有文件,则 ftp> cd /usr/your/ ftp> mget *.* (回车) 此时每下载一个文件,都会有提示。如果要除掉提示,则在mget *.* 命令前先执行:prompt off

注意:文件都下载到了linux主机的当前目录下。比如,在 /usr/my下运行的ftp命令,则文件都下载到了/usr/my下。 3.上传文件

a) put

格式:put local-file [remote-file] 将本地一个文件传送至远端主机中。

如要把本地的1.htm传送到远端主机/usr/your,并改名为2.htm ftp> put 1.htm /usr/your/2.htm (回车) b) mput

格式:mput local-files

将本地主机中一批文件传送至远端主机。

如要把本地当前目录下所有html文件上传到服务器/usr/your/ 下 ftp> cd /usr/your (回车) ftp> mput *.htm (回车)

注意:上传文件都来自于主机的当前目录下。比如,在 /usr/my下运行的ftp命令,则只有在/usr/my下的文件linux才会上传到服务器/usr/your 下。 4. 断开连接

bye:中断与服务器的连接。 ftp> bye (回车)

浏览器访问:

在浏览器中输入:ftp://192.168.124.130 ,回车输入用户名和密码,即可访问资源

如不能访问,对浏览器进行如下设置:

打开浏器---工具---internet 选项---高级去掉“使用被动FTP” 项

因篇幅问题不能全部显示,请点此查看更多更全内容