【Linux】权限相关指令

article/2025/7/28 22:19:57

前言:

        上两篇文章我们讲到了,关于Linux中的基础指令。

       【Linux】初见,基础指令-CSDN博客【Linux】初见,基础指令-CSDN博客

        本文我们来讲Linux中关于权限中的一些指令

shell命令 

Linux严格来说是一个操作系统,我们称之为“核心”(kernel)。而作为用户的我们并不能直接与核心交流,这时候就有一个中间人的角色出现:将我们的指令翻译为核心可以看懂的符号,交由核心执行,并将执行结果翻译并返回给我们。

这个中间人就是“包裹”在核心外的“外壳程序”,介于我们和核心之前。我们称之为:shell命令

从技术层面来讲,shell的最简单定义就是:命令解释器。其主要功能就是:

        1.将命令翻译后交给核心执行

        2.将核心执行的结果翻译并返回给我们 

形象理解shell

        假如小y过年回家打算相亲了,打算小y并不擅长与异性交流,这时候就拜托了媒人王姨作为中间人,帮忙小y和异性之前传话。这时候王姨就是“外壳程序”shell。

为什么要有shell?

        1.方便用户使用

        2.作为外壳程序,保护核心

补充

权限概念

Linux中权限分为两种:root账号、普通账号

root账号:为超级权限账号,不受任何权限限制

普通账号:受到权限限制,在Linux中只能做有限的事

su 
命令:su  用户名

功能:切换账号

hyc@hcss-ecs-4ce7:/$ whoami
hyc#切换root账号执行su即可
hyc@hcss-ecs-4ce7:/$ su
#输入root账号密码
Password: 
root@hcss-ecs-4ce7:/# whoami
root#切换普通账号:su 用户名(不需要密码)
root@hcss-ecs-4ce7:/# su hyc
hyc@hcss-ecs-4ce7:/$ whoami
hyc

补充:普通用户 -> root账号,除了su可以实现,su -也可以实现。但是区别是?

hyc@hcss-ecs-4ce7:/$ pwd
/
hyc@hcss-ecs-4ce7:/$ su
Password: 
root@hcss-ecs-4ce7:/# whoami
root
root@hcss-ecs-4ce7:/# pwd
/hyc@hcss-ecs-4ce7:/$ pwd
/
hyc@hcss-ecs-4ce7:/$ su -
Password: 
root@hcss-ecs-4ce7:~# whoami
root
root@hcss-ecs-4ce7:~# pwd
/root#我们可以看到su、su-,都成功的切换到了root。
#不同的是su切换账号并不会改变之前所处路径,既su不会改变位置
#而su-会改变位置,之前是/下,切换之后在/root下

sudo:短暂的指令提权

        如果我们需要使用root权限来执行一些指令,但是却没有root密码怎么办?

        在指令最前面加上sudo,就可以使用root权限执行命令

hyc@hcss-ecs-4ce7:~$ sudo ls
[sudo] password for hyc: 

         这样确实方便,但是有一个问题:那岂不是人人都可以使用root权限了?这不乱套了?

        Linux设计者当然考虑到了这个问题,普通用户如果想要使用sudo进行指令提权。必须要root账号给予普通账号提权权限才行。所以并不是什么普通账号都可以进行提权

没有提权权限的账户,就会显示以下报错

hyc@hcss-ecs-4ce7:~$ sudo ls
[sudo] password for hyc: 
hyc is not in the sudoers file.  This incident will be reported.

总结:

普通 -> root:su(不会改变位置)

                      su-(会改变位置:默认切换至家目录)

root -> 普通:su  用户名

sodu : 指令提权

权限管理

权限的本质是:能做或者不能做什么事情(控制用户行为,防止错误操作)

理解:

        1.权限限制的是

        2.权限要求目标必须具备对应属性:权限:角色+目标属性(权限)

属性

对于Linux中的属性来说主要为三个:读、写、执行

读:r

写:w

执行:x

之前我们说过第一个字母代表文件属性,而后面的一串字符则代表该文件的权限

r:对文件来说,代表可以读取文件内容;对目录来说,代表可以浏览目录内容

