当前位置: 首页 > news >正文

Linux权限详解:从基础到实践

Linux作为一个多用户、多任务的操作系统,权限管理是其安全机制的核心。无论是系统管理员还是普通用户,理解并正确设置权限,能有效防止误操作、恶意访问,保护系统和数据的安全。本文将从基础概念权限查看权限修改实践,一步步带你了解掌握Linux权限。

目录:

    • 一、什么是权限?
    • 二、为什么需要权限?
    • 三、权限的核心:三个角色+三种权限
      • 1. 三个角色(Owner/Group/Others)
      • 2. 三种权限(Read/Write/Execute)
      • 3. 权限的表示方式
    • 四、如何查看权限?
    • 五、如何修改权限?
      • 1. 符号法:直观易懂
      • 2. 数字法:高效快捷
    • 六、如何修改所有者和组?
      • 1. 修改所有者:`chown`
      • 2. 修改所属组:`chgrp`
    • 七、三个子问题
      • 1.进入一个子目录需要什么权限?
      • 2.为什么我们新建的目录和普通文件的权限是我们所看到样子?
      • 3.粘滞位问题

一、什么是权限?

权限是指在特定环境中,用户或系统对资源(如文件、应用程序、网络或设备)的访问和操作的合法范围。

换言之就是能不能访问该资源的问题
比如你有腾讯视频的会员,你就可以看vip视频,这就是你的权限
权限 = 人 + 文件属性
权限是针对特定人群的 -->普通用户和超级用户(root)
目标主体(Linux下一切皆文件,即文件),必须天然具备对应属性(读、写、可执行)才可以访问

普通用户和超级用户
超级用户绝大多数情况下不受权限约束,属于特权阶级
普通用户切换到超级用户 : su root /su (默认是root)/su -(切换用户,以重新登陆的方式进行切换) + root账号密码
在这里插入图片描述
超级用户切换到普通用户不需要密码
普通用户切换到另一个普通用户需要对方的密码

二、为什么需要权限?

想象一下,如果你电脑里的文件随便被别人删改,或者敏感数据(比如密码文件)被任意访问,那会有多可怕?Linux的权限系统就是为了解决这个问题——给每个文件/目录分配“谁能做什么”的规则,确保只有授权用户才能进行相应操作。

三、权限的核心:三个角色+三种权限

Linux中,每个文件/目录都有三个关联的角色,每个角色对应三种权限

1. 三个角色(Owner/Group/Others)

  • 所有者(User):文件的创建者或当前拥有者(用u表示)。
  • 所属组(Group):文件所属的用户组(用g表示)。
  • 其他用户(Others):既不是所有者也不属于所属组的用户(用o表示)。
  • 所有角色(All):上述三个角色的统称(用a表示)。

为什么要有所属组?所属组是什么?
所属组就好比一个公司的某一个部门,同一个部门下的员工可以自由访问组里的文件,别的人访问不了,高效安全

2. 三种权限(Read/Write/Execute)

每个角色有三种基本权限,用 r(读)、w(写)、x(执行) 表示:

  • 读(r):允许查看文件内容(如cat file.txt)或列出目录下的文件(如ls dir)。
  • 写(w):允许修改文件内容(如echo "test" > file.txt)或删除/重命名目录下的文件(如rm file.txt)。
  • 执行(x):允许运行可执行文件(如./script.sh)或进入目录(如cd dir)。

3. 权限的表示方式

权限以9位字符表示,分为三组,每组对应一个角色的权限:
[文件类型][所有者权限][所属组权限][其他用户权限]
例如:-rw-r--r--

  • 第一个字符-:表示文件类型(-普通文件、d目录、l符号链接、b块设备、c字符设备)。
  • 接下来三位rw-:所有者权限(读+写,无执行)。
  • 中间三位r--:所属组权限(仅读)。
  • 最后三位r--:其他用户权限(仅读)。

