合集 – Linux网络(7)
1.多网卡设置—-bond05-042.自动配置网络—-DHCP05-043.域名解析实际应用 —-DNS05-044.SSH协议实际应用05-045.建立yum仓库03-05
6.文件传输协议—-FTP05-057.PXE批量安装服务器05-06
收起
工作原理介绍
文件传输协议:File Transfer Protocol 早期的三个应用级协议之一,基于C/S结构
数据传输格式:二进制(默认)和文本
双通道协议:命令和数据连接 21 命令端口(权限,认证) 20数据端口(真实传数据)
可以登录用户
1匿名用户:anonymous 或者 ftp
2系统用户:在 /etc/passwd 中
3虚拟用户:只可以用来登录ftp
两种模式:从服务器角度
主动(PORT style):服务器主动连接客户端
命令(控制):客户端:随机端口号 —> 服务器:21/tcp
数据:客户端:随机随机端口号 <—服务器:20/tcp
[root@rule ftp]# ss -natp |grep vsftpd
LISTEN 0 32 :::21 :::* users:(("vsftpd",pid=1070,fd=4))
ESTAB 0 3950144 ::ffff:172.16.87.40:20 ::ffff:172.16.87.10:56395 users:(("vsftpd",pid=2425,fd=7))
ESTAB 0 0 ::ffff:172.16.87.40:21 ::ffff:172.16.87.10:35866 users:(("vsftpd",pid=2425,fd=2),("vsftpd",pid=2425,fd=1),("vsftpd",pid=2425,fd=0),("vsftpd",pid=2423,fd=2),("vsftpd",pid=2423,fd=1),("vsftpd",pid=2423,fd=0))
被动(PASV style):服务器被动等待客户端连接
命令(控制):客户端:随机端口号 —> 服务器:21/tcp
数据:客户端:随机端口号 —> 服务器:随机端口号/tcp
#Linux默认被动模式
[root@rule ftp]# ss -natp |grep vsftpd
LISTEN 0 1 ::ffff:172.16.87.40:54639 :::* users:(("vsftpd",pid=2465,fd=6))
LISTEN 0 32 :::21 :::* users:(("vsftpd",pid=1070,fd=4))
ESTAB 0 1689368 ::ffff:172.16.87.40:54639 ::ffff:172.16.87.10:36630 users:(("vsftpd",pid=2467,fd=7))
ESTAB 0 0 ::ffff:172.16.87.40:21 ::ffff:172.16.87.10:35870 users:(("vsftpd",pid=2467,fd=2),("vsftpd",pid=2467,fd=1),("vsftpd",pid=2467,fd=0),("vsftpd",pid=2465,fd=2),("vsftpd",pid=2465,fd=1),("vsftpd",pid=2465,fd=0))
基础操作
安装服务端
[root@rule ~]# yum install vsftpd -y ----安装ftp服务器
[root@rule ~]# systemctl start vsftpd ----开启服务
客户端连接服务端
[root@saber ~]# ftp 172.16.87.40
# ftp客户端工具 服务端地址
Connected to 172.16.87.40 (172.16.87.40).
220 (vsFTPd 3.0.2)
Name (172.16.87.40:root): ftp ----此处填写用户名,默认使用ftp或者匿名用户
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
登录成功
#可以使用help 查看帮助
ftp> help
#可以使用 ls 查看文件列表
ftp> ls
227 Entering Passive Mode (172,16,87,40,33,13). ----Passive消极被动默认使用被动模式
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 6 Jun 09 2021 pub
226 Directory send OK.
#可以人为指定被动主动
ftp> passive
Passive mode off. ----关闭被动变成主动
#路径
ftp> pwd
257 "/" ----这个/为服务器的/var/ftp/
#下载
ftp> get bigfile
local: bigfile remote: bigfile
227 Entering Passive Mode (172,16,87,40,244,76).
150 Opening BINARY mode data connection for bigfile (1073741824 bytes).
226 Transfer complete.
1073741824 bytes received in 3.35 secs (320466.78 Kbytes/sec)
vsftpd服务常见配置
修改默认命令端口
listen_port=2121 默认值为21
例子:
服务端:修改 默认命令端口号
[root@rule pub]#vim /etc/vsftpd/vsftpd.conf
#随便一行插入
listen_port=9527
[root@rule pub]#systemctl restart vsftpd
#重启服务
[root@rule pub]#ss -natp |grep vsftpd
#查看端口
客户端:连接时需要指明 端口号
[root@rule ~]#ftp 172.16.87.40 9527
#不需要带-p无效
主动模式端口
connect_from_port_20=YES 主动模式端口为20
ftp_data_port=20 (默认) 指定主动模式的端口
被动模式端口
pasv_min_port=6000 0为随机分配,端口范围会影响客户端的并发数
pasv_max_port=6010
使用当地时间
use_localtime=YES 使用当地时间(默认为NO,使用GMT)
匿名用户登录
anonymous_enable=YES 支持匿名用户,CentOS8 默认不允许匿名
no_anon_password=YES 匿名用户略过口令检查 , 默认NO
匿名用户上传
anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录
chmod 777 /var/ftp/pub
#需要开启文件系统访问的权限,不能给FTP根目录写权限,只能级子目录写权限
匿名用户 下载 删除文件
在 vsftpd 软件中 只可以 下载有 读权限的文件, 没有读权限的文件时不可以直接下载的需要修改下面的选项
anon_world_readable_only=NO 只能下载全部读的文件, 默认YES
anon_umask=0333 指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES 可删除和修改上传的文件,默认NO
例子:可以下载上传上去的文件
[root@rule pub]#vim /etc/vsftpd/vsftpd.conf
anon_world_readable_only=NO
anon_umask=0333
可以删除文件
[root@rule pub]#vim /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (172,16,87,40,22,162).
150 Here comes the directory listing.
-rwxr-xr-x 1 0 0 0 May 05 15:46 123.txt
226 Directory send OK.
ftp> delete 123.txt
250 Delete operation successful.
ftp> ls
227 Entering Passive Mode (172,16,87,40,120,81).
150 Here comes the directory listing.
226 Directory send OK.
指定匿名用户的上传文件的默认的所有者和权限
匿名用户上传文件默认的所有者是ftp 用户 是可以修改的
chown_uploads=YES #默认NO
chown_username=saber
chown_upload_mode=0644
Linux系统用户
local_enable=YES 是否允许linux用户登录
write_enable=YES 允许linux用户上传文件
local_umask=022 指定系统用户上传文件的默认权限对应umask
例:系统用户登录:普通用户登录默认是在系统用户的家目录
[root@saber ~]# ftp 172.16.87.40
Connected to 172.16.87.40 (172.16.87.40).
220 (vsFTPd 3.0.2)
Name (172.16.87.40:root): rule
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/rule"
###默认是可以上传下载
注意目录
#####也可以 去别的目录下载####
权限控制不是很安全
将所有系统用户映射为指定的guest用户
guest_enable=YES 所有系统用户都映射成guest用户
guest_username=ftp 配合上面选项才生效,指定guest用户
local_root=/ftproot 指定guest用户登录所在目录,但不影响匿名用户的登录目录
user_config_dir=/etc/vsftpd/conf.d/ 每个用户独立的配置文件目录
guest_enable=YES
guest_username=ftp
local_root=/ftproot
user_config_dir=/etc/vsftpd/conf.d/
例子:控制 系统用户等信息
[root@rule pub]#vim /etc/vsftpd/vsftpd.conf
#最后加入 复制注意空格
guest_enable=YES
guest_username=ftp
#local_root=/ftproot 可以注释此行,默认所有用户都在 ftp用户的家目录
[root@saber ~]# ftp 172.16.87.40
Connected to 172.16.87.40 (172.16.87.40).
220 (vsFTPd 3.0.2)
Name (172.16.87.40:root): rule
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
例子: 让每个用户拥有独有配置
[root@rule pub]#vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/conf.d/
#可以自由指定
针对 saber acher 用户
[root@rule data]#mkdir -p /etc/vsftpd/conf.d
#先建立好配置文件夹
#编写子配置文件
[root@rule data]#vim /etc/vsftpd/conf.d/saber
local_root=/data/saber
[root@rule data]#vim /etc/vsftpd/conf.d/acher
local_root=/data/acher
[root@rule data]#mkdir -p /data/{saber,acher}
[root@rule data]#touch /data/saber/saber.txt
[root@rule data]#touch /data/acher/acher.txt
#建立两个文件测试使用
#再次登录就不能乱跑了
禁锢系统用户
禁锢所有系统用户在家目录中
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢
禁锢用户开启白名单和黑名单
chroot_list_enable=YES #默认是NO
chroot_list_file=/etc/vsftpd/chroot_list #默认值
当chroot_local_user=YES和chroot_list_enable=YES时,则chroot_list中用户不禁锢,即白名单
当chroot_local_user=NO和chroot_list_enable=YES时, 则chroot_list中用户禁锢,即黑名单
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...