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

Linux学习之Linux系统权限

        在上一篇的内容中我们学习到了Linux系统命令相关的知识及其相关的扩展内容,本期我们将学习Linux基础的另一个重要部分:Linux系统权限管理

        作者的个人gitee:楼田莉子 (riko-lou-tian) - Gitee.com

目录

权限概念及必要性

        什么是权限

        为什么要有权限

        权限=人+文件属性

        su指令

Linux的权限管理        

        文件访问者

        那么Linux系统下为什么会有系统组呢?

        所属组的核心作用

        用户与组的关系

        组信息存储位置

 关键命令总结:

        文件属性及其权限

文件访问权限相关的设置

        1、chmod

        2、chown

        3、chgrp

         file指令

        使用sudo分配权限

        目录的权限

关于权限的总结

粘滞位(选择性学习) ​编辑

        三个问题


权限概念及必要性

        什么是权限

        权限是访问一种资源的时候决定我们能还是不能的问题。

        为什么要有权限

        那么为什么Linux要有权限呢?因为Linux系统是一个多用户系统,同时会有多个人来登录访问。如果没有权限之分,那么随意一个用户就可以对别人的数据进行增删查改,这是极其危险的行为。

        因此,权限的本质就是为了更好的用户管理

        权限=人+文件属性

        权限是针对特定群体的——与人有关。因为Linux系统下一切皆文件,因此其目标主题必然天然带有一定的属性才能访问

        文件的属性有三类:r(可读)、w(可写)、x(可执行)

        Linux下有两种类型的用户:普通用户、root用户。

        root用户:可以在Linux系统上做任何事情不受限制。

        普通用户:在Linux系统下做有限的事情。

        在Linux系统中。root用户的提示符是“#”,普通用户的提示符是“$”

        su指令

        语法:

su[用户名]

        功能:切换用户。

        比如su user就会从root用户转换为user用户。要从普通⽤⼾user切换到root⽤⼾则使⽤ su root(root可以省略),此时系统会提⽰输⼊root⽤⼾的⼝令。

        但是当我们作为普通账号要进行安装软件的时候,酒席要将软件拷贝到指定目录下,但是OS会阻止我们拷贝,那是否只能让管理员来进行安装呢?不是的。有一个命令sudo可以解决。

        sudo命令是普通账户进行短暂提权的命令。

        普通用户默认是无法使用sudo的(自己安装的虚拟机除外)。

        什么是白名单呢?与黑名单相对,无条件同意。普通账户默认不是白名单 

        root账户可以决定哪个普通用户是白名单内成员

Linux的权限管理
        

        文件访问者

        Linux系统下的角色:

        ⽂件和⽂件⽬录的所有者:u---User(中国平⺠ 法律问题)
        ⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g---Group(不多说)
        其它⽤⼾:o---Others (外国⼈)

        具体如下:

        那么Linux系统下为什么会有系统组呢?

        因为在 Linux 系统中,用户的所属组(User Groups) 是权限管理的核心机制之一,它通过组(Group) 将用户分类,实现批量分配文件/目录的访问权限

        所属组的核心作用

        1、权限共享:同组用户自动继承该组对文件/目录的权限(读/写/执行),无需单独配置每个用户。

        2、资源隔离:不同组的用户无法访问彼此的资源(除非显式授权)

        3、简化管理:修改组的权限 = 批量修改组内所有用户的权限

        用户与组的关系

        1、主组

  • 每个用户必须属于且仅有一个主组(创建用户时自动生成同名组)。

  • 用户新建文件时,文件的默认所属组 = 用户的主组。

  • 查看命令:id 或 groups

    $ id alice
    uid=1001(alice) gid=1001(alice) groups=1001(alice),1005(developers)
    # gid=1001(alice) → 主组是 "alice"

        2、附加组

  • 用户可加入零个或多个附加组,获得额外的权限。

  • 示例:用户 alice 加入 developers 组后,可访问该组授权的项目目录。

  • 管理命令:

    usermod -aG developers alice  # 将 alice 添加到 developers 组(不改变主组)
    groups alice                  # 查看 alice 的所有所属组

        组信息存储位置
