文件权限管理

文件权限管理

1. 权限对象

权限对象含义
u属主,所有者
g属组
o其他人

2. 权限类型

权限类型含义
r读权限4
w写权限2
x执行权限1

3. 修改文件属主及属组

命令:chown(change own)更改文件或目录属主与属组名

3.1 修改文件属主与属组

  • 只修改属主:chown $user $filename

  • 只修改属组:chown .$group $filename

  • 既修改属主又修改属组:chown $user.$group $filename

    ps:此处.:都可以

3.2 修改目录属主与属组

  • 只修改属主:chown -R $user $dirname 去掉-R即为只修改目录自身的属组名,下同。

  • 只修改属组:chown -R .$group $dirname

  • 既修改属主又修改属组:chown -R $user.$group $dirname

    ps:-R为递归参数,使用该参数可以修改目录本身并且修改目录下所有文件的属主与属组名

    ps:此处.:都可以

4. 修改文件权限

命令:chmod 更改文件或目录的访问权限

4.1 修改文件权限

  • 读权限------能否查看文件内容

  • 写权限------能否编辑文件

  • 执行权限—针对脚本,比如脚本文件叫做date.sh,能否使用./date.sh 方式去执行,或者是能否使用绝对路径的方式执行

4.2 修改目录权限

  • 读权限------限制用户能否查看目录下的文件

  • 写权限------能否创建文件或目录、能否删除文件和目录

  • 执行权限—能否进入这个目录,如果没有执行权限,即使有读权限也无法查看目录下文件的详细信息,只能看到文件名字

4.3. 使用符号更改权限:

语法chmod $权限对象$赋值符号$权限类型 $文件或目录

权限对象赋值符号权限类型
u+r
g-w
o=x
a

ps:a代表把文件的权限给所有人

​ 将file3.txt文件的所有用户权限设为只读

image-20240408193601381

chmod修改file1.txt文件的权限为属组减去写权限,属组加上写权限,其他人加上运行权限

image-20240408194119688

4.4. 使用数字更改权限

语法chmod $属主属组其他人权限类型值 $文件或目录

权限对象权限类型权限类型值
ur4
gw2
ox1

​ 将file3.txt文件的权限更改为:属主:7(读写执行)属组:6(读写)其他人:1(执行)

image-20240408175434837

dir1目录的权限更改为:属主:7(读写执行)属组:6(读写)其他人:1(执行)

image-20240408192522151

5 . 权限案例ugo

5.1. r、w、x权限对文件和目录的意义

权限对文件的影响对目录的影响
r可以读取文件内容可以列出目录的内容(文件名)#查看目录下文件的详细信息
w可以更改文件内容可以创建或删除目录中的任一文件
x可以作为命令执行文件可以访问目录的内容(取决于目录中文件的权限)

5.2. rwx对文件的影响

实战案例1:rwx对文件的影响

[root@linux-server ~]# vim /home/file1
date
[root@linux-server ~]# ll /home/file1 
-rw-r--r--. 1 root root 5 Nov  3 15:19 /home/file1[root@linux-server ~]# su - alice  				#切换普通用户
[alice@linux-server ~]$ cat /home/file1 
date
[alice@linux-server ~]$ /home/file1   			#执行文件
-bash: /home/file1: Permission denied			#alice没有运行权限
[alice@linux-server ~]$ exit
logout
[root@linux-server ~]# chmod o+x /home/file1	 #给file1其他用户开通运行权限
[alice@linux-server ~]$ /home/file1 			#alice可以运行文件
Sun Nov  3 15:26:21 CST 2019[root@linux-server ~]# chmod o+w /home/file1	 #给其他用户开通写权限
[alice@linux-server ~]$ vim /home/file1			 #alice可以编辑文件
date
123
ls
#小结: rwx对文件的影响是:
#有r,没wx:只可以查看,不可编辑或者运行;
#有rw,没x:可以查看或者编辑,不可以运行

5.3.rwx对目录的影响

实战案例2:对目录没有w,对文件有rwx

