如何在虚拟机上的Linux系统配置FTP服务,跟Windows建立连接传输文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在虚拟机上的Linux系统配置FTP服务,跟Windows建立连接传输文件相关的知识,希望对你有一定的参考价值。

我是新手,希望能给点详细的步骤

在虚拟机上的Linux系统配置FTP服务,跟Windows建立连接传输文件的具体操作步骤如下:

1、在电脑上下载并安装好小型FTP服务器(Quick Easy FTP Server) 软件,打开进行设置用户名,用于远程登录。

2、设置密码,再输一次确认密码。

3、设置想共享的文件夹。

4、设置各项权限,包括下载上传权限、下载上传速度限制等。

5、全部设置完毕后,点击“完成”。

6、完成之后,可以在软件里进行各项服务器配置,并且点左上角绿色按钮可以启动服务器,启动后,绿色按钮变暗,红色按钮变亮。

参考技术A 一. FTP 说明

linux 系统下常用的FTP 是vsftp, 即Very Security File Transfer Protocol. 还有一个是proftp(Profession ftp)。 我们这里也是简单的说明下vsftp的配置。

vsftp提供3种远程的登录方式:

(1)匿名登录方式

就是不需要用户名,密码。就能登录到服务器电脑里面

(2)本地用户方式

需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户。

(3)虚拟用户方式

同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有的(没有该用户帐号)

二. Vsftp的安装配置

2.1 安装

vsftp 的安装包,可以在安装里找到。 用yum 安装过程也很简单。
安装命令:yum install vsftpd

2.2. 相关命令

2.2.1 启动与关闭

[root@singledb ~]# service vsftpd start

Starting vsftpd for vsftpd: [ OK ]

[root@singledb ~]# service vsftpd stop

Shutting down vsftpd: [ OK ]

[root@singledb ~]# service vsftpd restart

Shutting down vsftpd: [FAILED]

Starting vsftpd for vsftpd: [ OK ]

[root@singledb ~]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd: [FAILED]

[root@singledb ~]# /etc/init.d/vsftpd stop

Shutting down vsftpd: [ OK ]

[root@singledb ~]# /etc/init.d/vsftpd restart

Shutting down vsftpd: [FAILED]

Starting vsftpd for vsftpd: [ OK ]

[root@singledb ~]# /etc/init.d/vsftpd status

vsftpd (pid 3931) is running...

[root@singledb ~]#

2.2.2. 其他命令

--查看vsftpd 启动状态

[root@singledb ~]# chkconfig --list vsftpd

vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@singledb ~]# chkconfig vsftpd on

[root@singledb ~]# chkconfig --list vsftpd

vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

这里看到,默认情况下从2到5设置为on了。2到5是多用户级别。 这个对应的是linux不同的运行级别。

我们也可以加level 选项来指定:

[root@singledb ~]# chkconfig --level 0 vsftpd on

[root@singledb ~]# chkconfig --list vsftpd

vsftpd 0:on 1:off 2:on 3:on 4:on 5:on 6:off

我们看到0已经设置为on了。

我们可以使用man chkconfig 来查看帮助:

--level levels

Specifies the run levels an operation should pertain to. It is given as a string of numbers from 0 to 7. For example, --level 35 specifies runlevels 3 and 5.

传统的init 定义了7个运行级(run level),每一个级别都代表系统应该补充运行的某些特定服务:

(1)0级是完全关闭系统的级别

(2)1级或者S级代表单用户模式

(3)2-5 级 是多用户级别

(4)6级 是 重新引导的级别

(1)查看防火墙

我一般都是把系统的防火墙关闭了。 因为开了会有很多限制。

[root@singledb ~]# /etc/init.d/iptables status

Table: nat

Chain PREROUTING (policy ACCEPT)

num target prot opt source destination

Chain POSTROUTING (policy ACCEPT)

num target prot opt source destination

1 MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

Table: filter

Chain INPUT (policy ACCEPT)

num target prot opt source destination

1 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53

2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53

3 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67

4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67

Chain FORWARD (policy ACCEPT)

num target prot opt source destination

1 ACCEPT all -- 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED

2 ACCEPT all -- 192.168.122.0/24 0.0.0.0/0