文件作用示例内容
/etc/passwd记录用户的 UID 和主组 GIDalice:x:1001:1001::/home/alice:/bin/bash
/etc/group定义组及其成员列表developers:x:1005:alice,bob
(组名:密码占位符:GID:成员列表)

解析 /etc/group

  • developers:组名

  • x:加密密码占位符(实际密码在 /etc/gshadow

  • 1005:组 ID (GID)

  • alice,bob:组成员列表(用逗号分隔)

 关键命令总结:
命令作用
groups [用户名]查看用户的所有所属组
id [用户名]显示用户 UID、GID 及组列表
usermod -aG 组名 用户名将用户添加到附加组
gpasswd -d 用户 组名从组中移除用户
newgrp 组名临时切换用户的主组(需有权限)

        文件属性及其权限

        ⽂件类型:

        ◦ d:⽂件夹

        ◦ -:普通⽂件

        ◦ l:软链接(类似Windows的快捷⽅式)

        ◦ b:块设备⽂件(例如硬盘、光驱等)

        ◦ p:管道⽂件

        ◦ c:字符设备⽂件(例如屏幕等串⼝设备)

        ◦ s:套接⼝⽂件

基本权限:

        ◦ 读(r/4):Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息的权限

        ◦ 写(w/2):Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内

⽂件的权限

        ◦ 执⾏(x/1):execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权

        ◦ “—”表⽰不具有该项权限

        Linux中的举例说明

        那么如何表达一个文件的权限?

文件访问权限相关的设置

        1、chmod

        语法:

chmod [参数] 权限 ⽂件名 

        功能:设置⽂件的访问权限
        常⽤选项:

         R -> 递归修改⽬录⽂件的权限

        说明:只有⽂件的拥有者和root才可以改变⽂件的权限

        chmod命令权限值的格式:

          ⽤⼾表⽰符+/-=权限字符

         +:向权限范围增加权限代号所表⽰的权限

         -:向权限范围取消权限代号所表⽰的权限

         =:向权限范围赋予权限代号所表⽰的权限

         ⽤⼾符号:

         u:拥有者

         g:拥有者同组⽤

         o:其它⽤⼾

         a:所有⽤⼾

        举例说明:

        2、chown

        语法:

chown [参数] ⽤⼾名 ⽂件名 

        功能:修改⽂件的拥有者

        3、chgrp

        语法:

chgrp [参数] ⽤⼾组名 ⽂件名

        功能:修改⽂件或⽬录的所属组

        常⽤选项:-R 递归修改⽂件或⽬录的所属组

        4、unmask

        语法:

格式:umask 权限值  

        功能:

        查看或修改⽂件掩码

        新建⽂件夹默认权限=0666

        新建⽬录默认权限=0777

        但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。原因就是创建⽂件或⽬录的

        时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的⽂件权限是: mask &

~umask

        说明:将现有的存取权限减去权限掩码后,即可产⽣建⽴⽂件时预设权限。超级⽤⼾默认掩码值为0022,普通⽤⼾默认为0002
       

         file指令

语法:

file [选项] ⽂件或⽬录...

功能:辨识⽂件类型

常⽤选项:

• -c:详细显⽰指令执⾏过程,便于排错或分析程序执⾏的情形。

• -z:尝试去解读压缩⽂件的内容。

        使用sudo分配权限

        (1)修改/etc/sudoers ⽂件分配⽂件

# chmod 740 /etc/sudoers
# vi /etc/sudoer

        (2)使⽤ sudo 调⽤授权的命令
 

$ sudo –u ⽤⼾名 命令

        目录的权限

        目录有三种权限:

        可执⾏权限: 如果⽬录没有可执⾏权限, 则⽆法cd到⽬录中.

        可读权限: 如果⽬录没有可读权限, 则⽆法⽤ls等命令查看⽬录中的⽂件内容.

        可写权限: 如果⽬录没有可写权限, 则⽆法在⽬录中创建⽂件, 也⽆法在⽬录中删除⽂件.

        于是, 问题来了~~ 换句话来讲, 就是只要⽤⼾具有⽬录的写权限, ⽤⼾就可以删除⽬录中的⽂件, ⽽不论这个⽤⼾是否有这个⽂件的写权限.

        这好像不太科学啊, 我张三创建的⼀个⽂件, 凭什么被你李四可以删掉?

我们用下面这段进行验证

为了解决这个不科学的问题, Linux引⼊了粘滞位的概念


关于权限的总结

• ⽬录的可执⾏权限是表⽰你可否在⽬录下执⾏命令。

• 如果⽬录没有 -x 权限,则⽆法对⽬录执⾏任何命令,甚⾄⽆法 cd 进⼊⽬, 即使⽬录仍然有 -r 读

权限(这个地⽅很容易犯错,认为有读权限就可以进⼊⽬录读取⽬录下的⽂件)

• ⽽如果⽬录具有 -x 权限,但没有 -r 权限,则⽤⼾可以执⾏命令,可以 cd 进⼊⽬录。但由于没有

⽬录的读权限

• 所以在⽬录下,即使可以执⾏ ls 命令,但仍然没有权限读出⽬录下的⽂档。

粘滞位(选择性学习)
 

        当⼀个⽬录被设置为"粘滞位"(⽤chmod +t),则该⽬录下的⽂件只能由

1. 超级管理员删除

2. 该⽬录的所有者删除

3. 该⽂件的所有者删除

留下三个问题:

        三个问题

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

2、为什么我们新建一个文件默认权限是我们看到的那个样子?

3、没有rmx我们能删除这个文件吗?

        这些部分我后面会补充。

        本期内容就到这里,喜欢请点个赞谢谢

封面图自取:

http://www.lryc.cn/news/595617.html

相关文章:

  • 【论文阅读】Nonparametric clustering of RNA-sequencing data
  • Java IO 流详解:从基础到实战,彻底掌握输入输出编程
  • Linux C 多线程基本操作
  • 基于springboot+vue开发的图书馆座位预约系统【源码+sql+可运行】【50721
  • Djoser 详解
  • 奥比中光深度相机开发
  • Pytorch版本、安装和检验
  • RS485和Modbus
  • 完整的 SquareStudio 注册登录功能实现方案:已经烧录到开发板正常使用
  • 感知机-梯度下降法
  • OpenCV中特征匹配算法GMS(Grid-based Motion Statistics)原理介绍和使用代码示例
  • 使用相机不同曝光时间测试灯光闪烁频率及Ai解释
  • Trae开发uni-app+Vue3+TS项目飘红踩坑
  • hot100回归复习(算法总结1-38)
  • GoLang教程005:switch分支
  • 零拷贝技术(Zero-Copy)
  • 【C语言进阶】结构体练习:通讯录
  • 暑期算法训练.5
  • stm32内存分析
  • OpenAI Codex CLI与 Google Gemini CLI 比较
  • 深度解析 HTML `loading` 属性:优化网页性能的秘密武器
  • 基于LangChain构建企业级AI智能体:从架构设计到行业落地实战
  • 深度学习 ---神经网络以及数据准备
  • ASP .NET Core 8高效集成Redis缓存实战
  • 【黑马SpringCloud微服务开发与实战】(四)微服务02
  • 前端之学习后端java小白(一)之SDKMAN及helloword
  • 如何用 LUKS 和 cryptsetup 为 Linux 配置加密
  • 【爬虫】05 - 爬虫攻防
  • 前后端分离项目进阶1---前端
  • 耐看点播网页入口 - 追最新电视剧,看热门电影|官网