w:对文件来说,代表可以修改文件内容;对目录来说,代表可以删除目录中的内容

x:对文件来说,代表可以执行该文件;对目录来说,代表可以进入该目录

但是为什么这里有多个wrx呢?这就涉及到角色的问题。

角色

上面我们说了权限=角色+对应属性

属性代表相应的角色拥有什么权限,那么我们是如何分辨角色呢?如何知道角色对应所拥有的权限呢?

首先我们可以通过命令行得知我们当前的角色、或者使用whoami指令

然后根据当前用户,来判断其说拥有的权限

解释:

        我们当前用户是root,对于第一个目录来说,我们就是其拥有者。所对应拥有的权限则是rwx

而什么是所属组?什么是other呢?

        所属组就是当前角色不是拥有者,但是与拥有者在同一个队伍中。这时候就会匹配所属组权限,这时候这个角色就是所属者。

        所属组的存在是为了更精细化的权限管理。举例:a组和b组都在同一台Linux机器上开发项目,a组项目代码需要公开出来让a组全体成员都能看见,但是不希望b组看见。这时候就只需要将a组全体成员纳入所属组中,然后将other权限关闭,就可以实现。(现在很少用到了,了解即可)

        other就是既不属于拥有者,也不属于所属者的角色。这时候就会匹配other权限。

如何描述文件权限信息?

-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt

          对于new.txt这个文件来说权限的描述应该为:拥有者权限为rw,所属组权限为r,other权限为r。

文件权限表示方法

1.字符表示法

        3个字母为一组,分别为:r、w、x,如没有对应权限则用 " - "表示。其顺序是固定的不可交换

2.8进制表示法 

   

chmod指令

语法:chmod  参数  权限  文件名

功能:改变文件权限(只有root或者文件拥有者才有资格修改权限)

选项:

-R:递归的将目录下的文件权限全部修改

参数:

u:拥有者

g:所属组

o:other

a:有所用户

实际操作展示 :

root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#关闭u的w权限
root@hcss-ecs-4ce7:~# chmod u-w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-r--r--r-- 1 root root 22902 May 18 11:51 new.txt#开放u的w权限
root@hcss-ecs-4ce7:~# chmod u+w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#关闭u的多条权限
root@hcss-ecs-4ce7:~# chmod u-rw new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
----r--r-- 1 root root 22902 May 18 11:51 new.txt#开放u的多条权限
root@hcss-ecs-4ce7:~# chmod u+rw new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#开放g的w权限
root@hcss-ecs-4ce7:~# chmod g+w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-rw-r-- 1 root root 22902 May 18 11:51 new.txt#关闭g的w权限
root@hcss-ecs-4ce7:~# chmod g-w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#以此类推,其他的权限操作类似

另外也可以通过八进制来实现多个用户权限的修改:

root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#通过3个8进制数字实现,对多个用户权限修改
root@hcss-ecs-4ce7:~# chmod 000 new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
---------- 1 root root 22902 May 18 11:51 new.txtroot@hcss-ecs-4ce7:~# chmod 663 new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-rw--wx 1 root root 22902 May 18 11:51 new.txt

修改权限注意事项

1.任何人都可以修改文件权限吗?

        只有root和文件拥有者才能修改权限!

2.如果在进行相应操作时没有权限会怎么样?

        系统会拒绝我们的指令请求

hyc@hcss-ecs-4ce7:~$ ls -l
total 0
-rw-rw-r-- 1 hyc hyc 0 May 24 23:07 new.txthyc@hcss-ecs-4ce7:~$ chmod u-r new.txt
hyc@hcss-ecs-4ce7:~$ ls -l
total 0
--w-rw-r-- 1 hyc hyc 0 May 24 23:07 new.txthyc@hcss-ecs-4ce7:~$ cat new.txt
cat: new.txt: Permission denied

3.确定权限信息时,系统会先确认谁?

        先确认拥有者权限,再确认所属组,最后是other。权限只会确定一次,不会多次确定,第一次匹配上的权限既为我们当前角色所拥有的权限

