Linux入门攻坚——30、sudo、vsftpd

news2024/11/6 3:12:54

su:Switch User,即切换用户
  su [-l user] -c ‘COMMAND’
如:su -l root -c ‘COMMAND’
如果没有指定-l user,则默认是root

sudo:可以让某个用户不需要拥有管理员的密码,而可以执行管理员的权限。
  需要授权,授权之后,能够让某用户以另外一个用户的身份运行命令。
授权依赖配置文件:sudoers
sudo的用法 : # sudo COMMAND

配置文件sudoers:/etc/sudoers
root    ALL=(ALL)     ALL
%wheel    ALL=(ALL)    ALL

以上每一列的含义如下:
第一列:用户名(带%的是组名),如root、test;运行命令者的身份(who,即user)。
第二列:等号左边的ALL表示允许从任何主机登录当前的用户账户,即通过哪些主机(where,即host);等号右边的ALL表示第一列的用户可以切换成系统中任何一个其它用户,即以哪个用户的身份(whom,即runas)(如:su test)。
第三列:第一列的用户能下达的命令,ALL表示可以下达任何命令。也可以指定特定命令,即运行哪些命令(which,即command),如/sbin/useradd,/sbin/userdel
配置项:
users    hosts=(runas)   commands
users:可以是username,或#uid或user_alias或%group_name或%#gid
hosts:ip、hostname、netaddr
commands:command name、directory、sudoedit

Alias_Type NAME = item1, item2, ...
    NAME:必须是全部大写
    Alias_Type:User_Alias、Host_Alias、Runas_Alias、Cmnd_Alias

测试:修改sudo配置文件,添加用户及可以执行命令

添加用户:

可执行的命令:

测试执行:

设置的命令出错了,是/sbin/ip,而不是/usr/sbin/ip,修改后:

sudo有个检票机制,即在输入用户密码后的5分钟内,执行命令不需要再次输入密码,使用sudo -k可以取消这次检票功能,即需要再次输入密码。

sudo的选项:
  -V:显示版本号
  -h:显示版本编号及指令的使用方式说明,即帮助
  -l:显示出自己(执行sudo的使用者)的权限
  -k:强迫使用者在下一次执行sudo时问密码
  -b:将要执行的指令放在后台执行
  -u user:以user用户身份运行

文件共享服务:应用层  ftp

NFS:Network File System(基于RPC:Remote Procedure Call,远程过程调用)
Samba:在Linux实现CIFS(SMB)协议,跨平台
DAS,NAS,SAN
mogileFS
mooseFS
hadoop HDFS

FTP,文件传输协议:采用C/S模型,即客户端和服务器,基于tcp,采用双TCP连接方式,两个连接:
  命令连接/控制连接:21/tcp,用于传输命令及命令执行信息,整个FTP会话期间一直保持打开
  数据连接:用于数据的上传下载文件列表发送等,数据传输结束后数据连接将终止。分两种情况
    主动模式:20/tcp,服务器端使用tcp的20端口主动连接客户端,用于数据连接,客户端的端口是客户端控制连接端口号加1,如果占用,再加1,以此类推。
    被动模式:主动模式中客户端一般有防火墙,容易连接失败,服务器通过控制连接,告诉客户端一个服务器随机端口号,由客户端连接这个端口。这就是被动模式。
数据传输模式:二进制模式和文本(ASCII模式)两种,(服务器客户端采用自动模式协商决定)
● 文本传输器使用ASCII字符,并由回车键和换行符分开,而二进制不用转换或格式化就可传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式。
●  二进制模式用来传送可执行文件,压缩文件,和图片文件。如果用ASCII模式传,会显示一堆乱码,必须重新用BINARY模式传。用HTML和文本编写的文件必须用ASCII模式上传,用BINARY模式上传会破坏文件,导致文件执行出错。
    ftp server --> ftp client

主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式,主要特点是:
● FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号
● 当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输。
在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式。

被动方式也称为PASV方式,被动方式的主要特点是:
●  FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端口号并告知客户端
●  当需要传送数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输
在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式。

数据的类型:
  结构化数据
  半结构化数据
  非结构化数据