[root@linux-server ~]# mkdir /dir10	
[root@linux-server ~]# touch /dir10/file1
[root@linux-server ~]# chmod 777 /dir10/file1    	#更改文件权限为:所有人都可读写执行
[root@linux-server ~]# ll -d /dir10/			
drwxr-xr-x. 2 root root 19 Nov  3 15:37 /dir10/		#其他用户对目录dir10没有w权限
[root@linux-server ~]# ll /dir10/file1 
-rwxrwxrwx. 1 root root 0 Nov  3 15:37 /dir10/file1
[root@linux-server ~]# vim /dir10/file1				#用户root编辑文件file1
jack
[root@linux-server ~]# su - alice					#切换到alice用户下
Last login: Sun Nov  3 15:28:06 CST 2019 on pts/0
[alice@linux-server ~]$ cat /dir10/file1			#其他用户alice可以查看file文件内容 
jack
[alice@linux-server ~]$ rm -rf /dir10/file1   #权限不够,其他用户alice不能删除div10下的file1文件
rm: cannot remove ‘/dir10/file1’: Permission denied
[alice@linux-server ~]$ touch /dir10/file2   #权限不够,其他用户alice不能在div10目录下新建file2文件
touch: cannot touch ‘/dir10/file2’: Permission denied#小结:若一个目录对用户有r(读)权限,x(运行)权限,但没有w(写)权限,
#并且该目录下只有一个文件file1(对任何用户有rwx权限),那么该用户不能在该目录下创建和删除文件,
#只能查看,修改,运行文件file1文件

实战案例3:对目录有w,对文件没有任何权限

[root@linux-server ~]# chmod 777 /dir10/			#更改目录dir10对所有人的权限为rwx
[root@linux-server ~]# chmod 000 /dir10/file1 	 	 #更改file1文件对所有人的权限为---
[root@linux-server ~]# ll -d /dir10/				#查看目录dir10的信息
drwxrwxrwx. 2 root root 19 Nov  3 15:38 /dir10/
[root@linux-server ~]# ll /dir10/file1 
----------. 1 root root 5 Nov  3 15:38 /dir10/file1
[root@linux-server ~]# su - alice  					 #切换普通用户
Last login: Sun Nov  3 15:38:53 CST 2019 on pts/0
[alice@linux-server ~]$ cat /dir10/file1 		       #alice查看file1文件
cat: /dir10/file1: Permission denied    			   #alice查看没有权限
[alice@linux-server ~]$ rm -rf /dir10/file1				#alice可以删除文件 
[alice@linux-server ~]$ touch /dir10/file2				#alice可以创建新的文件#小结
#用户对目录有w(编辑)权限,而对目录下的file1文件没有任何权限,则用户可以在目录中创建新文件,
#可以删除目录中除file1之外的文件
注意事项
文件: x 权限小心给予
目录: w 权限小心给予

6 权限掩码

umask 用户掩码:控制用户创建文件和目录的默认权限

#root用户默认最高权限
目录---777 文件---666#查看umask
[root@localhost ~]# umask
0022 root账户默认
0002 普通用户默认#通过计算得出root用户创建目录和文件的权限为:
也是现在root用户创建完目录和文件的默认权限:
目录:755
文件:644#修改umask
[root@localhost ~]# umask 0111

7 高级权限

高级权限

suid -----------普通文件

sgid,sticky ----目录

这三个权限不能给到同一个文件

案例1:
将root家目录下的file1.txt文件的属组和属组修改为root,
root用户编辑file1.txt文件
查看file1.txt的权限
切换到普通用户目录,查看/root/file1.txt文件(Permission denied)
代码如下:
[root@linux-server ~]# chown root.root /root/file1.txt
[root@linux-server ~]# vim /root/file1.txt
123
[root@linux-server ~]# ll /root/file1.txt 
-rw-r--r--. 1 root root 0 Nov  1 15:30 /root/file1.txt[root@linux-server ~]# su - alice
Last login: Sun Nov  3 15:57:41 CST 2019 on pts/0
[alice@linux-server ~]$ cat /root/file1.txt
cat: /root/file1.txt: Permission denied问题1: 为什么会失败!案例2:
切换普通用户,查看/etc/shadow
cat: /etc/shadow: 权限不够
切换root用户,给/usr/bin/cat文件授权
chmod u+s /etc/shadow
切换普通用户,再次查看问题2:为什么使用u+s参数,代表什么意思?

7.1.高级权限的类型

