Linux下的vsftpd简介及配置教程 (vsftpd for linux)

在现代IT领域,操作系统一直是一个很重要的关键。尤其是在网络领域,使用合适的操作系统能够极大地增强网络性能。对于运行在Linux操作系统上的FTP服务器来说,vsftpd是更好的选择之一。本文将会对vsftpd进行简介,并且提供如何在Linux系统下配置它的详细教程。

一、vsftpd的简介

Vsftpd是Linux中很流行的FTP服务器程序,全称是Very Secure FTP daemon,是一个轻巧又小巧的FTP服务器软件。Vsftpd有着非常出色的安全性、速度以及稳定性。它还支持IPv6以及SSL,因此可以保证用户的数据传输是安全的。这些特性将FTP服务提高到了极致,成为了更受欢迎的FTP服务器之一。

二、vsftpd的安装

在Linux系统中,使用apt-get或yum指令可以很方便地安装vsftpd。打开终端或控制台输入以下命令,安装该程序:

“`

sudo apt-get install vsftpd

“`

或:

“`

sudo yum install vsftpd

“`

接下来,我们就可以开始配置FTP服务器了。

三、vsftpd的配置

在开始配置vsftpd前,请确保已经正确安装FTP服务器,启动FTP服务并在防火墙中添加FTP端口,而不阻止其通讯。

1.基本配置

我们需要编辑主配置文件,以更好地开发FTP服务器的功能。输入以下命令来编辑该文件:

“`

sudo nano /etc/vsftpd.conf

“`

下面是一些在控制文件中修改的重要参数:

匿名FTP访问:

如果需要允许匿名FTP访问,请确保该参数设置为YES,命令如下:

“`

anonymous_enable=YES

“`

并设置匿名FTP用户所在的根目录:

“`

anon_root=/home/ftp/pub

“`

取消匿名用户访问:

如果想要禁止匿名FTP访问,可以将该参数设置为NO:

“`

anonymous_enable=NO

“`

开启本地用户访问:

如果要允许本地用户访问FTP服务器,可以将以下参数更改为YES:

“`

local_enable=YES

“`

在ftp用户现有登录权限的基础上,打开FTP服务器上传文件的权限:

“`

write_enable=YES

“`

开启FTP服务器的本地模式:

默认情况下,FTP服务器运行在独立模式中。该模式下,每个客户端会打开一个FTP会话。如果需要将vsftpd 限制为本地模式,可以将该参数更改为YES:

“`

listen=YES

“`

或:

“`

listen=127.0.0.1

“`

默认的监听端口为21端口,如果需要更改该选项,请更改如下:

“`

listen_port=6080

“`

2. 虚拟用户与目录

如果我们使用Linux系统中默认的FTP功能,那么我们需要使用系统用户才能登录FTP服务器。在vsftpd中,我们可以使用虚拟文件夹更加方便地管理FTP用户,而不必依赖于系统用户。

使用以下命令创建用户信息文件(vsftpd 用户数据库):

“`

sudo touch /etc/vsftpd/vusers.passwd

“`

接下来,使用以下命令编辑该文件,添加虚拟用户:

“`

sudo nano /etc/vsftpd/vusers.passwd

“`

在该文件中添加虚拟用户信息,每个用户之间需要使用冒号分隔,例如:

“`

user1:password1:1001:1001:User1:/home/vsftp/user1/:/bin/bash

user2:password2:1002:1001:User2:/home/vsftp/user2/:/bin/bash

“`

在上面的例子中,每个虚拟用户的信息包括:用户名、密码、用户ID、用户组ID、主文件夹路径、用户所用的Shell。

在接下来的配置中,使用虚拟用户的信息就会变得十分重要。

接下来,我们需要创建一个虚拟用户目录。使用以下命令创建相应的文件夹:

“`

sudo mkdir -p /home/vsftp/

sudo mkdir /home/vsftp/user1

sudo mkdir /home/vsftp/user2

“`

使用以下命令修改其中的权限,确保虚拟用户的权限被设置为可写:

“`

sudo chmod -R 777 /home/vsftp/

“`

在目录已经创建的情况下,我们需要编辑 vsftpd 的配置文件,以便可以将虚拟用户与虚拟目录进行关联。

在主配置文件中,我们需要添加如下内容,启用虚拟用户:

“`

guest_enable=YES

guest_username=vsftpd

user_config_dir=/etc/vsftpd/vsftpd_vusers_config_dir/

virtual_use_local_privs=YES

“`

3. FTP口令文件的创建

虚拟用户口令文件(db文件)可以通过 ftpasswd命令来创建,这是专门用于创建于 vsftpd 兼容的虚拟用户口令文件。