服务器端程序:
  vsftpd:very Secure ftp Daemon
  proftpd:
客户端层序:
  CLI:ftp、lftp
  GUI:gftp、FlashFXP、Cuteftp

FTP的典型消息:
消息号及含义:
125:数据连接打开,传输开始;  200:命令OK ;  226:数据传输完毕;  331:用户名OK;  
425:不能打开数据连接;  426:数据连接被关闭,传输被中断;  452:错误写文件;
500:语法错误,不可识别的命令;

vsftpd:
支持基于IP的虚拟FTP服务器;支持虚拟用户;支持PAM或xinetd/tcp_wrappers的认证方式;支持两种运行方式:独立和Xinetd;支持每个虚拟用户具有独立的配置;支持带宽限制等。

安装:yum install vsftpd
查看安装文件:

启动:

用户认证:虚拟用户:仅用于访问某特定服务中的资源
nsswitch:network service switch,名称解析框架,配置文件:/etc/nsswitch.conf
                 模块:/lib64/libnss*,/usr/lib64/libnss*
pam:pluggable authentication module,模块:/lib64/security/,
           配置文件:/etc/pam.conf,/etc/pam.d/* 

/etc/vsftpd:配置文件目录
  /etc/init.d/vsftpd:服务脚本
  /usr/sbin/vsftpd:主程序
基于PAM实现用户认证:
  /etc/pam.d/*
  /lib/security/*
  /lib64/security/*
  支持虚拟用户  

文件目录:
  /var/ftp:只对root用户具有写权限
上传和下载: 下载一般风险较少,上传则风险较大。

FTP用户类型
匿名用户:anonymous或ftp
本地用户:账号名称、密码等信息保存在passwd、shadow文件中
虚拟用户:使用独立的账号/密码数据文件
ftp:系统用户
  匿名用户(映射为ftp用户)--> 系统用户,anonymous_enable=YES|NO,共享资源位置:/var/ftp
  虚拟用户 --> 系统用户,资源位置是给虚拟用户指定的映射成为的系统用户的家目录
  系统用户:local_enable=YES|NO,访问的是系统用户的家目录。

/var/ftp:ftp用户的家目录
  匿名用户访问目录

通过上面的命令,可以看到匿名用户是映射到ftp用户

chroot:禁锢用户于其家目录中

系统用户:write_enable=YES:上传文件

文件服务权限:文件系统权限*文件共享权限

测试操作:
启动vsftpd服务后,直接ftp登录:

可以看到,即使是匿名用户登录,也需要输入用户名。

匿名用户显示当前目录为"/",即根目录,当实际文件系统目录是/var/ftp
配置vsftpd:文件/etc/vsftpd/vsftpd.conf

anonymous_enable=NO,禁止匿名访问

添加系统用户,使用系统用户登录:
  useradd test01
配置中增加:local_enable=YES
使用系统用户登录:

可以看到,使用系统用户,登录的默认路径是系统用户的家目录,而且可以切换到其他系统路径,这是很危险的操作。一般正常应该锁定(禁锢)在FTP的根目录,即/var/ftp

chroot:禁锢用户于其家目录中。
系统用户,配置文件中:write_enable=YES:允许系统用户上传文件

使用匿名用户登录,再次测试上传文件:

发现无法上传。
在配置文件中有 #anon_upload_enable=YES,就是用来设置匿名用户是否可以上传文件,默认是不允许。
将此项设置打开,即anon_upload_enable=YES,重新加载配置后,再次测试上传。

发现依然没有上传成功,但是提示信息变化了,由原来的550 Permission denied变为553 Could not create file。即原来是权限拒绝变成了无法创建文件。

/var/ftp以及/var/ftp/pub两个目录的属主属组都是root,且只有属主root才具有写权限,即w权限。
而启动ftp进程处理数据传输的用户是ftp,所以需要目录对ftp用户具有写权限。
创建一个子目录,使其对ftp用户具有写权限:


所以,文件服务权限取决于:文件系统权限 * 文件共享权限
测试在此目录下创建子目录和删除文件:

不能创建子目录,不能删除文件。这两项属于不同的权限设置,在配置文件中,有如下设置项:
anon_mkdir_write_enable=YESanon_other_write_enable=YES,即是来开启匿名用户创建子目录和删除文件的权限。
先测第一项,创建目录:

能创建,不能删除,开放第二项other配置:

dirmessage_enable=YES,启动目录的欢迎信息,在目录下创建.message文件,文件中写上相关信息,在进入此目录时显示此文件中的信息。

banner_file=/var/vsftpd-banner,登录FTP站点时,显示的欢迎信息,欢迎信息定义在一个文件中,这里假设定义在/var/vsftpd-banner

ftpd_banner=My FTP Server 12,不是很复杂的提示信息或欢迎信息,可以直接用ftpd_banner=xxx来实现。
xferlog_enable=YES,启用ftp的日志功能,但是光启动这一项还不行,还要启用xferlog_file=/var/log/xferlog,即指定日志文件的位置:

日志的格式,使用xferlog_std_format=YES,标准格式。
#chown_uploads=YES 和 #chown_username=whoever
上传后改变属主。改变以后,当前用户对文件的权限就会受到限制。
#idle_session_timeout=600,控制链接的空闲时间。
#data_connection_timeout=120,数据传输链接的超时时间。
#ascii_upload_enable=YES 和 #ascii_download_enable=YES,以ascii进行上传下载
#chroot_list_enable=YES 和 #chroot_list_file=/etc/vsftpd/chroot_list,第一项是启用禁锢用户功能,第二项指定一个文件,在文件中列出需要禁锢的用户列表。在chroot_list中添加test01:

此时,test01用户被禁锢在FTP的根目录下。
#chroot_local_user=YES,如果想禁锢所有的系统用户,可以使用这条配置,上面两条就不需要了。
使用root用户进行登录测试:

不允许登录。在/etc/vsftpd目录下有ftpusers文件,其中每一行是一个系统用户名,这些用户不允许登录vsftpd。

默认vsftpd使用的是pam认证,在vsftpd.conf配置文件中。有pam_service_name=vsftpdp配置项。
PAM使用vsftpd文件,如下:

可以看到,PAM认证使用ftpusers文件,默认是deny。
vsftpd还可以使用user_list文件进行登录用户的控制。配置文件中有userlist_enable=YES,说明启用user_list文件进行用户控制,默认文件中的用户不允许登录,即有一个默认配置项:userlist_deny=YES

将test03加入这个文件中,测试:

可以发现无法登陆;如果修改默认权限配置,即增加userlist_deny=NO,即允许登录,再次测试:

可以看到,test03登录成功,root还是登录失败,但是可以输入密码了,因为还要受到ftpusers文件设定权限的限制。将ftpusers中的root去掉,再次测试:

root登录成功。
max_clients=# 最大并发连接数
max_per_ip=# 每个客户端IP地址可同时发起的最多并发请求数数
local_max_rate=# 系统用户(本地用户)的最大传输速率设置
anon_max_rate=# 匿名用户的最大传输速率设置
pasv_min_port=#   pasv_max_port=# 将使客户端连接时的端口范围在最小值和最大值之间。
chown_uploads=YES
chown_username=nobody
  启用上传文件修改属主,属主改为nobody。

虚拟用户:所有的虚拟用户会被统计映射为一个指定的系统账号,访问的共享位置即为此系统用户的家目录;各虚拟用户可被赋予不同的访问权限,主要是通过匿名用户的权限控制参数进行指定。
构建基于虚拟用户的vsftpd服务器——虚拟用户账号基于文件
1、建立虚拟FTP用户的账号数据库文件;
2、创建FTP根目录及虚拟用户映射的系统用户;
3、建立支持虚拟用户的PAM认证文件;
4、在vsftpd.conf文件中添加支持配置;
5、为个别虚拟用户建立独立的配置文件;
6、重新加载vsftpd配置;
7、使用虚拟FTP账号访问测试;

1、创建虚拟FTP用户账户文件,在/etc/vsftpd/目录下创建vusers.list,格式为每两行代表一个用户,奇数行代表用户名,偶数行代表密码。如:
user01
pass01
user02
pass02
将上述文件转化为Berkeley DB格式的数据文件,使用db_load 转换工具,需安装 db4-utils-4.3.29-9.fc6.i386.rpm 软件包。


在使用 db_load 命令时,“-f”选项用于指定用户名/密码列表文件,“-T”选项允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件,“-t hash”选项指定读取数据文件的基本方法。将帐号文件的权限设置为600,可以有效提高安全性。
2、创建FTP根目录及虚拟用户映射的系统用户,vsftpd虚拟用户需要有一个对应的系统用户帐号(该帐号无需设置密码及登录Shell),该用户帐号的宿主目录作为所有虚拟用户登录后的共同FTP根目录。

3、建立支持虚拟用户的PAM认证文件:/etc/pam.d/vsftpd.vu
PAM配置文件(名称可以自行定义)主要用于为程序提供用户认证控制,vsftpd服务使用的默认PAM配置文件为/etc/pam.d/vsftpd,可以参考该文件的格式建立新的PAM配置文件,用于虚拟用户认证控制 。如下文件,其中db=就是上一步vusers.list转换的vusers.db,不需要加后缀。

4、在vsftpd.conf文件中添加支持配置:
pam_service_name=vsftpd.vu,指定PAM验证使用的文件,即上一步创建的文件;
local_enable=YES,因为映射的是本地用户登录,所以这一项要配置成YES;
guest_enable=YESguest_username=virtualuser,配置虚拟用户可以访问;
userlist_enable=YESuserlist_deny=NO先注释掉,将匿名用户的配置注释掉,即以anon开头的配置注释掉。
测试,使用虚拟用户可以登录,但是不能创建目录,不能上传文件:

在vsftpd.conf配置文件中添加guest_enable、guest_username配置项,将访问FTP服务的所有虚拟用户对应到同一系统用户帐号virtualuser。并修改pam_service_name配置项,指向上一步建立的PAM配置文件/etc/pam.d/vsftpd.vu
在vsftpd服务中,虚拟用户帐户默认作为匿名用户处理以降低权限,因此对应的权限设置通常使用以anon_开头的配置项。例如,在设置虚拟用户所上传文件的默认权限掩码时应采用配置项anon_umask而不是local_umask。
5、为个别虚拟用户建立独立的配置文件
在vsftpd.conf文件中添加用户配置目录支持
 user_config_dir=/etc/vsftpd/vusers_dir ,这里目录为vusers_home
为用户user01、user02建立独立的配置目录及文件, 配置文件名与用户名同名

此时可以创建目录,可以上传文件。
一个很奇怪的问题是:在使用CentOS的ftp命令登录时,只能创建目录,不能上传文件,改为lftp就可以。

构建基于虚拟用户的vsftpd服务器——虚拟用户账号基于Mysql
1、安装mysql数据库,系统上已经编译安装了MariaDB,此步骤略过;
2、安装相关包:yum install mysql-devel pam_mysql
3、准备数据库及相关表;首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456';
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123456';
mysql> flush privileges;
mysql> use vsftpd;
mysql> create table users (
 id int AUTO_INCREMENT NOT NULL,
 name char(20) binary NOT NULL,
password char(48) binary NOT NULL,
 primary key(id) );

  添加测试的虚拟用户,根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。

mysql> insert into users(name,password) values('vuser01',password('123456'));
mysql> insert into users(name,password) values('vuser02',password('123456'));

4、配置vsftpd
1)建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql
添加如下两行
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。

2)修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录,利用上一次的虚拟用户:
# useradd -s /sbin/nologin -d /var/myftproot virtualuser
# chmod go+rx /var/myftproot

请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

而后添加以下选项
guest_enable=YES
guest_username=vuser

并确保pam_service_name选项的值如下所示
pam_service_name=vsftpd.mysql
5、重启vsftpd,访问测试:

6、配置虚拟用户具有不同的访问权限:与上一个使用文件的虚拟用户一样,vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。
配置vsftpd为虚拟用户使用配置文件目录:
# vim vsftpd.conf   , 添加如下选项
user_config_dir=/etc/vsftpd/vusers_home
创建所需要目录,并为虚拟用户提供配置文件:
# mkdir /etc/vsftpd/vusers_home/
# cd /etc/vsftpd/vusers_home/
# touch vuser01
配置虚拟用户的访问权限:
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。修改/etc/vsftpd/vusers_config/vuser01文件,在里面添加如下选项即可。
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}

lftp命令:支持命令行补全,语法着色等
lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]  登录ftp服务器
lftpget [-c] [-d] [-v] URL [URL...] 下载文件命令
axel,可以多线程下载,支持断点续传。

ftp协议是明文的,如要安全,使用:
  ftps:SSL
  sftp:SSH
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2087369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ练习(Topics)

1、RabbitMQ教程 《RabbitMQ Tutorials》https://www.rabbitmq.com/tutorials 2、环境准备 参考:《RabbitMQ练习(Hello World)》和《RabbitMQ练习(Work Queues)》。 确保RabbitMQ、Sender、Receiver、Receiver2容器…

云原生向量数据库 PieCloudVector 助力多模态大模型 AI 应用

全球 AGI(人工通用智能)市场快速增长的背景下,企业应用成为推动这一领域发展的主要力量,企业如何选择合适的技术来支撑其智能化转型显得尤为重要。在墨天轮《数据库技术如何增强 AI 大模型?》数据库沙龙活动中&#xf…

C语言典型例题55

《C程序设计教程(第四版)——谭浩强》 题目: 例题4.7 兔子的繁殖。这是一个有趣的古典问题:有一对兔子,从出生后的第3个月开始起每个月都生一对兔子。小兔子长到第3个月又生一对兔子。假设所有兔子都不死,…

深度解读SGM41511电源管理芯片I2C通讯协议REG08寄存器解释

REG08 是 SGM41511 的第九个寄存器,地址为 0x08。这是一个只读(R)寄存器,用于报告各种状态信息。上电复位值(PORV)为 xxxxxxxx,表示上电时的初始状态是不确定的。这个寄存器提供了充电器当前状态…

HarmonyOS--合理使用页面间转场

一、概述 页面间转场是用户从一个页面切换到另一个页面时的过程,一个无缝流畅的转场动效可以提升用户的交互体验。从主页到详情页、从列表页到结果页都需要去设置一些转场动效使得用户体验更加流畅。基于用户行为和应用设计模式,我们总结出了一些常见的转…

C#/.net core “hello”.IndexOf(“\0”,2)中的坑

先想想看,你认为下面代码返回值是多少? "hello".IndexOf("", 2); "hello".IndexOf("\0", 2); "hello".IndexOf(\0, 2); 今天和大家分享关于.net core中与字符相关的一些奇怪问题。 首先我们先以.N…

Golang | Leetcode Golang题解之第383题赎金信

题目&#xff1a; 题解&#xff1a; func canConstruct(ransomNote, magazine string) bool {if len(ransomNote) > len(magazine) {return false}cnt : [26]int{}for _, ch : range magazine {cnt[ch-a]}for _, ch : range ransomNote {cnt[ch-a]--if cnt[ch-a] < 0 {r…

大模型知识检索RAG业务实践实践(初级篇)

大模型知识检索RAG业务实践实践(初级篇) 1.知识检索大图 大模型是现在一个非常热门的话题,大模型表现出的生成能力也是非常惊艳。但是强如 GPT4 这样的大模型,它在知识更新和幻觉上也会存在问题。比如说我们问互联网行业有什么大事,GPT4 的回答是三年前的内容。主要是说疫…

机械学习—零基础学习日志(如何理解概率论12)

假设检验 假设检验是有一些参数&#xff0c;已知条件&#xff0c;让你检验某种假设是否成立。 我们通过具体的题目来说明&#xff1a; 这里我们需要确认使用什么公式&#xff1a; 使用下面的公式如下图&#xff1a; 题目中&#xff0c;以21作为分界线&#xff0c;所以我们将是…

用manim证明函数的左右极限

http://t.csdnimg.cn/2pVdFhttp://t.csdnimg.cn/2pVdF在上一节的最后两个示例中&#xff0c;我们看到了两个不存在的限制。然而&#xff0c;对于每个例子来说&#xff0c;每个限制不存在的原因是不同的。 我们看一下下面的例子&#xff1a; 极限不存在&#xff0c;因为函数没有…

Redis基本全局命令

文章目录 get和setkeysexistsdelexpirettltype redis全局命令&#xff1a; redis支持很多种数据结构&#xff0c;整体上来说。redis是键值对结构&#xff0c;key固定就是字符串&#xff0c;value实际上就会有很多种&#xff0c;比如说&#xff1a; 字符串哈希表列表有序集合 …

linux系统编程-网络-tcp(29)

C/S B/S P2p模型 在Linux系统编程中&#xff0c;C/S&#xff08;Client/Server&#xff0c;客户端/服务器&#xff09;和B/S&#xff08;Browser/Server&#xff0c;浏览器/服务器&#xff09;模型是两种常见的架构模式&#xff0c;用于构建分布式应用程序。它们在设计和实现上…

C语言 | Leetcode C语言题解之第384题打乱数组

题目&#xff1a; 题解&#xff1a; typedef struct {int* num;int* src;int numsize; } Solution;Solution *obj NULL;Solution* solutionCreate(int* nums, int numsSize) {if (obj ! NULL) {return obj;}Solution *obj (Solution*)malloc(sizeof(Solution));obj->nums…

#C++ 笔记二

四、运算符重载 1.友元 1.1 概念 类实现了数据的隐藏和封装&#xff0c;类的数据成员一般定义为私有成员&#xff0c;仅能通过类的公有成员函数才能进行读写。 如果数据成员定义成公共的&#xff0c;则又破坏了封装性。但是在某些情况下&#xff0c;需要频繁的读写数据成员…

Java 7.3 - 分布式 id

分布式 ID 介绍 什么是 ID&#xff1f; ID 就是 数据的唯一标识。 什么是分布式 ID&#xff1f; 分布式 ID 是 分布式系统中的 ID&#xff0c;它不存在于现实生活&#xff0c;只存在于分布式系统中。 分库分表&#xff1a; 一个项目&#xff0c;在上线初期使用的是单机 My…

2-80 基于matlab-GUI,实现kalman滤波对目标物的位置进行检测跟踪

基于matlab-GUI,实现kalman滤波对目标物的位置进行检测跟踪。检测汽车中心和最大半径&#xff0c;与背景差分选择较大差异的区域进行形态学处理&#xff0c;用冒泡法对目标面积从大到小排序。程序已调通&#xff0c;可直接运行。 2-80 kalman视频跟踪滤波 - 小红书 (xiaohongsh…

光学涡旋Talbot阵列照明器的matlab模拟与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 光学涡旋 Talbot 阵列照明器是一种利用光学涡旋&#xff08;Optical Vortex&#xff09;和 Talbot 效应&#xff08;Talbot Effect&#xff09;相结合的技术&…

【HTML源码】上传即可使用的在线叫号系统源码

这个叫号系统的过程是这样的 接了一个任务&#xff0c;某学校要对学生进行逐个面试&#xff0c;希望能有类似医院门诊那种叫号系统。 条件&#xff1a;首先说硬件&#xff0c;就是教室里边一台笔记本电脑&#xff0c;同屏到教室外面的电视机。 需求&#xff1a;软件需求是可…

汉诺塔递归解决思路图解分析,python代码实现

目录 4.假设四层汉诺塔&#xff0c;n4&#xff0c;利用整体思想分解为两层的情况 3.分解到n3 3.1 分解上面n4时第一个步骤&#xff1a; 3.2 分解上面n4时第三个步骤&#xff1a; 2.继续分解到n2 &#xff08;同理略&#xff09; 1.当分解到n1 python代码 问题&#xff1…

【Linux】升级OpenSSH版本规避远程代码执行漏洞

本文首发于 ❄️慕雪的寒舍 升级OpenSSH版本规避远程代码执行漏洞。 说明 今天早上逛别人的博客的时候看到了这个重磅消息。OpenSSH爆出能远程通过root身份执行任意代码的漏洞&#xff0c;影响版本是 8.5p1 < OpenSSH < 9.8p1&#xff0c;奇安信的报告可以点我查看。 上…