高级权限类型数值操作对象注释
suid4二进制命令文件提权,只针对命令的文件
sgid2目录继承属组属性,只针对目录
sticky1目录t权限控制,只针对目录

7.2 设置特殊权限

当文件及文件夹赋予特殊权限时,将占x(执行)位,占位后x权限将会变成特殊字符s、t,如果此文件对应位置为空,那么将变成S、T。

命令:chmod

7.2.1 ugo形式

​ u+s:一个命令,给与用户s权限,则此用户暂时获得这个命令的属主权限

​ g+s:锁定一个文件或目录归属某组

​ o+s:用于公共文件夹的操作,给了t权限,其他用户就不能随意删除你的文件

通常开发过程中需要编辑/etc/hosts文件,每次编辑以sudo方式执行,每次都要输入密码令人不爽,通过执行以下命令即可解决: 
chmod u+s /etc/hosts
7.2.2 数字形式

​ 4–赋予用户s权限–chmod 4777 file

​ 2–赋予组s权限–chmod 2770 dir

​ 1–赋予其他t权限–chmod 1770 dir

7.2.3 三个案例
案例1--suid
suid   普通用户通过suid提权     <针对文件>
在进程文件(二进制,可执行的命令文件)上增加suid权限
[root@linux-server ~]# chmod u+s /usr/bin/cat
[root@linux-server ~]# chmod u+s /usr/bin/rm
[root@linux-server ~]# su - alice
Last login: Wed Nov  6 17:40:40 CST 2019 on pts/0
[alice@linux-server ~]$ cat /root/file1.txt
123
[alice@linux-server ~]$ rm -rf /root/file1.txt可以看出不仅是alice用户可以和root一样执行命令,其他用户也一样
总结:
那么这个特殊权限的特殊性的作用是什么呢?
1、SUID权限仅对命令文件(二进制文件)有效;
2、执行者将具有该程序拥有者(owner)的权限。取消提权
[root@linux-server ~]# ll /usr/bin/rm
-rwsr-xr-x. 1 root root 62864 Nov  6  2016 /usr/bin/rm
此时一旦给rm加上suid权限之后,普通用户相当于root用户。(即提权)[root@linux-server ~]# chmod u-s /usr/bin/rm  #取消提权
案例2--sgid
首先创建一个用户组,两个用户进行这三个案例操作把s放到文件的所属用户组的x位置上的话,就是SGID。那么SGID的功能是什么呢?SGID是继承该程序的所属组。
SGID主要用在目录上-----如果用户在此目录下具有w权限的话,使用者在此目录下建立新文件,则创建的这个文件的群组与此目录的群组相同。[root@linux-server ~]# mkdir /opt/dir1  #创建目录
[root@linux-server ~]# groupadd hr  #创建一个组
[root@linux-server ~]# chmod 775 /opt/dir1/  #设置权限
[root@linux-server ~]# ll -d /opt/dir1/
drwxrwxr-x. 2 root root 6 Nov  6 21:26 /opt/dir1/
[root@linux-server ~]# chown .hr /opt/dir1/  #设置属组
[root@linux-server ~]# chmod g+s /opt/dir1/  #设置sgid
[root@linux-server ~]# ll -d /opt/dir1/
drwxrwsr-x. 2 root hr 6 Nov  6 21:26 /opt/dir1/
[root@linux-server ~]# touch /opt/dir1/a.txt
[root@linux-server ~]# ll /opt/dir1/a.txt
-rw-r--r--. 1 root hr 0 Nov  6 21:33 /opt/dir1/a.txt[root@linux-server ~]# chmod o+w /opt/dir1/ -R 
[root@linux-server ~]# su - alice
Last login: Wed Nov  6 21:34:59 CST 2019 on pts/2
[alice@linux-server ~]$ touch /opt/dir1/b.txt
[alice@linux-server ~]$ ll /opt/dir1/b.txt
-rw-rw-r--. 1 alice hr 0 Nov  6 21:35 /opt/dir1/b.txt
案例3--sticky
这个就是针对others来设置的了,和上面两个一样,只是功能不同而已。
SBIT(Sticky Bit)目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。[root@linux-server ~]# cd /home/
[root@linux-server home]# mkdir dir2
[root@linux-server home]# chmod 757 dir2/
[root@linux-server home]# chmod o+t dir2/
[root@linux-server home]# ll -d dir2/
drwxr-xrwt. 2 root root 52 Oct 31 16:49 dir2/
[root@linux-server home]# useradd jack  #创建用户
[root@linux-server home]# su - alice 
Last login: Wed Nov  6 21:48:12 CST 2019 on pts/2
[alice@linux-server ~]$ touch /home/dir2/alice.txt  #用户alice创建文件
[alice@linux-server ~]$ exit
logout
[root@linux-server home]# su - jack 
Last login: Wed Nov  6 21:48:36 CST 2019 on pts/2
[jack@linux-server ~]$ touch /home/dir2/jack.txt   #用户jack创建文件
[jack@linux-server ~]$ rm -rf /home/dir2/alice.txt 
rm: cannot remove ‘/home/dir2/alice.txt’: Operation not permitted
测试jack删除alice创建的文件,无法删除