3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

4 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

You have new mail in /var/spool/mail/root

--添加开放21号端口:

[root@singledb ~]# /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT

[root@singledb ~]# /etc/init.d/iptables status

Table: nat

Chain PREROUTING (policy ACCEPT)

num target prot opt source destination

Chain POSTROUTING (policy ACCEPT)

num target prot opt source destination

1 MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

Table: filter

Chain INPUT (policy ACCEPT)

num target prot opt source destination

1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21

2 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53

3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53

4 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67

5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67

Chain FORWARD (policy ACCEPT)

num target prot opt source destination

1 ACCEPT all -- 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED

2 ACCEPT all -- 192.168.122.0/24 0.0.0.0/0

3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

4 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

--保存配置

[root@singledb ~]# /etc/rc.d/init.d/iptables save

Saving firewall rules to /etc/sysconfig/iptables: [ OK ]

--重启防火墙:

[root@singledb ~]# service iptables start|stop|restart

(2)查看关闭selinux

[root@singledb ~]# sestatus

SELinux status: disabled

我这里在安装操作系统的时候就关闭了selinux,如果没有关闭,可以修改如下文件来关闭:

[root@singledb ~]# cat /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - SELinux is fully disabled.

SELINUX=disabled

# SELINUXTYPE= type of policy in use. Possible values are:

# targeted - Only targeted network daemons are protected.

# strict - Full SELinux protection.

SELINUXTYPE=targeted

[root@singledb ~]#

保存退出并重启系统reboot

三. FTP配置文件

FTP 安装好之后,在/etc/vsftpd/目录下会有如下文件:

[root@singledb ~]# cd /etc/vsftpd/

[root@singledb vsftpd]# ls

ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh

[root@singledb vsftpd]#

vsftpd.conf: 主配置文件

ftpusers: 指定哪些用户不能访问FTP服务器

user_list: 指定的用户是否可以访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。

[root@singledb vsftpd]# cat 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.

我们过滤掉#的注释后,查看一下vsftpd.conf 文件:

[root@singledb ftp]# cat /etc/vsftpd/vsftpd.conf |grep -v '^#';

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=yes

tcp_wrappers=YES

至于这些参数的意思,在注释里有详细的说明。

我们可以在vsftpd.conf 文件设置如下参数:

(1)ftpd_banner=welcome to ftp service :设置连接服务器后的欢迎信息

(2)idle_session_timeout=60 :限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒)

(3)data_connection_timeout=120 :设置客户机在进行数据传输时,设置空闲的数据中断时间

(4)accept_timeout=60 设置在多长时间后自动建立连接

(5)connect_timeout=60 设置数据连接的最大激活时间,多长时间断开,为别人所使用;

(6)max_clients=200 指明服务器总的客户并发连接数为200

(7)max_per_ip=3 指明每个客户机的最大连接数为3

(8)local_max_rate=50000(50kbytes/sec) 本地用户最大传输速率限制

(9)anon_max_rate=30000匿名用户的最大传输速率限制

(10)pasv_min_port=端口

(11)pasv-max-prot=端口号 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口;

(12)listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接;

(13)listen_port=端口号 设置FTP工作的端口号,默认的为21

(14)chroot_local_user=YES 设置所有的本地用户可以chroot

(15)chroot_local_user=NO 设置指定用户能够chroot

(16)chroot_list_enable=YES

(17)chroot_list_file=/etc/vsftpd/chroot_list(只有/etc/vsftpd/chroot_list中的指定的用户才能执行 )

(18)local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录;

(19)chroot_local_user=yes/no 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user,不能利用cd命令向上转;只能向下;

(20)chroot_list_enable=yes/no 锁定指定文件中用户的主目录(部分),文件:/chroot_list_file=path 中指定;

(21)userlist_enable=YES/NO 是否加载用户列表文件;

(22)userlist_deny=YES 表示上面所加载的用户是否允许拒绝登录;

(23)userlist_file=/etc/vsftpd/user_list 列表文件

限制IP 访问FTP:

#vi /etc/hosts.allow

vsftpd:192.168.5.128:DENY 设置该IP地址不可以访问ftp服务