权限是依附于特定角色的,角色是需要人来扮演的
在这里插入图片描述

四、如何查看权限?

最常用的命令是ls -l(长格式列出文件),它会显示文件的权限、所有者、所属组等信息。
例如:

[whb@bite-alicloud test]$ ls -l file.txt
-rw-r--r-- 1 whb whb 0 Jan 11 14:22 file.txt

解释每一列的含义:

  1. -rw-r--r--:权限(普通文件,所有者rw,组r,其他r)。
  2. 1:链接数(文件的硬链接数量)。
  3. whb:所有者(用户whb)。
  4. whb:所属组(组whb)。
  5. 0:文件大小(字节)。
  6. Jan 11 14:22:修改时间。
  7. file.txt:文件名。

五、如何修改权限?

修改权限的核心命令是chmod(change mode),它支持符号法数字法两种方式,其中数字法更常用。

1. 符号法:直观易懂

符号法的格式:chmod [角色][操作][权限] 文件

  • 角色u(所有者)、g(组)、o(其他)、a(所有)。
  • 操作+(添加权限)、-(移除权限)、=(设置权限)。
  • 权限r(读)、w(写)、x(执行)。

实例

  • 给所有者加执行权限:chmod u+x file.txt
  • 给组移除写权限:chmod g-w file.txt
  • 给其他用户设置为读权限:chmod o+r file.txt
  • 给所有角色加读权限:chmod a+r file.txt
    在这里插入图片描述

2. 数字法:高效快捷

数字法将权限转换为八进制数字,每个权限对应一个数值:

  • r=4(读)、w=2(写)、x=1(执行)。
  • 每个角色的权限是三个数值的和,例如:rwx=7(4+2+1)、rw-=6(4+2)、r--=4(4)。

数字法的格式:chmod [权限数字] 文件

其实就可以理解为 [0][0][0],每一位代表一种权限,0:无 1:有,所以只读(r–):100 -> 4

常见权限组合

  • 755:所有者rwx(7),组r-x(5),其他r-x(5)(适合脚本/目录,允许自己执行,他人只读执行)。
  • 644:所有者rw-(6),组r–(4),其他r–(4)(适合普通文件,允许自己读写,他人只读)。
  • 700:所有者rwx(7),组和其他无权限(适合敏感文件,仅自己访问)。

实例

  • 将文件权限设置为rwxr-xr-xchmod 755 file.txt
  • 将目录权限设置为rwx------chmod 700 dir/
    在这里插入图片描述

六、如何修改所有者和组?

除了权限,还可以修改文件的所有者chown)和所属组chgrp)。

1. 修改所有者:chown

格式:chown [新所有者] 文件
注意:修改所有者需要root权限(用sudo)。
实例

  • 将文件所有者改为rootsudo chown root file.txt
  • 同时修改所有者和组:sudo chown whb:whb file.txt(将所有者改为whb,组改为whb)。

2. 修改所属组:chgrp

格式:chgrp [新组] 文件
实例

  • 将文件所属组改为adminsudo chgrp admin file.txt

细节1:
用户访问文件的时候,确定自己相对于文件的身份角色,只会验证一次,换句话说:
权限只会验证一次
证明:在这里插入图片描述
细节2:
关于可执行文件要被执行:
1.该文件本身就是一个可执行的文件
2.文件本身具有可执行权限
给X权限,不是能让你执行,而是当你想执行的时候,OS允许你执行
细节3:
文件的拥有者,具有修改文件权限的能力
细节4:
有时候例如安装软件时,普通用户无法直接安装,这时候就需要通过sudo暂时提高权限,需要输入当前用户的密码,普通用户一般而言是执行不了sudo的:
在这里插入图片描述
意思就是说你不在可以提权的人的名单里,解决办法很简单,用root账号打开 /etc/sudoers这个文件
在这里插入图片描述
在这个位置把想要提权的人的账号填进去
细节5:
把文件给另一个人或者组需要超级用户权限(因为你给别人一个东西,要经过别人同意才行,但是Linux下语法上我们无法让别人同意,我们不知道,也看不见)

