【Linux基础】权限管理
👻内容专栏: Linux操作系统基础
🐨本文概括: 用户之间的切换、sudo提权、Linux权限管理、文件访问权限的相关方法、目录权限、粘滞位等
🐼本文作者: 阿四啊
🐸发布时间:2023.9.11
Linux权限
概念
Linux权限是一种关键的安全概念,用于控制用户对文件和目录的访问和操作。理解和管理权限对于确保系统的安全性和数据的保护至关重要。
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
用户切换命令
普通用户切换到root用户
su root
:切换到root用户,但不改变环境。
使用 su root
命令,将切换到root用户的身份,但不会改变当前环境设置。这意味着将继续使用原始用户的环境变量、路径设置等。
例如,如果使用 su root
切换到root用户,将继续使用原始用户的工作目录和shell配置。
[Asi@localhost ~]$ su root
Password:
[root@localhost Asi]# exit
[Asi@localhost ~]$
su - root
:切换到root用户,同时改变环境。
使用 su - root
命令,将切换到root用户的身份,并且会改变当前环境设置,包括工作目录、环境变量和shell配置。这样子会话更像是以root用户的身份登录系统一样。
例如,如果使用 su - root
切换到root用户,将获得root用户的工作目录和与root用户相关的环境设置。
[Asi@localhost ~]$ su - root
Password:
Last login: Sun Sep 10 19:00:11 CST 2023 on pts/0
[root@localhost ~]# logout
[Asi@localhost ~]$
说明:普通账号更为root账号,
su
:单纯的账号切换。su -
:让root账号重新登录。- 需要输入root用户的密码。
普通用户之间的切换
su
和su -
命令切换到普通用户和root是一样的,所以你需要切换到另一个用户,前提还是需要知道Ta的密码啦~
[Asi@localhost ~]$ whoami
Asi
[Asi@localhost ~]$ su cyn
Password:
[Asi@localhost ~]$ su - cyn
Password:
[Asi@localhost ~]$
sudo提权
普通用户可以使用 sudo
执行需要root用户权限的命令,例如安装软件、修改系统配置文件或执行系统维护任务。
[Asi@localhost ~]$ sudo ls
[sudo] password for Asi:
Asi is not in the sudoers file. This incident will be reported.
若显示"xx is not in the sudoers file. This incident will be reported."
说明该普通用户没有sudo
权限,因为新建的普通用户默认不支持sudo
权限。
需要编辑"sudoers"文件。步骤如下:
- 首先切换到root用户,输入以下命令(或使用 vim /etc/sudoers)
[root@localhost ~]# sudo visudo
- 在文件中查找下面的行(可以在底行模式输入
/Allow
搜索即可)
## Allow root to run ang commands anywhere
- 在上述行的下面,添加一行以允许普通用户使用sudo。例如,如果要允许用户"Asi"使用sudo,可以添加以下行:
然后我们创建一个test.txt
文件,是以普通用户Asi创建的,然后我们再用sudo
命令创建一个test2.txt
的文件,并没有要求我输入密码,是因为以方便普通用户在几分钟或者十几分钟之内可能仍需要强权执行任务。
[Asi@localhost ~]$ sudo ls
[sudo] password for Asi:
[Asi@localhost ~]$ touch test.txt
[Asi@localhost ~]$ ll
total 0
-rw-rw-r-- 1 Asi Asi 0 Sep 10 19:52 test.txt
[Asi@localhost ~]$ sudo touch test2.txt
[Asi@localhost ~]$ ll
total 0
-rw-r--r-- 1 root root 0 Sep 10 19:53 test2.txt
-rw-rw-r-- 1 Asi Asi 0 Sep 10 19:52 test.txt
Linux权限管理
在linux操作系统当中,大多数的操作都涉及对于文件的操作。所以说,权限通常与文件、目录关联在一起。
文件访问者的分类(人)
- 拥有者:文件和文件目录的所有者:u—User(中国平民 法律问题)
- 所属组:文件和文件目录的所有者所在的组的用户:g—Group
- other:其它用户:o—Others (外国人)
📌说明:那么上面的root用户和普通用户,与这里的用户有冲突吗?并不是,超级用户与普通用户是指具体的人,而这里的文件访问者可以看作一种角色,而具体的人,可以承担各种各样的角色。
文件类型和访问权限(事物属性)
[Asi@localhost ~]$ ll
total 4
-rw-rw-r-- 1 Asi Asi 103 Sep 11 10:31 test.txt
文件类型
⚠️注意:在Linux当中,Linux系统本身区分文件类型与后缀无关,是与该文件是否具有可执行权限有关,后缀是给人看的!
那么Linux文件类型如何分类呢?用第一列的第一个字符来区分文件类型。
d
[directory]:文件夹-
:普通文件l
[link]:软链接(类似Windows的快捷方式)b
[block]:块设备文件(例如硬盘、光驱等)p
[pipe]:管道文件c
[char]:字符设备文件(例如屏幕等串口设备)s
[socket]:套接口文件
基本权限
- 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
- 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
- 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
- “-” :表示不具有该项权限。
文件权限值的表示方法
- 字符表示方法
Linux表示 | 说明 | Linux表示 | 说明 |
---|---|---|---|
r - - | 只读 | - w - | 仅可写 |
- - x | 仅可执行 | r w - | 可读可写 |
- w x | 可写可执行 | r - x | 可读可执行 |
r w x | 可读可写可执行 | - - - | 无权限 |
- 八进制数值表示方法
权限符号 | 八进制 | 二进制 |
---|---|---|
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
r w | 6 | 110 |
r x | 5 | 101 |
w x | 3 | 011 |
r w x | 7 | 111 |
- - - | 0 | 000 |
文件访问权限的相关设置方法
1. chmod
命令
-
功能:设置文件的访问权限
-
格式:chmod [参数] 权限 文件名
-
常用选项:
- R->递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以修改文件的权限
-
chmod命令权限值的格式:
- ①用户标识符+、-、=权限字符
权限符号:
+
:向权限范围增加权限代号所表示的权限
-
:向权限范围取消权限代号所表示的权限
=
:向权限范围赋予权限代号所表示的权限
用户标识符:
u
:拥有者
g
:拥有者同组用
o
:其它用户
a
:所有用户- 示例
[Asi@localhost ~]$ ll total 4 -rw-rw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rw-r-- 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod u+x abc.txt [Asi@localhost ~]$ ll total 4 -rwxrw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rw-r-- 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod g+x,o+w abc.txt [Asi@localhost ~]$ ll total 4 -rwxrwxrw- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rw-r-- 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod a+x test.txt [Asi@localhost ~]$ ll total 4 -rwxrwxrw- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rwxrwxr-x 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod u=rw test.txt [Asi@localhost ~]$ ll total 4 -rwxrwxrw- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rwxr-x 1 Asi Asi 103 Sep 11 10:31 test.txt
- ②三位八进制数字
示例:
[Asi@localhost ~]$ ll total 4 -rwxrwxrw- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rwxr-x 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod 664 abc.txt [Asi@localhost ~]$ ll total 4 -rw-rw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-rwxr-x 1 Asi Asi 103 Sep 11 10:31 test.txt [Asi@localhost ~]$ chmod 640 test.txt [Asi@localhost ~]$ ll total 4 -rw-rw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-r----- 1 Asi Asi 103 Sep 11 10:31 test.txt
2. chown
命令
- 功能:修改文件的拥有者
- 格式:chown [参数] 用户名 文件名
- 示例:
[Asi@localhost ~]$ chown user1 test.txt chown: changing ownership of ‘test.txt’: Operation not permitted [Asi@localhost ~]$ sudo chown user1 test.txt [Asi@localhost ~]$ ll total 4 -rw-rw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-r----- 1 user1 Asi 103 Sep 11 10:31 test.txt
3. chgrp
命令
-
功能:修改文件或目录的所属组
-
格式:chgrp [参数] 用户组名 文件名
-
常用选项:-R 递归修改文件或目录的所属组
-
示例:
[Asi@localhost ~]$ sudo chgrp user1 test.txt [sudo] password for Asi: [Asi@localhost ~]$ ll total 4 -rw-rw-r-- 1 Asi Asi 0 Sep 11 11:35 abc.txt -rw-r----- 1 user1 user1 103 Sep 11 10:31 test.txt
4. umask
命令
-
前提:我们先研究一下默认权限
通过观察,我们可以看到创建普通文件的默认权限用八进制数字表示是664
创建目录文件的默认权限用八进制数字表示是775
[Asi@localhost ~]$ touch test1.txt [Asi@localhost ~]$ mkdir dir1 [Asi@localhost ~]$ ll total 8 drwxrwxr-x 2 Asi Asi 4096 Sep 11 13:16 dir1 -rw-rw-r-- 1 Asi Asi 0 Sep 11 13:16 test1.txt
-
功能:查看或修改文件权限掩码
- 新建文件起始权限为
666
,新建目录起始权限为777
- 所以实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到权限掩码
umask
的影响。
- 新建文件起始权限为
-
格式:umask [权限值]
我们可以输入umask查看Linux的默认权限掩码为0002
,是需要看后三位,第一位告诉我们为八进制数字,不需要管第一位。那么我们使用umask 0004
修改权限掩码之后,再次创建test2.txt
文件,发现这个文件的权限变为了662
,咦,那么最终的权限是怎么推算的呢?[Asi@localhost ~]$ umask 0002 [Asi@localhost ~]$ umask 0004 [Asi@localhost ~]$ touch test2.txt [Asi@localhost ~]$ ll total 8 drwxrwxr-x 2 Asi Asi 4096 Sep 11 13:16 dir1 -rw-rw-r-- 1 Asi Asi 0 Sep 11 13:16 test1.txt -rw-rw--w- 1 Asi Asi 0 Sep 11 13:27 test2.txt
-
规则:
最终权限 = 起始权限 & (~umask)
.凡是在权限掩码中出现的权限,最终都要在起始权限中去掉。
那么,最终的权限就是单纯的起始权限减去umask
所得到的结果吗?- 验证:
如果对于一个普通文件起始权限为666
,将权限掩码设为003
,那么最终普通文件权限会是我们计算的rw-rw--wx
权限吗?
我们执行umask 0003
,创建一个test3.txt
文件,然后执行ll
命令,发现此普通文件的权限为rw-rw-r--
.结果是怎么回事呢?
[Asi@localhost ~]$ umask 0003 [Asi@localhost ~]$ touch test3.txt [Asi@localhost ~]$ ll total 8 -rw-rw-r-- 1 Asi Asi 0 Sep 11 14:03 test3.txt
👇🤔让我们具体分析一下:
所以我们的计算并不是相减那么简单,当然也并不复杂,这里就需要用到按位与运算符
&
来计算。我们知道,1 & 1 = 1, 1 & 0 = 0 ,0 & 1 = 0, 0 & 0 = 0
,所以我们可以先对umask
按位取反再按位与上起始权限,所得到的就是最终权限了。 - 验证:
5. file
命令
- 功能说明:辨识文件类型
- 语法: file [选项] 文件或目录
- 常用选项:
- -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
- -z 尝试去解读压缩文件的内容
目录的权限
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中。
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
-
进入一个目录,需要什么权限呢?
我们对拥有者的r
、w
、x
权限进行了验证,最后没有x
权限的情况下,系统提示:-bash: cd: dir: Permission denied
,所以,进入一个目录,需要执行权限。[Asi@localhost study]$ mkdir dir [Asi@localhost study]$ ll dir total 0 [Asi@localhost study]$ ll total 4 drwxrwxr-x 2 Asi Asi 4096 Sep 11 14:53 dir [Asi@localhost study]$ chmod u-r dir [Asi@localhost study]$ cd dir [Asi@localhost dir]$ cd .. [Asi@localhost study]$ chmod u+r,u-w dir [Asi@localhost study]$ cd dir [Asi@localhost dir]$ cd .. [Asi@localhost study]$ chmod u+w,u-x dir [Asi@localhost study]$ ll total 4 drw-rwxr-x 2 Asi Asi 4096 Sep 11 14:53 dir [Asi@localhost study]$ cd dir -bash: cd: dir: Permission denied
-
那么对于一个目录的
r
权限,将有什么限制呢?
通过下面验证,我们可以知道,是否允许一个指定用户查看目录的文件列表,需要r
权限。[Asi@localhost study]$ ll total 4 d-wxrwxr-x 2 Asi Asi 4096 Sep 11 14:53 dir [Asi@localhost study]$ cd dir [Asi@localhost dir]$ ls ls: cannot open directory .: Permission denied [Asi@localhost dir]$ touch test.txt [Asi@localhost dir]$ ll ls: cannot open directory .: Permission denied
-
那么对于一个目录的
w
权限,将有什么限制呢?
我们删去了dir目录的w
权限,发现可以进入该目录,可以查看该目录的文件列表,但是不可以在该目录下创建文件。[Asi@localhost study]$ chmod u+r,u-w dir [Asi@localhost study]$ ll total 4 dr-xrwxr-x 2 Asi Asi 4096 Sep 11 15:03 dir [Asi@localhost study]$ cd dir [Asi@localhost dir]$ pwd /home/Asi/study/dir [Asi@localhost dir]$ ll total 0 -rw-rw-r-- 1 Asi Asi 0 Sep 11 15:03 test.txt [Asi@localhost dir]$ touch test1.txt touch: cannot touch ‘test1.txt’: Permission denied
于是, 问题来了~~
换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.
这好像不太对啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下。
[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--. 1 root root 0 9月 19 15:58 abc.c
drwxr-xr-x. 27 lisi lisi 4096 9月 19 15:53 lisi
-rw-r--r--. 1 root root 0 9月 19 15:59 root.c
[root@localhost ~]# su - lisi
[lisi@localhost ~]$ rm /home/root.c #lisi可以删除root创建的文件
rm:是否删除有写保护的普通空文件 "/home/root.c"?y
[lisi@localhost ~]$ exit
logout
一般而言,不同的账号是不会在同一目录下的。
因为默认新建的用户,只有拥有者,也就是`root`才具有权限。
[root@localhost home]# ll
total 24
drwx------ 3 admin admin 4096 Aug 31 11:14 admin
drwx------ 4 Asi Asi 4096 Sep 11 14:52 Asi
drwx------ 2 zhangsan zhangsan 4096 Sep 11 12:56 user1
drwx------ 2 zhangsan zhangsan 4096 Sep 11 15:25 zhangsan
那么假如有特殊情况,应任务需要,在一个团队中多个账号协同共享一些数据呢?这样就不会在某一个人的主工作目录之下,而是在root用户的根目录下创建一个名为shared
的目录,要求团队用户都在这个share
路径下工作,那么此时对于root的角度来说,other的rwx
权限也需要同时放开,那么为了避免他人删除该目录下的一些共享数据(假如两人闹掰了,张三想要删除李四在shared
目录里写的文件),此时w
权限是不是应该取消呢? 如果取消,那么团队里的成员该如何往shared
里面写数据呢?
这样的问题是不是很棘手,下面针对这个问题,我们引入粘滞位的概念。
粘滞位
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
相关文章:

【Linux基础】权限管理
👻内容专栏: Linux操作系统基础 🐨本文概括: 用户之间的切换、sudo提权、Linux权限管理、文件访问权限的相关方法、目录权限、粘滞位等 🐼本文作者: 阿四啊 🐸发布时间:2023.9.11 …...

C++初阶--类和对象(中)
目录 类的6个默认成员函数构造函数使用方法 析构函数使用方法 拷贝构造函数使用方法 赋值运算符重载赋值运算符重载 const成员 上篇末尾我们讲到了关于c实现栈相较于c语言在传递参数时的一些优化,但实际上,c在 初始化 清理 赋值 拷贝等方面也做了很大程…...

【MySQL系列】视图特性
「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 视图1.1 视图概念1.2 创建视图1.3 修改互相影响1.4 删除视图1.5 视图规则和限制 视图 1.1 视图概念 视图是一个虚拟表,其内容由查询定义同真实的表一样…...

管理类联考——数学——汇总篇——知识点突破——应用题——最值问题
⛲️ 一、考点讲解 最值问题是应用题中最难的题目,也是考生普遍丢分的题目。最值问题一般要结合函数来分析,一般结合二次函数和平均值定理求解。最值问题的求解步骤是:先设未知变量,然后根据题目建立函数表达式,最后利…...

学习SpringMvc第二战之【SpringMVC之综合案例】
目录 一. 参数传递 1.前期准备工作(替换pom.xml中的部分依赖) 1.1将log4j替换成为slf4j(将打印语句替换成为日志文件输出结果) 2.正式操作 1.基础传参 1.1创建方法,用于验证传参 1.2构建界面回显 1.3设置访问路径(localho…...

【算法日志】单调栈: 单调栈简介及其应用
代码随想录刷题60Day 目录 单调栈简介 单调栈的应用 下次更高温 下一个更大元素1 下一个更大元素2 接雨水 柱状图中最大矩形 单调栈简介 单调栈(Monotonic Stack)是一种特殊的栈数据结构,它满足元素的单调性,这种单调性需…...

VSCode自动分析代码的插件
今天来给大伙介绍一款非常好用的插件,它能够自动分析代码,并帮你完成代码的编写 效果如下图 首先我们用的是VSCode,(免费随便下) 找到扩展,搜索CodeGeeX,将它下载好,就可以实现了 到…...

设计模式之外观模式
文章目录 影院管理项目传统方式解决影院管理传统方式解决影院管理问题分析外观模式基本介绍外观模式原理类图外观模式解决影院管理传统方式解决影院管理说明外观模式应用实例 外观模式的注意事项和细节 影院管理项目 组建一个家庭影院: DVD 播放器、投影仪、自动屏…...
Web端测试和 App端测试有何不同?
Web 端测试和 App 端测试是针对不同平台的上的应用进行测试,Web应用和App端的应用实现方式不同,测试时的侧重点也不一样。 今天这篇文章就来介绍下两者的不同之处以及测试时的侧重点。 同时,我也准备了一份软件测试面试视频教程(…...

12.(Python数模)(相关性分析一)相关系数矩阵
相关系数矩阵 相关系数矩阵是用于衡量多个变量之间关系强度和方向的统计工具。它是一个对称矩阵,其中每个元素表示对应变量之间的相关系数。 要计算相关系数矩阵,首先需要计算每对变量之间的相关系数。常用的相关系数包括皮尔逊相关系数和斯皮尔曼相关…...

系统架构设计师(第二版)学习笔记----嵌入式系统及软件
【原文链接】系统架构设计师(第二版)学习笔记----嵌入式系统及软件 文章目录 一、嵌入式系统1.1 嵌入式系统的组成1.2 嵌入式系统的特点1.3 嵌入式系统的分类 二、嵌入式软件2.1 嵌入式系统软件分层2.2 嵌入式软件的主要特点 三、安全攸关软件的安全性设…...
Python列表操作指南:索引、切片、遍历与综合应用
文章目录 列表简介创建列表索引和切片列表的长度列表的拼接和重复检查元素是否存在列表的方法index() 方法count() 方法 列表的修改和删除修改元素删除元素列表的排序和反转添加元素 列表的拷贝列表的遍历列表的切片列表的嵌套列表推导式 python精品专栏推荐python基础知识&…...

第15章_锁: MySQL并发访问相同记录以及从数据操作的类型划分锁(读锁、写锁)
事务的 隔离性 由这章讲述的 锁 来实现。 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在程序开发中会存在多线程同步的问题, 当多个线程并发访问某个数据的时候, 尤其是针对一些敏感数据(订单, 金额), 我们就需要保证这个数据在任何时刻最多只有一个线…...

PHP 排序函数使用方法,按照字母排序等操作
详解PHP排序方法使用 一、sort() 函数 用于对数组单元从低到高进行排序。 //数组 $data array(D,F,A,C,B); //排序 sort($data); //输出排版标签 echo "<pre>"; //打印数据 print_r($data);die;输出结果: 二、rsort() 函数 用于对数组单元从高到…...

windows本地验证码识别工具
windows本地验证码识别小工具 - 可以用在windows系统中,并可以集成在Java或python程序中 演示视频如下:可用于识别4-7位的字母数字组合的验证码(识别准确率在70% - 80%)。 验证码识别演示 本项目未开源,如需使用请联…...

修改图片尺寸的几个简单方法
修改图片尺寸的几个简单方法~~图片,是我们常用的文件格式,也是日常生活与工作中重要的文件。图片记录了非常多的元素和内容,其中不乏有工作上的内容,也有对一些日常生活的记录。所以说,图片文件对我们来说是非常重要的…...
三、GoLang字符串的基本操作
一、转义符是什么? 转义字符意义\n换行,将当前位置移动到下一行开头\r回车,将当前位置移到本行开头\t相当于一个Tab键\\代表一个反斜线“\”\"代表一个双引号字符 代码实战 package mainimport "fmt"/* *字符串基本用法 */ func main…...

基于vue-cli创建后台管理系统前端页面——element-ui,axios,跨域配置,布局初步,导航栏
目录 引出安装npm install安装element-ui安装axios 进行配置main.js中引入添加jwt前端跨域配置 进行初始布局HomeView.vueApp.vue 新增页面和引入home页面导航栏总结 引出 1.vue-cli创建前端工程,安装element-ui,axios和配置; 2.前端跨域的配…...
在 ubuntu20.04 上安装 Pytorch
参考资料:https://www.linode.com/docs/guides/pytorch-installation-ubuntu-2004/ sudo apt update sudo apt install nvidia-cuda-toolkit (3G) mkdir anaconda cd ~/anaconda wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh chmod …...

远程恋爱网站部署秘籍——群晖虚拟机助ni秀恩爱
文章目录 前言1. 安装网页运行环境1.1 安装php1.2 安装webstation 2. 下载网页源码文件2.1 访问网站地址并下载压缩包2.2 解压并上传至群辉NAS 3. 配置webstation3.1 配置网页服务3.2 配置网络门户 4. 局域网访问静态网页配置成功5. 使用cpolar发布静态网页,实现公网…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...