FTP 访问时间限制:

#cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/xinetd.d/vsftpd

#vi /etc/xinetd.d/vsftpd/

修改 disable = no

access_time = hour:min-hour:min (添加配置访问的时间限制(注:与vsftpd.conf中listen=NO相对应)

例: access_time = 8:30-11:30 17:30-21:30 表示只有这两个时间段可以访问ftp

ftp的配置基本上只有这些了。

默认情况下,ftp根目录是/var/ftp。 如果要修改这个目录位置,可以更改/etc/passwd 文件:

[root@singledb ftp]# cat /etc/passwd | grep ftp

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

创建一个用户来访问FTP,并指定该用户的FTP 目录:

[root@singledb u02]# useradd -d /u02/qsftp qs

[root@singledb u02]# passwd qs

Changing password for user qs.

New UNIX password:

BAD PASSWORD: it is WAY too short

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

这里指定的是/u02/qsftp 这个目录,要注意个目录的权限。

更改用户不能telnet,只能ftp:

usermod -s /sbin/nologin username //用户只能ftp,不能telnet

usermod -s /sbin/bash username //用户恢复正常

禁止用户ssh登陆

useradd username -s /bin/false

更改用户主目录:

usermod -d /bbb username //把用户的主目录定为/bbb

然后用qs这个用户就可以访问了。

以上只是一些简单的设置。 在用户权限这块还有很多内容可以研究。 比如特定用户的特定权限。 安全性等。 以后在研究了。
参考技术B 1. 首先保证网络畅通(假设win: 192.168.1.1 linux: 192.168.1.2)
2. 安装VSFTPD软件,(一般情况下都会安装好,可以通过rpm -qa |grep vsftpd来查看)
3. 启动vsftpd服务,service vsftpd start ,出现了一个OK,就算是启动成功了。
4. 在LINUX的字符界面测试一下服务器是否正常:
输入ftp localhost,回车如果成功会提示让你输入用户名,输入ftp,回车,提示输入密码,直接回车,如果出现了ftp>,此时继续输入dir,如果看到了一个pub的目录,说明服务器没有问题,正常。
5. 转到windows上测试,打开IE浏览器输入ftp://192.168.1.2 ,如果可以看到pub文件夹,说明好了,如果不能提示无法访问,有可能是linux的防火墙和SELINUX机制导致的。
解决办法:
A: 分别执行: iptables -F
iptables -X
service iptables save
B. 编辑/etc/sysconfig/selinux,会看到一个selinux=enable,如果是enable,改成disabled,然后一定要重启linux系统,这样应该就没有问题了。追问

你说假设win: 192.168.1.1 linux: 192.168.1.2,这个Linux IP地址是不是要再设呢,还是直接用ifconfig 查看,我查出来是127.0.0.1,但是不行,还有你说的这个B方案,我找不到selinux这个,用字符命令怎么改,顺便给我下 命令好吗

追答

LINUX的IP地址需要配置的,你这里只能看到LO,要么是你没有网卡,要么就是网卡没有配置IP地址。配置IP地址如下:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
打开之后里面写:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.2
NETMASK=255.255.255.0
注意大小写,并且要顶格。
写完之后保存退出,执行service network restart

本回答被提问者采纳
参考技术C 让你看的不是LO口的IP 是eth0或者eth1的IP 那个才是网卡IP
selinux可以通过getenforce查看 看值是什么 如果说是permissive或者disabled就没事 不是的话想临时改动的话 输入setenforce 0即可
参考技术D 无论虚拟和真是机器,对于ftp服务来说,没区别,ftp服务在Linux上,有很多软件,先说vsftp吧。
最简单的办法,
打命令命令: service vsftp start
或者:/etc/init.d/vsftp start
或者:运行setup,在服务那里,开启vsftp。
具体权限,可读写,是否限制在根目录等,你要参考具体你开启的vsftp服务器使用手册。

Linux Centos 通过虚拟用户访问FTP的配置

Linux Centos 通过虚拟用户访问FTP的配置

实验需求:

让下面4个虚拟用户使用系统用户ftpvu的权限来连接到Linux FTP服务器,并确保都锁定在

自己的虚拟用户目录,不能切换到其他目录。 ftp1-3的带宽速率限制在500KB,davidge用户不限制带宽。

 

 

系统环境:

[root@cent7-184 ~]# uname -r

3.10.0-229.el7.x86_64

[root@cent7-184 ~]# cat /etc/redhat-release

CentOS Linux release 7.5.1804 (Core)

 

还需要先关闭防火墙和selinux。

 

先yum安装vsftpd:

yum -y install vsftpd

 

查询是否正确安装vsftpd:

[root@cent7-184 ~]# rpm -qa  vsftpd     

vsftpd-3.0.2-25.el7.x86_64

 

之后安装PAM(用于用户认证)和DB4(用于生成虚拟用户的用户名密码的db文件)

 yum -y install pam pam-devel db4 db-devel db4-utils db4-tcl

 

 

[root@cent7-184 ~]# rpm -qa  pam pam-devel db4 db-devel db4-utils db4-tcl               

pam-devel-1.1.8-22.el7.x86_64

pam-1.1.8-22.el7.i686

pam-1.1.8-22.el7.x86_64

 

创建用于虚拟用户的系统用户ftpvu,并禁止通过shell登陆,不创建家目录。

[root@cent7-184 ~]# useradd ftpvu -M -s /sbin/nologin

[root@cent7-184 ~]# id ftpvu

uid=8890(ftpvu) gid=8890(ftpvu) groups=8890(ftpvu)

 

创建虚拟用户信息的文件:

直接在命令行执行即可(奇数行是用户名,偶数行是密码)

也可以自己通过vi, vim来复制下面的用户信息来手动创建。

cat >>/etc/vsftpd/virtusers <<EOF
ftp1
123456
ftp2
123456
ftp3
123456
davidge
123456
EOF

 

 

 

生成虚拟用户认证的db文件

 

db_load -T -t hash -f /etc/vsftpd/virtusers  /etc/vsftpd/virtusers.db

 

 

如果新增用户后需要重新执行上面的db_load命令来重新生成加密用户信息。

 

配置pam验证的配置文件:

 

cat  >/etc/pam.d/vsftpd <<EOF

#%PAM-1.0

auth     sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtusers

account  sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtusers

EOF

 

[root@cent7-184 vsftpd]# cat /etc/pam.d/vsftpd

#%PAM-1.0

auth     sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtusers

account  sufficient /lib64/security/pam_userdb.so

 

创建虚拟用户的存储路径并修改目录权限为755,owner为: ftpvu

 

[root@cent7-184 ~]# mkdir -p /data/ftp/{ftp1,ftp2,ftp3}

[root@cent7-184 ~]# mkdir -p /data/ftp/davidge

[root@cent7-184 ~]# chmod -R 755 /data/ftp/

[root@cent7-184 ~]# chown -R ftpvu.  /data/ftp/

 

[root@cent7-184 ~]# ls -l /data/ftp/

total 0

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 davidge

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 ftp1

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 ftp2

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 ftp3

 

给ftp的用户指定家目录:

[root@cent7-184 ftp1]# usermod -d /data/ftp/ ftpvu

[root@cent7-184 ftp1]# grep ftp /etc/passwd

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

ftpvu:x:8890:8890::/data/ftp/:/sbin/nologin

 

给每个用户创建虚拟用户个人配置文件:

 

先创建配置文件的根目录:

 mkdir /etc/vsftpd/vconf

 

shell命令行直接创建ftp1用户的配置文件:

cat >>/etc/vsftpd/vconf/ftp1<<EOF
local_root=/data/ftp/ftp1
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

 

 

创建ftp2用户的配置文件

cat >>/etc/vsftpd/vconf/ftp2<<EOF
local_root=/data/ftp/ftp2
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

 

创建ftp3用户的配置文件

cat >>/etc/vsftpd/vconf/ftp3<<EOF
local_root=/data/ftp/ftp3
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

 

创建davidge用户的配置文件

cat >>/etc/vsftpd/vconf/davidge<<EOF
local_root=/data/ftp/davidge
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
EOF

 

完成后通过cat查询配置文件信息:

 

 

FTP配置文件重要参数说明:

anonymous_enable=NO    #禁用匿名用户

dual_log_enable=yes        # 配置双重日志。

xferlog_file=/var/log/xferlog   #访问日志的文件路径

guest_enable=YES                #启用虚拟用户

guest_username=ftpvu      #指定虚拟用户的系统用户名

virtual_use_local_privs=YES  #虚拟用户使用本地用户的权限

user_config_dir=/etc/vsftpd/vconf    #虚拟用户配置文件目录

allow_writeable_chroot=YES     ##可写(可上传)

chroot_local_user=YES     #本地用户禁锢在宿主目录中

 

把下面的配置文件追加到vsftpd.conf里面,并禁用匿名用户,同时开启ftp的日志:

 

通过sed禁用匿名用户

sed -i \'s@anonymous_enable=YES@anonymous_enable=NO@g\' /etc/vsftpd/vsftpd.conf 

追加配置文件新到vsftpd.conf

cat >>/etc/vsftpd/vsftpd.conf <<EOF
dual_log_enable=yes
xferlog_file=/var/log/xferlog
guest_enable=YES
guest_username=ftpvu
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf
allow_writeable_chroot=YES
anon_other_write_enable=YES
chroot_local_user=YES
EOF

 

最后生效的配置文件内容:

[root@cent7-184 vsftpd]# grep \'^[a-Z]\' /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

dual_log_enable=yes

xferlog_enable=YES

xferlog_file=/var/log/xferlog

guest_enable=YES

guest_username=ftpvu

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vconf

allow_writeable_chroot=YES

anon_other_write_enable=YES

 

[root@cent7-184 ftp1]# systemctl restart  vsftpd.service  

[root@cent7-184 ftp1]# lsof -i :21

COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME

vsftpd  20846 root    4u  IPv6 33721328      0t0  TCP *:ftp (LISTEN)

[root@cent7-184 ftp1]# netstat -lntup|grep ftp

tcp6       0      0 :::21                   :::*                    LISTEN      20846/vsftpd

 

登陆测试和日志:

 

 

 

 

 

使用 davidge 用户传输的时候不限制速度:

 

 

 

只能在自己的虚拟用户目录下操作,不可以切换到其他目录,否则提示550切换目录失败

 

 

添加新用户的方法:

 

cat >>/etc/vsftpd/virtusers <<EOF
ftp10
123456
EOF

 

db_load -T -t hash -f /etc/vsftpd/virtusers  /etc/vsftpd/virtusers.db

 

mkdir -p /data/ftp/ftp10

chown -R ftpvu.  /data/ftp/

 

cat >>/etc/vsftpd/vconf/ftp10<<EOF
local_root=/data/ftp/ftp10
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

 

systemctl restart  vsftpd.service  

lsof -i :21

 

 上面几条命令的截图:

 

验证登陆和速率:

 

 

错误提示信息和解决办法:

 

1. 500 OOPS:

 

由于建立的本地用户没有指定家目录,需要通过usermod来指定定义的家目录。

500 OOPS: cannot change directory:/home/ftpvu

Login failed.

 

[root@cent7-184 ftp1]# usermod -d /data/ftp/ ftpvu

[root@cent7-184 ftp1]# grep ftp /etc/passwd

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

ftpvu:x:8890:8890::/data/ftp/:/sbin/nologin

 

2. 550 Failed:

 

ftp> cd /var

550 Failed to change directory.

 

550 Failed- 客户端没有切换目录的权限,由于限制了目录只能访问自己的目录。

chroot_local_user=YES

如果想让授权的用访问其他目录可以配置下面的2行:

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

 

并把需要切换目录的用户放入list文件: /etc/vsftpd/vsftpd.chroot_list

 

以上是关于如何在虚拟机上的Linux系统配置FTP服务,跟Windows建立连接传输文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在Windows Azure虚拟机上配置外网能访问的FTP服务器

Azure虚拟机上配置FTP服务器FileZilla

如何将Windows中文件拷贝到装在虚拟机上的Linux系统中?

在虚拟机上的FTP FTP访问模式(虚拟用户模式)

如何让本机上的windows跟虚拟机上的linux连通?

Linux的ftp和www的服务器在虚拟机上的搭建