8 目前两种给普通用户提权手段

suid: 基本针对所有用户,任何用户在执行有suid权限的程序时(例如/usr/bin/rm),都是以root身份在执行。
sudo: 有针对性,例如针对某个用户以能够以root的身份执行某些命令。

8.1 为用户放开所有命令使用权

为用户jack放开sudo命令使用权????

配置解释:
jack表示用户名
ALL=(ALL)     #表示sudo可以切换到任意用户登陆所有计算机执行命令
NOPASSWD: ALL  #表示所有命令都可以作为root身份执行时不需要root用户的密码

jack ALL=(ALL) NOPASSWD: ALL

[root@linux-server ~]# visudo    #打开配置文件
90 ##
91 ## Allow root to run any commands anywhere
92 root    ALL=(ALL)       ALL
93 jack    ALL=(ALL)       NOPASSWD: ALL   #此处为添加内容
94 ## Allows members of the 'sys' group to run networking, software,
测试
[root@linux-server ~]# su - jack
Last login: Wed Nov  6 22:04:46 CST 2019 on pts/2
[jack@linux-server ~]$ sudo mkdir /test1

8.2 放开部分命令使用权

alice ALL=(ALL) NOPASSWD:/usr/bin/mkdir, /usr/bin/rm, /usr/bin/touch

[root@linux-server ~]# visudo    | vim /etc/sudoers91 ## Allow root to run any commands anywhere92 root    ALL=(ALL)       ALLlisi    ALL=(ALL)       ALL93 jack    ALL=(ALL)       NOPASSWD:ALL94 alice   ALL=(ALL)       NOPASSWD:/usr/bin/mkdir, /usr/bin/rm, /usr/bin/touch95 96 ## Allows members of the 'sys' group to run networking, software,%wheel  ALL=(ALL)       ALL将普通用户加入到wheel组usermod -G wheel  zhangsangpasswd -d zhangsan wheel
测试:
[root@linux-server ~]# su - alice
Last login: Fri Jul 24 00:52:13 CST 2020 on pts/1
[alice@linux-server ~]$ touch /file
touch: cannot touch ‘/file’: Permission denied
[alice@linux-server ~]$ sudo touch /file

8.3 访问控制权限setfacl

setfacl 针对个人设置权限  一个人查看一个文件的权限
getfacl 查看权限
已知文件:
[root@xiaoming tmp]# ll
-rw-r--r-- 1 root root    0 11月 26 11:25 a.txt
如果希望只有xiaoming用户可以rwx操作/tmp/a.txt文件
那么我们可以这样做
setfacl -m u:xiaoming:rwx /tmp/a.txt
-m 设置facl权限
u:  用户,也可以指定组 g
xiaoming: 需要指定的用户
rwx: 权限让我们来看下现在xiaoming是否拥有这个权限:
1、尝试对该文件进行操作
2、getfacl /tmp/a.txt
[root@xiaoming /tmp]# getfacl a.txt 
# file: a.txt
# owner: root
# group: root
user::rw-
user:xiaoming:rwx
group::r--
mask::rwx
other::r--
我们可以看到 xiaoming 拥有了对该文件的rwx权限那么如何收回权限呢
方法1、
setfacl -m u:xiaoming:--- a.txt
方法2、
setfacl -x u:xiaoming a.txt
方法3、
setfacl -b a.txt
我们也可以设置该文件为所有人所有组访问
setfacl -m ::rwx a.txt