4.root账号权限?

        拥有最高权限,不受一切权限的限制。所有设定的限制只针对普通账号有用。

5.可执行权限?

        我们之前所讲的例子中都没有可执行样例,其实可执行程序是.exe文件。普通文件一般没有x权限,当然即使拥有x权限也无法执行,因为其本身就不是可执行文件。

chown与chgrp指令

语法:chown   用户名   文件名

功能:改变文件或目录的拥有者

选项:-R 递归的修改目录中所有文件的拥有者

语法:chgrp  所属组名   文件名

功能:修改文件或目录的所属组

选项:-R递归修改目录中所有文件的所属组

使用chown修改拥有者、chgrp修改所属组出现问题?

hyc@hcss-ecs-4ce7:~$ ls -l
total 0
-rw-rw-rw- 1 hyc hyc 0 May 24 23:07 new.txthyc@hcss-ecs-4ce7:~$ chown root new.txt
chown: changing ownership of 'new.txt': Operation not permittedhyc@hcss-ecs-4ce7:~$ chgrp root new.txt
chgrp: changing group of 'new.txt': Operation not permitted

原因:

        系统并不支持随意的将文件的拥有者或所属组修改,这一操作只有root权限才能被允许。所以在要在这句指令前加上sodu,或者切换为root账号。

下面我切换为root账号作为演示:

root@hcss-ecs-4ce7:~# ls -l
total 24
-rw-rw--wx 1 root root 22902 May 18 11:51 new.txt
root@hcss-ecs-4ce7:~# chown hyc new.txt
root@hcss-ecs-4ce7:~# ls -l
total 24
-rw-rw--wx 1 hyc root 22902 May 18 11:51 new.txt
root@hcss-ecs-4ce7:~# chgrp hyc new.txt
root@hcss-ecs-4ce7:~# ls -l
total 24
-rw-rw--wx 1 hyc hyc 22902 May 18 11:51 new.txt

目录权限问题

1.rwx对于目录来说意味这什么?

没有r权限,无法查看其内容

hyc@hcss-ecs-4ce7:~$ ls -l
total 4
drwxrwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ chmod u-r new
hyc@hcss-ecs-4ce7:~$ ls -l
total 4
d-wxrwxr-x 2 hyc hyc 4096 May 26 15:41 newhyc@hcss-ecs-4ce7:~$ ls new
ls: cannot open directory 'new': Permission denied

没有w权限,无法在其内部创建文件

hyc@hcss-ecs-4ce7:~$ ls -l
total 4
drwxrwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ chmod u-w new
hyc@hcss-ecs-4ce7:~$ ls -l
total 4
dr-xrwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ ls
newhyc@hcss-ecs-4ce7:~$ touch ./new/my.txt
touch: cannot touch './new/my.txt': Permission denied

没有x权限,无法进入目录

hyc@hcss-ecs-4ce7:~$ ls -l
total 4
drw-rwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ cd new
bash: cd: new: Permission denied

rwx这三个权限都与目录的正常使用相关,所以我们创建的目录默认权限这三个都有

2.理解Linux中多用户是如何相互“隔离”的?

root@hcss-ecs-4ce7:~# ls -l /home
total 8
drwxr-x--- 3 hyc hyc 4096 May 26 15:41 hyc
drwxr-x--- 2 ye  ye  4096 May 26 16:03 ye

所有用户的other权限都是全部关闭的,任意用户都无法进入。这就带来了“隔离”

3.缺省权限

对于普通文件:默认起始权限是666

对于目录:默认起始权限是777,带x

但我们看到的默认权限一般都不是我们说所的起始权限 ,这是为什么?

root@hcss-ecs-4ce7:~# ls -l
total 4
drwxr-xr-x 2 root root 4096 May 26 16:59 new
-rw-r--r-- 1 root root    0 May 26 16:40 new.txt

因为Linux中存在一个东西叫做权限掩码(umask)

root用户的权限掩码为:022

普通用户的权限掩码为:002

root@hcss-ecs-4ce7:~# umask
0022
(最前面的0表示八进制)

最终的权限=起始权限&(~umask)