使用以下命令创建 FTP 口令文件:

“`

/usr/bin/htpasswd -cd /etc/vsftpd/ftpd.passwd user1

sudo /usr/bin/htpasswd -d /etc/vsftpd/ftpd.passwd user2

“`

如果还需要添加其他虚拟用户,可以使用‘htpasswd’命令将他们添加进去。要确保该文件的读写权限设置为正确的用户,将机会前面的权限重置为root,以防止恶意用户染入这些文件:

“`

sudo chown root:root /etc/vsftpd/ftpd.passwd

sudo chmod 600 /etc/vsftpd/ftpd.passwd

“`

4.虚拟用户的配置

虚拟用户的信息和目录存放在单独的配置文件中。因为 vsftpd 并没有默认的配置文件,所以我们需要创建一个文件夹来存放 FTP 配置文件。

使用以下命令创建该文件夹:

“`

sudo mkdir /etc/vsftpd/vsftpd_vusers_config_dir

“`

同样,我们需要更改该目录下文件的权限,以防止其他用户修改配置文件或目录:

“`

sudo chmod -R 700 /etc/vsftpd/vsftpd_vusers_config_dir

sudo chown -R root:root /etc/vsftpd/vsftpd_vusers_config_dir

“`

现在创建用户配置文件,文件名应与虚拟 FTP 用户名称对应,例如:

“`

sudo nano /etc/vsftpd/vsftpd_vusers_config_dir/user1

“`

下面是可选的配置参数,这里我们给出其中的几个:

“`

local_root=/home/vsftp/user1/

write_enable=YES

local_umask=022

“`

使用以上配置,而非提供的默认配置,可以更好地安全保障和其他选择。

5.启动FTP服务器并进行测试

我们需要启动FTP服务器并测试它的运行情况。在终端中输入以下命令即可启动FTP服务器:

“`

sudo systemctl start vsftpd

“`

测试 FTP 服务器的运行情况:

“`

ftp 127.0.0.1

“`

如果所有步骤都成功,你将能够连接到FTP 服务器。使用用户名以及密码只登录到虚拟用户帐户应该是缺省FTP 服务器的结果。

在 Linux 环境下,事实证明 vsftpd 是强大又稳定的 FTP 服务器程序,而且完全免费。

在这篇文章中,我们简介了vsftpd服务器的基本特性,并提供了如何在Linux系统下配置FTP服务器的详细教程。使用这些知识,您应该可以轻松地创建一个适合自己的强大FTP服务器。

相关问题拓展阅读:

利用ftp登录Linux系统报错!怎么解决,求解!

你这是连接的sftp不是ftp,两者不一样,自己确认一下。

如果你确定是要连卖扰猜接sftp,那么上面的错误信息说明你的sftp没有随sshd正常启动。

你需要看一下你的/李察etc/ssh/sshd_config文件中是不是有下面这句话

Subsystem sftp /usr/lib/openssh/sftp-server,中型并且没有被注释掉,然后重启sshd服务。

然后用sftp的客户端去连接试试看。

配置ftp服务了吗?配置完后,还要开启这个服务。

以下内容为复制的:

/etc/vsftpd/vsftpd.conf 主配置文件

/etc/vsftpd.ftpusers 指定哪些用户不能访问FTP服务器

/etc/vsftpd.user_list 可以根据vsftpd.conf文件中的设置来决定该文件中指定的用户是否可以访问ftp服务器

/etc/rc.d/init.d/vsftpd vsftpd的启动脚本文件

2.修改/etc/vsftpd/vsftpd.conf文件

#vi /etc/vsftpd/vsftpd.conf

功能:设置FTP服务器相关选项

文件格式:#说明语句

...........

...........

配置选项

...........

...........

说明:在vsftpd. Conf文件中主要由各种配置选项组成,具体以分为以下类别:

2.1连接选项

2.1.1.监听地址与控制端口

listen_address=ip address

定义了在主机的哪个IP地址上监听FTP请求(应用于独立启动方式的多IP主机默认值为无)

listen_port=port_value

指定FTP服务器监听的端口号(控制端口),默认值为21。此选项在standalone模式下生效

2.1.2.FTP模式与数据端口

port_enable=YES|NO

指定数据连接时模式,默认值为YES(PORT模式,NO为PASV模式)

connect_from_port_20=YES|NO

控制以PORT模式进行数据传输时是否使用20端口(ftp-data),(YES使用,NO不使用,默认值为NO)

ftp_data_port=port number

设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT FTP模式。

port_promiscuous=YES|NO

默认值为NO。为YES时,取消PORT安全检查。该检查确保外出的数据只能连接到客户端上。小心打开此选项。

pasv_enable=YES|NO