setfacl面试嘎嘎猛

chmod 000 /usr/bin/chmod 之后如何恢复chmod命令???
考虑:
此时/usr/bin/chmod文件的权限为---------
想要让/usr/bin/chmod文件再次恢复
提权方法3:给某个用户设置针对某个文件的特殊权限,即给root设置针对/usr/bin/chmod文件的特殊权限

8.4 总结

  • 提权方法1:给某个命令提权
chmod u+s   /usr/bin/rm     #“命令”

缺点:一旦提权,所有用户都可以像root用户一样执行命令

  • 提权方法2:给某个用户某些命令的权限
visudo

缺点:被提权的用户将会拥有某些或者全部root用户的权限

  • 提权方法3:给某个用户设置针对某个文件的特殊权限
setfacl

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

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

相关文章

Open CASCADE学习|一个点的坐标变换

gp_Trsf 类是 Open CASCADE Technology (OCCT) 软件库中的一个核心类&#xff0c;用于表示和操作三维空间中的变换。以下是该类的一些关键成员和方法的介绍&#xff1a; 成员变量&#xff1a; scale: Standard_Real 类型&#xff0c;表示变换的缩放因子。 shape: gp_TrsfFor…

Android11 SystemUI clock plugin 插件入门

插件的编写 参照ExamplePlugin&#xff0c;需要系统签名。 需要先编译以下模块得到jar&#xff0c;引用在项目中。 m SystemUIPluginLibcom.android.systemui.permission.PLUGIN PluginManager.addPluginListener SystemUI 是如何发现 clock plugin 的&#xff1f; Syste…

FDY10蓄电池容量检测仪

FDY10-H说明书2013 08.pdf (book118.com)https://max.book118.com/html/2017/0510/105769526.shtm FDY10用户手册 - 百度文库 (baidu.com)https://wenku.baidu.com/view/22e7fe672d3f5727a5e9856a561252d380eb20ac?aggId28d62908f12d2af90242e62a&frcatalogMain_graph_v10…

ThingsBoard处理设备上报的属性并转换为可读属性

一、前言 二、案例 1、AI生成JSON数据体 2、将json数据体直接通过遥测topic发送查看效果 3、可查看目前整个数据都在一起 ​编辑 4、配置附规则链路 5、对msg的消息值&#xff0c;进行数据的转换&#xff0c;并从新进行赋值。 6、规则链路关联关系 7、再次通过MQTT发送遥…

WebGIS

文章目录 GIS的全名是Geographic Information System&#xff0c;中文全名是地理信息系统。 它是在计算机硬、软件系统支持下&#xff0c;对整个或部分地球表层&#xff08;包括大气层&#xff09;空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术…

详解23种设计模式——单例模式

单例模式 | CoderMast编程桅杆单例模式 单例模式是最常用的设计模式之一&#xff0c;他可以保证在整个应用中&#xff0c;某个类只存在一个实例化对象&#xff0c;即全局使用到该类的只有一个对象&#xff0c;这种模式在需要限制某些类的实例数量时非常有用&#xff0c;通常全局…

【GitHub】如何在github上提交PR(Pull Request) + 多个pr同时提交、互不干扰

