前言:本篇文章,集互联网好友的成果、本菜鸟实践摸索的结果,整理综合而得。本人在CSDN、百度、B站等各大网站进行了有限的搜索,都没有看到完全适配的答案。
如果你也是国产电脑的受“益”者,也在找寻FTP服务端安装与配置的方法,Linux系统的基础不扎实的话,那你找对地方了。本案例已在实机上稳定运行1个月,目前仍在稳定运行中。
欢迎交流,基于国产电脑的更多其他软件工具的安装配置,以期提升办公效率。
目录
一、电脑基本信息
银河麒麟版本:kylin V10 版权所有KylinOS
系统内核:
Linux4.4.131-20210120.kylin.desktop-generic-aarch64-with-Kylin-v10-juniper
CPU:Phytium,FT-2000/4(64位,4核)
注:用于核对对比操作环境的差异。只要咱们是同行一般没什么差异哈,不过得是银河麒麟系列系统。我单位还有统信系统的国产电脑(可能不太适用)
二、安装FTP
一般电脑都自带安装了。CTRL+ALT+T,打开终端。
1.输入vsftpd(尚未安装的结果)
显示以下信息,代表未安装。
按照提示,再输入sudo apt install vsftpd
输入用户密码(自己)
等待安装结束(一大串)——安装结束。
2.输入vsftpd(已安装的结果)
显示以下信息,代表这个程序已经有了(安装成功),但是缺个文件(下一步就进行文件配置)
不放心,可以再输入vsftpd -v
显示以下信息,我的版本就是3.0.3。代表成功安装了3.0.3的vsftpd
注:“程序名称”+“空格”+“-v”,可查询该程序的版本,基本通用所有程序。
三、配置FTP
(1)修改VSFTPD的配置文件(vsftpd.conf)
1.找到vsftpd.conf文件
一般在系统盘的etc文件夹中,
注:不同的操作系统会有一些差异,但是这个配置文件名称是一致的,若找不到,可以在系统盘中进行搜索,记住或者复制路径
2.修改vsftpd.conf文件
终端输入vim /etc/vsftpd.conf
该代码可以进入配置文件并进行修改(如果没有vim,可以使用vi)
3.修改vsftpd.conf文件的参数
蓝色内容为解释,方便他人理解。白色内容为程序的参数。
配置文件的初始参数为以下内容:(可以跳过)
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
经过自己的摸索(网上各类教程、解释)和需求(设置多个虚拟用户,给虚拟用户配置不同的权限,适用于局域网FTP),配置了以下自己的参数(一行行讲解),按i进入编辑状态。
listen=YES
listen_address=192.168.***.***
listen_port=5021
connect_from_port_20=YES
#启动IPV4地址的监听
#监听地址:自己电脑的IP地址
#监听端口:默认为21,建议修改至更高,提高他人找寻难度。
#确定数据端口为20。跟电路中弱电控制强电是一个逻辑。21端口是信息端口,接受连接、登录、离线等各种控制信息。20端口是数据端口,上传下载的文件就是通过这个端口传输。
local_enable=YES
write_enable=YES
local_umask=022
#允许本地用户登录,设置的多个虚拟用户需要集中寄托于一个本地用户。
#允许写入修改功能。
#本地用户的掩码:022对应本地用户创建新目录和文件的权限755。掩码等级 对应 权限等级(有特殊需求可自行对应修改),使用默认值022就行。
anon_upload_enable=NO
anon_mkdir_write_enable=NO
#匿名用户上传文件:拒绝
#匿名用户创建修改文件:拒绝。我们是虚拟用户模式,需要账号密码登录。
pasv_enable=YES
pasv_min_port=50210
pasv_max_port=50310
pasv_address=192.168.***.***
#启动被动(PASV)模式。经过网上查询有主动、被动两种模式,其中被动模式比较适用。被动模式:客户端拿着开放的端口找服务器。主动模式:服务器拿着开放端口找客户端。网上解释:因为大部分客户端都是在路由器后面,没有独立的公网IP地址,服务器想要主动连接客户端,难度太大,在现在真实的互联网环境里面几乎是不可能完成的任务。简单的说:一个单位的某人找另一个单位对接,很容易(一查地址就行),一个单位想找另个单位的某人,很麻烦(要先打通单位的座机,再拿着人名问手机号)
#端口号最低线多少。
#端口号最高线多少,之间就是客户端可以对接的
#被动模式中,客户端找服务器的地址。
dirmessage_enable=YES
#启动之后,初次登录FTP,系统会自动扫描目录、查找文件.message,并显示.message文件里面的信息,没有则就不显示,也没有什么影响。如果想搞个装逼的欢迎仪式,可以研究研究。
use_localtime=YES
#启用本地时间,一般都使用本地时间,有跨国业务的,有时差的地区,可以关注该设置参数。
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log
#启动日志功能,可以看到用户上传下载信息。
#启用标准日志格式。
#日志文件vsftpd.log的存放路径/var/log/vsftpd.log,爱存哪里就存哪里,可以自定义修改。
tcp_wrappers=YES
#开启IP的黑白名单。仅仅两个配置(允许、拒绝)文件:/etc/hosts.allow和/etc/hosts.deny
chown_uploads=NO
#NO=禁止上传文件更改宿主,YES=允许上传文件更改宿主
idle_session_timeout=360000
data_connection_timeout=360000
#超过多少秒,信号端口没有动静,踢掉。连上了什么都不做,占我服务器资源,踢掉。
#超过多少秒,数据端口没有动静,踢掉。下载下一半掉网了,连了一会不下载了,踢掉。
guest_enable=YES
guest_username=vur
virtual_use_local_privs=YES
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vconf
#启动虚拟用户模式。
#设置的虚拟用户集中映射在vur本地用户上。虚拟的灵魂需要一个实际的载体。
#虚拟用户和本地用户可以拥有同等权限。
#不允许虚拟用户离开自己的访问根目录。修改虚拟用户的配置文件可以满足不同的需求,比如权限不一样,访问目录不一样。
#在vsftpd目录中专门建立的一个vconf目录,用于专门存放各个虚拟用户相应配置文件。我们现在编辑的是主配置文件,后面编辑虚拟用户配置文件。
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#用户将被限制在其用户的主目录之内,不得跳出。
#启用名单通行制度。YES则启用白名单。NO则启动黑名单。chroot_local_user与chroot_list_enable的不同组合,可以带来四种的功能。1.名单上的用户受限制。2.名单上的用户不受限制。3.名单之外的用户受限制。4.名单之外的用户不受限制。
#vsftpd.chroot_list名单文件的存放路径/etc/vsftpd.chroot_list,同样是爱存哪就存哪,没有这个文件就必须创建一个同名文件(TXT格式就行,每行放一个用户名就行)。(我电脑的这个列表文件是空的,设置了个寂寞。但是不影响使用大的安全,因为设置了虚拟用户不能跳出FTP的根目录。)
ascii_upload_enable=YES
ascii_download_enable=YES
#允许以ASCII编码形式,上传文件。
#允许以ASCII编码形式,下载文件。
ls_recurse_enable=NO
#不允许使用“ls -R”这个命令。ls就是列出目录清单的命令,ls -R就是列出所有目录和所有文件清单的命令。对于大型的FTP服务器,里面有很多目录和很多文件。如果所有进来的人都要服务器列一遍所有目录和文件,到最后只下载一个文件,服务器这就很崩溃,你在玩我呢。
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
#验证机制
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
#以上三行参数没有改动,也没搞清楚实际用途,不影响现有需求。
utf8_filesystem=YES
#启用utf8编码模式。统一标准可以防止上传或下载文件的中文名称发生乱码。
(2)补充添加本地用户vur
在终端输入adduser vur,按提示输入相关信息(连续回车),即可创建本地用户vur。
注:因为虚拟用户需要集中映射到本地用户,所以需要创建本地用户vur。vur这个名字是常用的(可以改成自己喜欢的,但是配置文件中要同步修改),翻译过来也是虚拟virtual user。
(3)配置账号密码验证机制
1.建立FTP目录和账号密码文件
终端输入:cd /etc
#跳转到etc目录中
mkdir vsftpd
#创建名为vsftpd的目录
cd vsftpd
#跳转到vsftpd目录中
vim vur_list
#创建vur_list文件(txt),并打开编辑。名称定为vur_list是方便管理和记忆。vur是本地用户名,_list是列表文件的意思。
按i进入编辑模式。
第一行 为虚拟用户1的账号,第二行为虚拟用户1的密码。
第三行 为虚拟用户2的账号,第四行为虚拟用户2的密码。
以此类推
按ESC,退出编辑模式,输入:wq,进行保存并退出。
2.把TXT文件转db库文件
把vur_list文本文件转换为vur_list.db数据库文件
使用db_load命令,把账号密码文本文件(vur_list),用HASH算法生成FTP用户数据库文件(vur_list.db)
终端在vsftpd目录下,输入:
db_load -T -t hash -f vur_list.txt vur_list.db
没安装db_load 程序,没关系。
直接输入命令安装:apt install db-util
3.给数据库文件权限,防止其他用户查看密码。
用root身份,利用chmod命令,给vur_list.db赋权。
chmod 600 /etc/vsftpd/vur_list.db
600代表其他人不可读写
4.配置vsftpd的PAM认证文件。
在pam.d目录(我的在etc目录中)中,找到vsftpd,一般都有的。
vim /etc/pam.d/vsftpd
这个文件是自带的命令参数,现在需要把所有的命令行用#注释掉,然后输入以下参数。
auth required pam_userdb.so db=/etc/vsftpd/vur_list
account required pam_userdb.so db=/etc/vsftpd/vur_list
#你的vur_list.db在哪里,路径就连到哪里,连接时候需要把.db去掉,因为db=这里就规定了文件类型。启动了两种验证(auth、account)
auth:主要是接受用户名和密码,进而对该用户的密码进行认证,并负责设置用户的一些秘密信息。
account:主要是检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的限制等等。
:wq,保存并退出
(图片还没改过来,以文字为准)
(4)配置虚拟用户的conf配置文件
在/etc/vsftpd目录中,创建vconf目录。要与主配置文件其中一行的参数(user_config_dir=/etc/vsftpd/vconf)保持一致。这里创建配置用户配置文件的文件名必须与上面创建的用户名一致。
1.创建nyjbgs用户的配置文件
终端在/etc/vsftpd/vconf目录中,输入vim nyjbgs
#创建用户1的配置文件,并打开编辑
配置内容如下:
local_umask=022
write_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=No
local_root=/home/FTP
allow_writeable_chroot=YES
2.创建dayinji用户的配置文件
终端在/etc/vsftpd/vconf目录中,输入vim dayinji
#创建用户1的配置文件,并打开编辑
配置内容如下:
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=No
download_enable=NO
local_root=/home/FTP
allow_writeable_chroot=YES
(5)设置FTP文件的访问权限。
为保证其他用户可以访问,给予rwxr-xr-x权限:
chown vur:vur /home/FTP
chmod -R 777 /home/FTP
三位数字对应所有者、群组、其他
有意义的三种权限分别为:0、5、7
0(没有任何权限)
5(读和执行,基本权限)
7(读、写和执行,最高权限)
-R 表示对该目录及其子目录都进行赋权操作。
四、FTP其他相关
1.相关命令
systemctl enable vsftpd 开启
systemctl start vsftpd 启动
systemctl stop vsftpd 停止
systemctl restart vsftpd 重启动
systemctl status vsftpd 查询状态
netstat -antup | grep ftp 在端口中,查询FTP关键词,并以简要格式呈现。
2.开机自启动vsftpd
更改/etc/rc.local (常用)
vim /etc/rc.local
关键是找到rc.local文件在那,搜索就行,我这操作环境就在/etc目录下。中间的路径直接粘贴复制。
意思就是启动完所有该启动的之后,再执行以下代码命令。
在exit 0的上一行添加systemctl start vsftpd,保存退出。
重启之后,直接查询启动状态,显示活跃即设置成功。
3.服务器的防火墙
我们电脑没有安装这玩意。
4.固定IP
如果你的电脑是自动获取IP地址的,还需要手动设置下IP地址。
linux系统相对于WIN系统,给予了很大修改操作权限,但是兼容性需要自己去列情况。
就像进入人体一样,复杂的也有,简单的也有,改造的空间和潜力很大,可以学到的也很多,是可以调教成真正属于自己的操作系统。