YES,允许数据传输时使用PASV模式。NO,不允许使用PASV模式。默认值为YES。

pasv_min_port=port number

pasv_max_port=port number

设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表 示亮搭灶任意。默认值为0。把端口范围设在比较高的一段范围内,比如,将有助于安全性的提高

pasv_promiscuous=YES|NO

此选项激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO

pasv_address= ip address

此选项为一个数字IP地址,作为PASV命令的响应。默认值为none,即地址是从呼入的连接套接字(incoming connectd socket)中获取。

2.1.3.ASCII模式

ascii_upload_enable=YES|NO

控制是否允许使用ascii模式上传文件,YES允许,NO不允许,默认为NO

ascii_download_enable=YES|NO

控制是否允许使用ascii模式下载文件,YES允许,NO不允许,默认为NO。

2.2.性能与负载控制

2.2.1.超时选项

idle_session_timeout= numerical value

空闲(发呆)用敬扮户会话的超时时间,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线。单位为秒,默认值为300。

data_connection_timeout= numerical value

空闲的数据连接的超时时间。默认值为300 秒。

accept_timeout=numerical value

接受建立联机的超时设定,单位为秒。默认值为60。

connect_timeout=numerical value

响应PORT方式的数据联机的超时设定,单位为秒。默认值为60。以上两个选项针对客户端的,将使客户端空闲1分钟后自动中断连枝早接,并在中断1分钟后自动激活连接

2.2.2.负载控制

max_clients=numerical value

此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了FTP服务器更大的并发连接数,当超过此连接数时,服务器拒绝客户端连接。默认值为0,表示不限更大连接数。

max_per_ip=numerical value

此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义每个IP地址更大的并发连接数目。超过这个数目将会拒绝连接。此选项的设置将影响到象网际快车这类的多进程下载软件。默认值为0,表示不限制。

anon_max_rate=value

设定匿名用户的更大数据传输速度value,以Bytes/s为单位。默认无。

local_max_rate=value

设定用户的更大数据传输速度value,以Bytes/s为单位。默认无。此选项对所有的用户都生效

2.3.用户选项

2.3.1.匿名用户

anonymous_enable=YES|NO

控制是否允许匿名用户登录,YES允许,NO不允许,默认值为YES。

ftp_username= username

匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp

no_anon_password=YES|NO

控制匿名用户登入时是否需要密码,YES不需要,NO需要。默认值为NO。

deny_email_enable=YES|NO

此参数默认值为NO。当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。即,当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒绝。显然,这对于阻击某些Dos攻击有效。当此参数生效时,需追加banned_email_file参数

banned_email_file=/etc/vsftpd.banned_emails

指定包含被拒绝的e-mail地址的文件,默认文件为/etc/vsftpd.banned_emails。

anon_root=path

设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/。

anon_world_readable_only=YES|NO

控制是否只允许匿名用户下载可阅读文档。YES,只允许匿名用户下载可阅读的文件。NO,允许匿名用户浏览整个服务器的文件系统。默认值为YES。

anon_upload_enable=YES|NO

控制是否允许匿名用户上传文件,YES允许,NO不允许,默认是不设值,即为NO。除了这个参数外,匿名用户要能上传文件,还需要两个条件:一,write_enable参数为YES;二,在文件系统上,FTP匿名用户对某个目录有写权限。

anon_mkdir_write_enable=YES|NO

控制是否允许匿名用户创建新目录,YES允许,NO不允许,默认是不设值,即为NO。当然在文件系统上,FTP匿名用户必需对新目录的上层目录拥有写权限。

anon_other_write_enable=YES|NO

控制匿名用户是否拥有除了上传和新建目录之外的其他权限,如删除、更名等。YES拥有,NO不拥有,默认值为NO。

chown_uploads=YES|NO

是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。此选项默认值为NO。

chown_username=whoever

指定拥有匿名用户上传文件所有权的用户。此参数与chown_uploads联用。不推荐使用root用户。

2.3.2.本地用户

local_enable=YES|NO

控制vsftpd所在的系统的用户是否可以登录vsftpd。默认值为YES。

local_root=

定义所有本地用户的根目录。当本地用户登入时,将被更换到此目录下。默认值为无。

user_config_dir=

定义用户个人配置文件所在的目录。用户的个人配置文件为该目录下的同名文件。个人配置文件的格式与vsftpd.conf格式相同。例如定义user_config_dir=/etc/vsftpd/userconf,并且主机上有用户xiaowang,lisi,那我们可以在user_config_dir的目录新增名为xiaowang、lisi的两个文件。当用户lisi 登入时,VSFTPD则会读取user_config_dir下lisi这个文件中的设定值,应用于用户lisi。默认值为无。