umask的目的是什么?

        凡是出现在umask上的权限,都不会出现在最终的权限上面

umask为什么会出现?

        可以让我们自定义默认权限,是一种灵活满足需求的表现

4.文件的删除由谁决定?

        一个文件是否可以被删除与文件本身无关,而在于目录的w权限。

粘滞键

        如果有两个或者多个用户需要在文件层面上的相互合作,那么所创建的文件就不能在私人目录下。将目录创建根目录下,这样所有用户就都可以访问并写入自己的内容。

        但是这里存在一个问题,就是如果在众多用户中存在隔壁公式派来的内鬼(bushi),内鬼可以删除自己的文件也可以删除被人的文件(文件是否可以被删除与自己无关,与文件的w权限有关)!

        这该怎么办??关闭w权限吗?不行,这会影响其他用户的正常使用,那怎么办?

Linux给粘滞键有效的解决这一问题 

chmod +t

给权限加上粘滞位,加上粘滞位的目录有以下效果

1.文件只能被root删除

2.文件只能被其拥有者删除

3.文件只能有该目录的拥有者删除

其实系统已经为我们准备好了这一特殊目录,就是根目录下的temp目录

我们可以看到temp的other权限最后一个字母是t,这就代表粘滞位。 

一般需要文件上的多人合作,都是在temp里进行。


http://www.hkcw.cn/article/pNdamUMbFJ.shtml

相关文章

day14 leetcode-hot100-26(链表5)

