练习实践-基础设施-文件共享-FTP服务搭建-匿名/本地用户/虚拟用户三种模式

news2024/12/28 19:28:11

参考来源:

在线书籍-linux就该这么学-第11章

安装vsftpdf服务

[root@centos7 home]# dnf install vsftpd
Extra Packages for Enterprise Linux 7 - x86_64                                     0.
CentOS-7 - Base - mirrors.aliyun.com                                               0.
CentOS-7 - Updates - mirrors.aliyun.com                                            0.
CentOS-7 - Extras - mirrors.aliyun.com                                             0.
依赖关系解决。
=====================================================================================
 软件包                  架构                    版本                               仓
=====================================================================================
Installing:
 vsftpd                  x86_64                  3.0.2-29.el7_9                     u

事务概要
=====================================================================================
安装  1 软件包

总下载:173 k
安装大小:353 k
确定吗?[y/N]: y
下载软件包:
vsftpd-3.0.2-29.el7_9.x86_64.rpm                                                   17
-------------------------------------------------------------------------------------
总计                                                                               17
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中      :                                                                      
  Installing  : vsftpd-3.0.2-29.el7_9.x86_64                                         
  运行脚本    : vsftpd-3.0.2-29.el7_9.x86_64                                         
  验证        : vsftpd-3.0.2-29.el7_9.x86_64                                         

已安装:
  vsftpd-3.0.2-29.el7_9.x86_64                                                       

完毕!

备份配置文件,通过grep的-v参数,将非注释内容重新写入配置文件中

[root@centos7 home]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
[root@centos7 home]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
[root@centos7 home]# cat /etc/vsftpd/vsftpd.conf
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=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@centos7 home]#

vsftpd服务程序的匿名开放认证模式实现

1.修改配置文件,添加anon开头的前五行

[root@centos7 ftp]# cat -n /etc/vsftpd/vsftpd.conf
     1	anonymous_enable=YES
     2	anon_umask=022
     3	anon_upload_enable=YES
     4	anon_mkdir_write_enable=YES
     5	anon_other_write_enable=YES
     6	local_enable=YES
     7	write_enable=YES
     8	local_umask=022
     9	dirmessage_enable=YES
    10	xferlog_enable=YES
    11	connect_from_port_20=YES
    12	xferlog_std_format=YES
    13	listen=NO
    14	listen_ipv6=YES
    15	
    16	pam_service_name=vsftpd
    17	userlist_enable=YES
    18	tcp_wrappers=YES

2.修改共享文件权限

匿名文件所在目录路径为/var/ftp/pub,设置ftp用户为目录所有者

[root@centos7 ~]# cd /var/ftp/
[root@centos7 ftp]# ls
pub
[root@centos7 ftp]# ls -l
总用量 4
drwxr-xr-x 2 root root 4096 610 2021 pub
[root@centos7 ftp]# chown -R ftp /var/ftp/pub
[root@centos7 ftp]# ls -l
总用量 4
drwxr-xr-x 3 ftp root 4096 814 16:01 pub

3.检查安全策略和防火墙状态

未开启安装安全策略和防火墙服务;

[root@centos7 ftp]# getsebool -a | grep ftp
getsebool:  SELinux is disabled
[root@centos7 ftp]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

4.启动服务并设置开机自启

#systemctl start vsftpd
#systemctl enable vsftpd
[root@centos7 ftp]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2024-08-14 15:57:39 CST; 11min ago
 Main PID: 7733 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─7733 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

814 15:57:39 centos7 systemd[1]: Starting Vsftpd ftp daemon...
814 15:57:39 centos7 systemd[1]: Started Vsftpd ftp daemon.

5.验证效果

安装linux下ftp客户端工具

ftp是Linux系统中以命令行界面的方式来管理FTP传输服务的客户端工具。

[root@centos7 home]# dnf install ftp
上次元数据过期检查:0:02:47 前,执行于 2024年08月14日 星期三 15时42分16秒。
依赖关系解决。
====================================================================================
 软件包          架构               版本                     仓库              大小
====================================================================================
Installing:
 ftp             x86_64             0.17-67.el7              base              61 k

事务概要
====================================================================================
安装  1 软件包

总下载:61 k
安装大小:96 k
确定吗?[y/N]: y
下载软件包:
ftp-0.17-67.el7.x86_64.rpm                          168 kB/s |  61 kB     00:00    
------------------------------------------------------------------------------------
总计                                                167 kB/s |  61 kB     00:00     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中      :                                                                 1/1 
  Installing  : ftp-0.17-67.el7.x86_64                                          1/1 
  验证        : ftp-0.17-67.el7.x86_64                                          1/1 