2.3.3.虚拟用户

guest_enable=YES|NO

若是启动这项功能,所有的非匿名登入者都视为guest。默认值为关闭

guest_username=

定义VSFTPD的guest用户在系统中的用户名。默认值为ftp

2.4.安全措施

2.4.1.用户登录控制

pam_service_name=vsftpd

指出VSFTPD进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件是/etc/pam.d/vsftpd。

/etc/vsftpd.ftpusers

VSFTPD禁止列在此文件中的用户登录FTP服务器。这个机制是在/etc/pam.d/vsftpd中默认设置的。

userlist_enable=YES|NO

此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,VSFTPD查到该用户名在列表,VSFTPD就直接禁止掉该用户,不会再进行询问密码等后续步聚。默认值为NO。

userlist_file=/etc/vsftpd.user_list

指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list。

userlist_deny=YES|NO

决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示。NO,只允许在文件中的用户登录FTP服务器。

tcp_wrappers=YES|NO

在VSFTPD中使用TCP_Wrappers远程访问控制机制,默认值为YES。

2.4.2.目录访问控制

chroot_list_enable=YES|NO

锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。

chroot_list_file=/etc/vsftpd/chroot_list

指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。通常该文件是/etc/vsftpd/chroot_list。此选项默认不设置。

chroot_local_users=YES|NO

将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、shell访问等权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认值为NO。

passwd_chroot_enable =YES|NO

当此选项激活时,与chroot_local_user选项配合,chroot()容器的位置可以在每个用户的基础上指定。每个用户的容器来源于/etc/passwd中每个用户的自家目录字段。默认值为NO。

2.4.3.文件操作控制

hide_ids=YES|NO

是否隐藏文件的所有者和组信息。YES,当用户使用”ls -al”之类的指令时,在目录列表中所有文件的拥有者和组信息都显示为ftp。默认值为NO。

ls_recurse_enable=YES|NO

YES,允许使用”ls -R” 指令。这个选项有一个小的安全风险,因为在一个大型FTP站点的根目录下使用”ls -R”会消耗大量系统资源。默认值为NO。

write_enable=YES|NO

控制是否允许使用任何可以修改文件系统的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。默认值为NO,不过自带的简单配置文件中打开了该选项。

secure_chroot_dir=

这选项指向一个空目录,并且ftp用户对此目录无写权限。当vsftpd不需要访问文件系统时,这个目录将被作为一个安全的容器,用户将被限制在此目录中。默认目录为/usr/share/empty。

2.4.4.新增文件权限设定

anon_umask=

匿名用户新增文件的umask 数值。默认值为077。

file_open_mode=

上传档案的权限,与chmod 所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。默认值为0666。

local_umask=

本地用户新增档案时的umask 数值。默认值为077。不过,其他大多数的FTP服务器都是使用022。如果您的用户希望的话,可以修改为022。在自带的配置文件中此项就设为了022。

2.5.提示信息

ftpd_banner=login banner string

此参数定义了login banner string(登录欢迎语字符串)。用户可以自行修改。预设值为无。当ftpd_banner设置后,将取代系统原来的欢迎词。

banner_file=/directory/vsftpd_banner_file

此项指定一个文本文件,当使用者登入时,会显示此该文件的内容,通常为欢迎话语或是说明。默认值为无。与ftpd_banner相比,banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file选项将取代ftpd_banner选项。

dirmessage_enable=YES|NO

控制是否启用目录提示信息功能。YES启用,NO不启用,默认值为YES。此功能启用后,当用户进入某一个目录时,会检查该目录下是否有message_file选项所指定的文档,若是有,则会出现此文档的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。

message_file=

此选项,仅在dirmessage_enable选项激活方生效。默认值为.message。

1检查Linux系统上FTP是否成功安装

# service vsftpd status

vsftpd is stopped

#提示vsftpd服务停止,表明已安装但未开启该服务

2检查Linux系统上FTP服务是没埋明否开启 

# service vsftpd start

Starting vsftpd for vsftpd:液中

再次查看发现已经处于启动状态:

# service vsftpd status

vsftpd (pid 4510) is running…

3.修改root用户可以使用ftp

#默认不能用root用户枯告使用ftp,如下所示:

C:\Users\thinkpad>ftp 192.168.141.123

连接到 192.168.141.123。

220 (vsFTPd 1.1.3)

用户(192.168.141.123:(none)): root

530 Permission denied.

登录失败。

#修改/etc/vsftpd.ftpusers文件,该文件记录了不能使用ftp登录的用户,将root用户注释

关于vsftpd for linux的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Linux下的vsftpd简介及配置教程 (vsftpd for linux)