142. 环形链表 II - 力扣(LeetCode) 1.哈希表 思路 与上一个一模一样,基本上没有区别,就是寻找是否存储过该节点。具体思路如下 day14 leetcode-hot100-25(链表4)-CSDN博客 具体代码 /*** Definition…

新能源汽车与油车销量

中国油车与新能源车销量对比(2022-2025年) ‌1. 市场份额演化(2022-2025年)‌ ‌年份‌ ‌新能源车销量 (渗透率)‌ ‌燃油车销量 (渗透率)‌ ‌关键事件‌ ‌2022‌ 688.7万辆…

大语言模型 23 - MCP 自动操作 自动进行联网检索 扩展MCP能力

点一下关注吧!!!非常感谢!!持续更新!!! Java篇: MyBatis 更新完毕目前开始更新 Spring,一起深入浅出! 大数据篇 300: Hadoop&…

通用的防御框架,用于抵御(多模态)大型语言模型的越狱攻击

大家读完觉得有帮助记得关注!!! 摘要 尽管(多模态)大型语言模型(LLMs)因其卓越的能力而受到广泛关注,但它们仍然容易受到越狱攻击。已经提出了各种防御方法来防御越狱攻击&#xff…

Docker 笔记 -- 借助AI工具强势辅助

常用命令 镜像管理命令: docker images(列出镜像) docker pull(拉取镜像) docker build(构建镜像) docker save/load(保存/加载镜像) 容器操作命令 docker run&#…

《汇编语言》第12章 内中断

任何一个通用的 CPU,比如8086,都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理。这种特殊的信息,我们可以称…

相机--双目立体相机

教程 链接1 教程汇总 两个镜头。 双目相机也叫立体相机--Stereo Camera,属于深度相机。 作用 1,获取图像特征; 2,获取图像深度信息; 原理 原理和标定 优点 直接获取深度信息:通过视差计算(…

使用 Zabbix 监控 MySQL 存储空间和性能指标的完整实践指南

目录 引言 一、最终目标支持功能 二、监控方案设计 2.1 技术选型 2.2 设计思路 三、实现步骤 3.1 准备工作 3.11 创建 MySQL 监控账号 3.12 配置 .my.cnf 文件 3.2 编写统一脚本 3.3 配置 Zabbix Agent UserParameter 3.4 Zabbix 前端配置建议 四、总结 引言 MySQL …

大模型-attention汇总解析之-NSA

NSA(Native Sparse Attention)是一种新型的稀疏注意力机制,于2025年2月16日由DeepSeek发布。旨在解决长上下文建模中的效率问题,同时保持模型能力。通过结合算法创新和硬件适配优化,实现了高效的长上下文建模。 算法核心优化点: 动…

Mac使用快捷键及操作

Mac 删除字符的用法   第一种:按 delete 键,删除光标之前的一个字符; 第二种:按 fndelete 键,删除光标之后的一个字符; 第三种:按 commanddelete 键,删除光标之前整行内容; 第四种:按 contr…

【Unity博客节选】PlayableGraph 的生命周期

注:软件版本Unity 6.0 Timeline 1.8.7 作者:CSDN RingleaderWang 原文:《Unity第25期——Timeline结构及其源码浅析》 文章首发Github👍:《Timeline结构及其源码浅析》 Bilibili 视频版👍👍&a…

lua的笔记记录

类似python的eval和exec 可以伪装成其他格式的文件,比如.dll 希望在异常发生时,能够让其沉默,即异常捕获。而在 Lua 中实现异常捕获的话,需要使用函数 pcall,假设要执行一段 Lua 代码并捕获里面出现的所有错误&#xf…

树莓派安装openwrt搭建软路由(ImmortalWrt固件方案)

🤣👉我这里准备了两个版本的openwrt安装方案给大家参考使用,分别是原版的OpenWrt固件以及在原版基础上进行改进的ImmortalWrt固件。推荐使用ImmortalWrt固件,当然如果想直接在原版上进行开发也可以,看个人选择。 &…

【仿生机器人】Alice计划——仿生机器人需求

我在做仿生机器人头,硬件部分已经搭建完毕,包括头部和颈部,用的23个舵机驱动机器人做表情,也支持头部的旋转(就是颈部的功能),安装了摄像头在眼睛中,还有麦克风接受周围环境声音&…

C++ 模版复习

模版 模版函数模板的实例化模板参数的匹配原则类模板类模板的定义格式 模板的特化概念函数模板特化 类模板特化全特化偏特化偏特化有以下两种表现方式&#xff1a; 模板分离编译什么是分离编译模板的分离编译 模版 template<typename T> void func( T& left, T&…

深度学习初探:当机器开始思考(superior哥AI系列第1期)

&#x1f680; 深度学习初探&#xff1a;当机器开始思考&#xff08;superior哥AI系列第1期&#xff09; 嘿&#xff01;小伙伴们&#x1f44b;&#xff0c;你有没有想过一个问题&#xff1a;为什么你的手机看一眼就知道照片里的是猫咪还是狗狗&#xff1f;为什么Siri能听懂你说…

极简以太彩光网络解决方案4.0正式发布,“彩光”重构园区网络极简之道

5月28日下午,锐捷网络在京举办以“光,本该如此‘简单’”为主题的发布会,正式发布极简以太彩光网络解决方案4.0。作为“彩光”方案的全新进化版本,极简以太彩光4.0从用户需求出发,聚焦场景洞察,开启了一场从底层基因出发的极简革命,通过架构、部署、运维等多维度的创新升级,以强…

权威认证与质量保障:第三方检测在科技成果鉴定测试中的核心作用

科技成果鉴定测试是衡量科研成果技术价值与应用潜力的关键环节&#xff0c;其核心目标在于通过科学验证确保成果的可靠性、创新性和市场适配性。第三方检测机构凭借其独立性、专业性和权威性&#xff0c;成为科技成果鉴定测试的核心支撑主体。本文从测试流程、第三方检测的价值…

[AI]从零开始的YOLO自动制作数据集教程

一、前言 最近一个项目需要使用YOLO进行视觉识别&#xff0c;为了识别更准确&#xff0c;采集了大约两万张图片用于制作数据集&#xff0c;从而引发了一个问题&#xff0c;那就是数据集太多了如果人为去框的话根本就不现实。那么&#xff0c;有没有一种办法可以让我们先自己框一…

麒麟操作系统上清除向日葵卸载残留的完整方法分享!

往期文章链接&#xff1a;nmcli con up 和 nmcli con reload 有什么区别&#xff1f;信创操作系统网络管理必学指令详解&#xff01; Hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇麒麟操作系统上清除向日葵卸载残留的文章&#xff0c;欢迎大家分享点赞&#xff0…