已安装:
  ftp-0.17-67.el7.x86_64                                                            

完毕!
[root@centos7 home]# 

尝试连接ftp服务器,使用匿名用户账号anonymous,密码为空,创建文件,验证效果符合预期;

[root@centos7 home]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 3.0.2)
Name (127.0.0.1:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (127,0,0,1,28,88).
150 Here comes the directory listing.
226 Directory send OK.
ftp> ls -l
227 Entering Passive Mode (127,0,0,1,34,42).
150 Here comes the directory listing.
226 Directory send OK.
ftp> mkdir files
257 "/pub/files" created
ftp> 

另一台主机上连接测试,可以正常创建文件

root@debian:/home/a# ftp 192.168.255.129
Connected to 192.168.255.129.
220 (vsFTPd 3.0.2)
Name (192.168.255.129:a): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    3 14       0            4096 Aug 14 08:01 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 14       50           4096 Aug 14 08:01 files
226 Directory send OK.
ftp> mkdir files2
257 "/pub/files2" created
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 14       50           4096 Aug 14 08:01 files
drwxr-xr-x    2 14       50           4096 Aug 14 08:13 files2
226 Directory send OK.
ftp>

vsftpd服务程序的本地用户模式实现

相较于匿名开放模式,本地用户模式要更安全,而且配置起来也很简单。如果大家之前用的是匿名开放模式,现在就可以将它关了,然后开启本地用户模式。

1.修改配置文件,关闭第一行的匿名模式

[root@centos7 home]# cat -n /etc/vsftpd/vsftpd.conf
     1	anonymous_enable=NO
     2	local_enable=YES
     3	write_enable=YES
     4	local_umask=022
     5	dirmessage_enable=YES
     6	xferlog_enable=YES
     7	connect_from_port_20=YES
     8	xferlog_std_format=YES
     9	listen=NO
    10	listen_ipv6=YES
    11	
    12	pam_service_name=vsftpd
    13	userlist_enable=YES
    14	tcp_wrappers=YES

2.重启服务使配置生效

[root@centos7 home]# systemctl restart vsftpd

3.查看vsftp服务的本地用户名单

在本地用户名单上的用户,禁止登录,如果您确认在生产环境中使用root管理员不会对系统安全产生影响,只需按照上面的提示删除掉root用户名即可。也可以选择ftpusers和user_list文件中不存在的一个普通用户尝试登录FTP服务器。

Q:为什么同样是禁止用户登录的功能,却要制作两个一模一样的文件呢?

A:这个小玄机其实就在user_list文件上面。如果把上面主配置文件中userlist_deny的参数值改成NO,那么user_list列表就变成了强制白名单。它的功能与之前完全相反,只允许列表内的用户访问,拒绝其他人的访问。
bash
[root@centos7 home]# cd /etc/vsftpd/
[root@centos7 vsftpd]# tree
.
├── ftpusers
├── user_list
├── vsftpd.conf
├── vsftpd.conf_bak
└── vsftpd_conf_migrate.sh

0 directories, 5 files
[root@centos7 vsftpd]# cat ftpusers 
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
[root@centos7 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.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
[root@centos7 vsftpd]# 

4.验证效果

通过本地普通用户user1在另一台客户端主机上登录ftp验证效果,
结果:符合预期,vsftp服务器上的普通用户可以正常登录,vsftp用户列表中存在的root用户无法登录;

root@debian:/home/a# ftp 192.168.255.129
Connected to 192.168.255.129.
220 (vsFTPd 3.0.2)
Name (192.168.255.129:a): user1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0              41 Apr 02 13:03 auth.smb
226 Directory send OK.
ftp> mkdir user1files
257 "/home/user1/user1files" created
ftp> rmdir user1files
250 Remove directory operation successful.

root@debian:/home/a# ftp 192.168.255.129
Connected to 192.168.255.129.
220 (vsFTPd 3.0.2)
Name (192.168.255.129:a): root    #root用户登录,验证是否被拒绝登录
530 Permission denied.
Login failed.
ftp> ls
530 Please login with USER and PASS.
ftp: bind: Address already in use
ftp>

vsftpd服务程序的虚拟用户模式实现

最后讲解的虚拟用户模式是这3种模式中最安全的一种认证模式,是专门创建出一个账号来登录FTP传输服务的,而且这个账号不能用于以SSH方式登录服务器。当然,因为它的安全性较之于前面两种模式有了提升,所以配置流程也会稍微复杂一些。

1.创建虚拟用户账户信息,并进行加密保存

创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。例如,分别创建a1和b2两个用户,密码为a11114,b11114

[root@centos7 vsftpd]# cat -n  vuser.list 
     1	a1
     2	a11114
     3	b2
     4	b11114
[root@centos7 vsftpd]# 

由于明文信息既不安全,也不符合让vsftpd服务程序直接加载的格式,因此需要使用db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件,并且降低数据库文件的权限(避免其他人看到数据库文件的内容),然后再把原始的明文信息文件删除。

[root@centos7 vsftpd]# db_load -T -t hash -f vuser.list vuser.db
[root@centos7 vsftpd]# chmod 600 vuser.db
[root@centos7 vsftpd]# rm -rf vuser.list

2.创建虚拟用户模式的默认访问位置和权限

创建vsftpd服务程序用于存储文件的根目录以及用于虚拟用户映射的系统本地用户。vsftpd服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置。
这里创建用户为virtual ,用户家目录为/var/ftproot,目录访问权限为755

[root@centos7 vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@centos7 vsftpd]# ls -ld /var/ftproot/
drwx------ 2 virtual virtual 4096 814 16:43 /var/ftproot/
[root@centos7 vsftpd]# chmod -Rf 755 /var/ftproot/
[root@centos7 vsftpd]# ls -ld /var/ftproot/
drwxr-xr-x 2 virtual virtual 4096 814 16:43 /var/ftproot/

3.建立用于支持虚拟用户的PAM文件

通俗来讲,PAM是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应用程序进行任何修改。PAM采取了分层设计(应用程序层、应用接口层、鉴别模块层)的思想,其结构如图11-2所示。(图片来源:https://www.linuxprobe.com/wp-content/uploads/2021/03/PAM的分层设计结构.jpg)
在这里插入图片描述
新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:

[root@centos7 vsftpd]# cat -n /etc/pam.d/vsftpd.vu 
     1	auth	required	pam_userdb.so db=/etc/vsftpd/vuser
     2	account	required	pam_userdb.so db=/etc/vsftpd/vuser

4.修改vsftp配置文件,和PAM进行关联

在vsftpd服务程序的主配置文件中通过pam_service_name参数将PAM认证文件的名称修改为vsftpd.vu。PAM作为应用程序层与鉴别模块层的连接纽带,可以让应用程序根据需求灵活地在自身插入所需的鉴别功能模块。当应用程序需要PAM认证时,则需要在应用程序中定义负责认证的PAM配置文件,实现所需的认证功能。

vim使用,指定行范围内(例如1到15行),删除前四个字符的实现–亲测有效
在命令行模式
:1,15normal! 4x

[root@centos7 vsftpd]# cat -n vsftpd.conf
     1	anonymous_enable=NO
     2	local_enable=YES
     3	write_enable=YES
     4	guest_enable=YES
     5	guest_username=virtual
     6	allow_writeable_chroot=YES
     7	local_umask=022
     8	dirmessage_enable=YES
     9	xferlog_enable=YES
    10	connect_from_port_20=YES
    11	xferlog_std_format=YES
    12	listen=NO
    13	listen_ipv6=YES
    14	pam_service_name=vsftpd.vu
    15	userlist_enable=YES

5.为虚拟用户配置各自的权限文件,在vsftp配置文件中关联

创建虚拟用户权限目录,配置每个用户的权限清单文件

[root@centos7 vsftpd]# pwd
/etc/vsftpd
[root@centos7 vsftpd]# mkdir vuser_dir
[root@centos7 vuser_dir]# vim b2
[root@centos7 vuser_dir]# cat -n b2
     1	anon_upload_enable=YES
     2	anon_mkdir_write_enable=YES
     3	anon_other_write_enable=YES
[root@centos7 vuser_dir]# cat -n a1
[root@centos7 vuser_dir]# 

然后再次修改vsftpd主配置文件,通过添加user_config_dir参数来定义这两个虚拟用户不同权限的配置文件所存放的路径,在最后一行

[root@centos7 vsftpd]# echo "user_config_dir=/etc/vsftpd/vuser_dir" >> /etc/vsftpd/vsftpd.conf
[root@centos7 vsftpd]# cat -n vsftpd.conf
     1	anonymous_enable=NO
     2	local_enable=YES
     3	write_enable=YES
     4	guest_enable=YES
     5	guest_username=virtual
     6	allow_writeable_chroot=YES
     7	local_umask=022
     8	dirmessage_enable=YES
     9	xferlog_enable=YES
    10	connect_from_port_20=YES
    11	xferlog_std_format=YES
    12	listen=NO
    13	listen_ipv6=YES
    14	pam_service_name=vsftpd.vu
    15	userlist_enable=YES
    16	user_config_dir=/etc/vsftpd/vuser_dir

6.重启vsftp服务使配置生效

pass

7.验证两个虚拟用户不同权限的登录效果

虚拟用户a1,正常登录无法创建文件

root@debian:/home/a# ftp 192.168.255.129
Connected to 192.168.255.129.
220 (vsFTPd 3.0.2)
Name (192.168.255.129:a): a1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> mkdir abcfiles
550 Permission denied.
ftp> 

虚拟用户b2,可以创建文件,文件的挂载点在步骤2虚拟用户模式的默认访问位置中

root@debian:/home/a# ftp 192.168.255.129
Connected to 192.168.255.129.
220 (vsFTPd 3.0.2)
Name (192.168.255.129:a): b2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> pwd
257 "/"
ftp> mkdir b2files
257 "/b2files" created
ftp> rmdir b2files
250 Remove directory operation successful.
ftp> mkdir b2files1
257 "/b2files1" created
ftp> 


[root@centos7 vuser_dir]# cd /var/ftproot/
[root@centos7 ftproot]# ls
b2files1
[root@centos7 ftproot]# ls -l
总用量 4
drwx------ 2 virtual virtual 4096 814 17:20 b2files1
[root@centos7 ftproot]# 

快速回顾:
在使用不同的方式登录文件传输服务器后,默认所在的位置,
在这里插入图片描述
–END提示–

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

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

相关文章

C语言中的整数和浮点数在内存中存储

在C语言中,整形和浮点型数据的存储方式有所不同。 对于整形数据,C语言使用补码表示法存储。补码表示法可以方便地进行二进制加减法运算,同时能够简化硬件设计。对于正整数,其补码与原码相同,即直接存储其二进制表示。对…

Spring 循环依赖解决方案

文章目录 1. 循环依赖的产生2. 循环依赖的解决模型3. 基于setter/Autowired 的循环依赖1_编写测试代码2_初始化 Cat3_初始化 Person4_ 回到 Cat 的创建流程5_小结 4. 基于构造方法的循环依赖5. 基于原型 Bean 的循环依赖6. 引人AOP的额外设计7. 总结 IOC 容器初始化bean对象的逻…

如何对open62541.h/open62541.c的UA_Client进行状态(在线/掉线)监控

文章目录 1.背景2.解决方案3.异步连接4.注意事项4.1.线程问题4.2.UA_Client_run_iterate 1.背景 目前在利用open62541.h/open62541.c编写了一个与PLC进行OPCUA通讯的上位机程序。 上位机这边会定时对PLC的某个opcua变量进行写操作。但是假如PLC离线或者说拔掉网线,…

【多线程-从零开始-柒】单例模式,饿汉和懒汉模式

单例模式:是一种设计模式 设计模式,类似于“棋谱”,就是固定套路,针对一些特定的场景,给出一些比较好的解决方法只要按照设计模式来写代码,就可以保证代码不会太差,保证代码的下限 设计模式 设…

8月8日学习笔记 python基础

1.环境 python2, python3 yum list installed|grep python yum -y install python3 # 最新安装3.12可以使⽤源码安装,教程是在第⼀个星期pdf python3 --version 3.6.8 #进⼊到python的编辑状态 python3 # 如果直接输⼊python,也会进⼊到pyth…

MySQL基础练习题33-有趣的电影

目录 题目 准备数据 分析数据 总结 题目 找出所有影片描述为 非 boring (不无聊) 的并且 id 为奇数 的影片。 返回结果按 rating 降序排列。 准备数据 ## 创建库 create database db; use db;## 创建表 Create table If Not Exists cinema (id int, movie varchar(255),…

php根据截止时间计算剩余的时间,并且在剩余时间不足1天时仅显示小时数

//获取政策库文章public function getIndexZckList(){$fl_id = input(fl_id);if(empty(

C++:list类(迭代器类)

前言 list是链表的意思 它属于链表中的带头双向循环链表 建议先掌握数据结构中的链表 C数据结构:单链表-CSDN博客 C数据结构:双向链表(带头循环)_c带头双向循环链表-CSDN博客 数据结构 首先我们需要一个链表的节点 templa…

ThinkPHP5漏洞分析之代码执行

漏洞概要 本次漏洞存在于 ThinkPHP 的缓存类中。该类会将缓存数据通过序列化的方式,直接存储在 .php 文件中,攻击者通过精心构造的 payload ,即可将 webshell 写入缓存文件。缓存文件的名字和目录均可预测出来,一旦缓存目录可访问…

【张】#12 enum 枚举

enum 枚举定义格式&#xff1a; enum <类型名> {<枚举常量表> }; 枚举其实就是一个整数 enum example {Aa,Bb10,Cc //给Bb赋值为10后&#xff0c;Cc的值会变成11 }; 枚举变量只能使用枚举值&#xff0c;枚举可以赋值给整型&#xff0c;整型不能赋值给枚举 #inc…

掌握Jenkins自动化部署:从代码提交到自动上线的全流程揭秘

Jenkins自动化部署是现代软件开发中不可或缺的一部分&#xff0c;它不仅简化了代码的发布过程&#xff0c;还为整个团队带来了无与伦比的效率和协作力。想象一下&#xff0c;开发者们可以专注于编写高质量的代码&#xff0c;而不是为繁琐的手动部署所烦恼&#xff1b;测试人员能…

力扣高频SQL 50题(基础版)第四十四题之626. 换座位

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第四十四题之626. 换座位626. 换座位题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第四十四题之626. 换座位 626. 换座位 题目说明 表: Seat --------------…

<数据集>街头摊贩识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;966张 标注数量(xml文件个数)&#xff1a;966 标注数量(txt文件个数)&#xff1a;966 标注类别数&#xff1a;1 标注类别名称&#xff1a;[street-vendor] 序号类别名称图片数框数1street-vendor9662016 使用标注…

Java流程控制02:if选择结构

本节内容教学视频链接&#xff1a;Java流程控制04&#xff1a;if选择结构_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p36&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 在Java中&#xff0c;if 选择结构用于根据特定条件执行不同的代码块。 if语句有四…

CRC校验算法详解、C语言实现

一、前言 1.1 CRC算法介绍 CRC&#xff08;Cyclic Redundancy Check&#xff09;校验算法是一种广泛应用于数据通信和存储系统中的错误检测方法&#xff0c;主要用于检测数据在传输过程中是否发生了改变。CRC算法通过计算一个固定长度的校验码&#xff0c;将该校验码附加到原…

Zookeeper使用快速入门:基础命令,wacth监控,权限控制

目录 前置知识 1. 基础命令 未知指令&#xff1a; ls&#xff1a; create&#xff1a; zookeeper中节点有四种类型&#xff0c;分别是&#xff1a; 1. 持久节点&#xff08;Persistent Node&#xff09; 2. 临时节点&#xff08;Ephemeral Node&#xff09; 3. 持久顺序…

进程间通信 ---共享内存

序言 在前一篇文章中&#xff0c;我们介绍了名为 &#x1f449;管道 的进程间通信的方式&#xff0c;该种方式又可分为 匿名管带&#xff0c;命名管道。前者最大的特点就是 仅支持包含血缘关系两进程之间的通信&#xff0c;而后者 支持任意进程间的通信。  在本篇文章中&…

python3.9+wxPython设计的一个简单的计算器

运行环境&#xff1a;python3.9wxPython4.2.1 运行效果&#xff1a; 按下等于号&#xff0c;输出&#xff1a; 按下R键&#xff0c;保留两位小数 键盘布局与逻辑分离&#xff0c;添加删除功能一般功能或修改键盘布局只需要更改词典的顺序即可。添加特殊功能时则需要将队对应的…

【kubernetes】k8s配置资源管理

一、ConfigMap资源配置 ConfigMap保存的是不需要加密配置的信息 ConfigMap 功能在 Kubernetes1.2 版本中引入&#xff0c;许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制&#xff0c;ConfigMap 可以被…

基于vue框架的CKD电子病历系统nfa2e(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;患者,医生,药品信息,电子病历,临时医嘱,长期医嘱,健康科普 开题报告内容 基于Vue框架的CKD电子病历系统 开题报告 一、选题背景 随着信息技术的飞速发展和医疗信息化的深入推进&#xff0c;电子病历系统&#xff08;Electronic Medic…