七、三个子问题

1.进入一个子目录需要什么权限?

r:用户是否有权利查看指定目录下的文件属性
在这里插入图片描述
在这里插入图片描述

W:决定了特定用户是否有权利在该目录下,前能否新增,删除文件,和修改文件名!
在这里插入图片描述
在这里插入图片描述
所以进入一个目录需要x权限
在这里插入图片描述
在这里插入图片描述

要说明的是注意分辨 目录的权限和目录下文件的权限
如果前者没有x权限,不影响后者进行读写(前提是你知道该目录下文件的名字)
在这里插入图片描述

2.为什么我们新建的目录和普通文件的权限是我们所看到样子?

在这里插入图片描述
Linux系统中,为了对权限进行细粒度控制,就有了Linux权限掩码!

权限掩码默认是002(可以修改,重启后自动恢复默认值)
在这里插入图片描述

那么如何计算得到最终权限呢?
凡是出现在权限掩码中的权限,最终都应该在起始权限中去掉:
最终权限 = 起始权限“去掉”umask 即 最终权限=起始权限&(~umask)
在这里插入图片描述

3.粘滞位问题

如果我们今天想让多用户之间,共享文件?
我们就可以在系统级别的路径下创建一个share文件夹(不能在别人的家目录下,作为other我们没有权限进都进不去)
但是这时候我在share下创建一个文件不让除了我和某一个朋友之外的人rw,别人看不到气急败坏于是就删了这个文件。即便是root,指定目录下,一个其他人新建的文件,不让rw,但是可能我们普通用户可以删掉!这时候该怎么办呢?
chmod +t 文件 这样就可以了
在这里插入图片描述


希望本文能帮助你理解Linux权限的本质,学会正确设置权限,让你的系统更安全!

http://www.dtcms.com/a/361641.html

相关文章:

  • Selenium 4 文件上传和下载操作指南
  • kubernetes应用的包管理Helm工具
  • MySql blob转string
  • 15693协议ICODE SLI 系列标签应用场景说明及读、写、密钥认证操作Qt c++源码,支持统信、麒麟等国产Linux系统
  • 【Pycharm】Pychram软件工具栏Git和VCS切换
  • 【数据可视化-102】苏州大学招生计划全解析:数据可视化的五大维度
  • 从零开始实现Shell | Linux进程调度实战
  • AI时代SEO关键词实战解析
  • Scala协变、逆变、上界/下界、隐式参数、隐式转换
  • daily notes[7]
  • Windows系统下如何配置和使用jfrog.exe
  • Ansible变量的定义与使用
  • docker 网络配置
  • MJ Prompt Tool-好用的Midjourney提示词工具
  • uniApp 混合开发全指南:原生与跨端的协同方案
  • 机器学习通关秘籍|Day 05:过拟合和欠拟合、正则化、岭回归、拉索回归、逻辑回归、Kmeans聚类
  • ChatGLM-6B全流程部署:环境搭建→模型加载→API调用(附避坑指南)
  • 【项目思维】这是一份嵌入式软件开发的大纲(简化版)
  • Go 面试题: new 和 make 是什么,差异在哪?
  • window显示驱动开发—监视筛选器驱动程序
  • 如何安装CUDA????
  • 在 Qt 中加载 .qm 翻译文件
  • 基本问题解决--舵机
  • 选择图片转base64格式组件简单封装-Base64ImageInpu
  • nestjs 发起请求 axios
  • Onion-LO(已开源)——LIDAR里程计的统一框架
  • IO进程线程;标准io;文件IO;0901
  • PyTorch 实战(3)—— PyTorch vs. TensorFlow:深度学习框架的王者之争
  • 「日拱一码」075 机器学习——密度泛函理论DFT
  • 在 Unity 中调用腾讯云机器翻译