【GitHub】如何在github上提交PR(Pull Request 写在最前面1. 准备工作1.1 注册 GitHub 账号1.2 了解 Git 基础1.3 找到一个项目 2. 创建你的 PR2.1 Fork 和克隆仓库2.2 创建一个新的分支2.3 进行更改2.4 推送更改到 GitHub2.5 创建 Pull Request 3. 优化你的 PR3.1 保持提交清晰…

JetBot手势识别实验

实验简介 本实验目的在JetBot智能小车实现手势识别功能&#xff0c;使用板卡为Jetson Nano。通过小车摄像头&#xff0c;识别五个不同的手势&#xff0c;实现小车的运动及灯光控制。 1.数据采集 连接小车板卡的Jupyterlab环境&#xff0c;运行以下代码块&#xff0c;配置数据…

Vitis HLS 学习笔记--C/C++ static 关键字的作用

目录 1. 简介 2. c/c共有性质 3. c独有性质 4. 示例说明 5. static 对于 HLS 工具的影响 6. 总结 1. 简介 在Vitis HLS中&#xff0c;偶尔会用到 static 关键字。考虑到Vitis HLS同时兼容C和C语言&#xff0c;有必要理解这两种语言中static关键字细微差异。本文旨在梳理…

Linux cmake 初窥【1】

1.开发背景 linux 下编译程序需要用到对应的 Makefile&#xff0c;用于编译应用程序&#xff0c;但是 Makefile 的语法过于繁杂&#xff0c;甚至有些反人类&#xff0c;所以这里引用了cmake&#xff0c;cmake 其中一个主要功能就是用于生成 Makefile&#xff0c;cmake 的语法更…

AIGC:开启内容创作新纪元,我们如何看待它的影响与前景?

AIGC的概念 AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;的概念主要是指人工智能生成内容。 这是一种新的人工智能技术&#xff0c;它利用人工智能模型&#xff0c;根据给定的主题、关键词、格式、风格等条件&#xff0c;自动生成各种类型的文本、图…

Maya vs Blender:制作3D动画首选哪一个?

就 3D 动画而言&#xff0c;有两款3D软件引发了最多的争论&#xff1a;Blender 与 Maya。这两个强大的平台都提供强大的工具集&#xff0c;使动画故事和角色栩栩如生。但作为一名3D动画师&#xff0c;您应该投入时间学习和创作哪一个呢&#xff1f;下面我将从以下六点给您一个清…

SQL优化——全自动SQL审核

文章目录 1、抓出外键没创建索引的表2、抓出需要收集直方图的列3、抓出必须创建索引的列4、抓出SELECT * 的SQL5、抓出有标量子查询的SQL6、抓出带有自定义函数的SQL7、抓出表被多次反复调用SQL8、抓出走了FILTER的SQL9、抓出返回行数较多的嵌套循环SQL10、抓出NL被驱动表走了全…

关于豆瓣电影数据抓取以及可视化

首先我们可以先了解以下网络爬虫的定义&#xff1a; 爬虫是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。它可以在互联网上自动抓取网页内容&#xff0c;将这些信息存储起来。爬虫可以抓取网站的所有网页&#xff0c;从而获取对于我们有价值的信…

企业战略落地:单项目无法解决的,交给项目组合管理

在快速变化的市场环境中&#xff0c;企业对项目管理的需求日益增加&#xff0c;但传统的单项目管理和项目集管理难以满足企业对项目管理的更高要求。随后&#xff0c;项目组合管理方法论逐渐被越来越多的企业运用&#xff0c;并用于指导企业在复杂多变的经营环境下&#xff0c;…

JVM(Jvm如何管理空间?对象如何存储、管理?)

Jvm如何管理空间&#xff08;Java运行时数据区域与分配空间的方式&#xff09; ⭐运行时数据区域 程序计数器 程序计数器&#xff08;PC&#xff09;&#xff0c;是一块较小的内存空。它可以看作是当前线程所执行的字节码的行号指示器。Java虚拟机的多线程是通过时间片轮转调…

《HCIP-openEuler实验指导手册》1.5 Apache持久化连接配置

一、知识点 二、配置方法 在/etc/httpd/conf.d目录中创建持久连接相关配置文件keepalived.conf&#xff0c;并添加如下配置信息&#xff1a; KeepAlive On KeepAliveTimeout 20 MaxKeepAliveRequests 500

目标检测——大规模商品数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

【STM32F407+CUBEMX+FreeRTOS+lwIP之TCP记录】

STM32F407CUBEMXFreeRTOSlwIP之TCP记录 注意TCP client(socket)示例 TCP_server(socket)效果 注意 如果连接失败&#xff0c;建议关一下代理软件。 配置方面可以参考一下上一篇UDP的文章 STM32F407CUBEMXFreeRTOSlwIP之UDP记录 TCP client(socket) #define LWIP_DEMO_PORT 8…

OpenSceneGraph

文章目录 关于 OpenSceneGraphScreenshots - OpenMW 关于 OpenSceneGraph 官网&#xff1a;https://openscenegraph.github.io/openscenegraph.io/github : https://github.com/openscenegraph/OpenSceneGraphClasses : https://podsvirov.github.io/osg/reference/opensceneg…