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

【Linux笔记】系统中的权限管理及优化

一、概念

权限在Linux系统中可以大致分为r、w、x这三种基础类别,他们分别对应读、写、执行三个含义。这三个权限就规定了用户对文件、目录等的操作范围和权利,一定程度加大了系统的安全性,以及数据的完整性。下面是对r、w、x的介绍:

1、r(读)

读,即字面意思,用户可以读取文件内容,如通过 catless 等命令查看。但也就仅限于读取文件这一步,若仅有 r 而无其他权限,则用户无法修改或执行文件。在目录中,用户可以列出目录内容,如通过 ls 查看文件名;若仅有 r 而无 x,用户无法访问文件属性或进入目录。

2、w(写)

写,用户可以修改文件的内容,如编辑、追加或清空文件,重点在“改”这一操作中。但需要注意:删除文件本身并不依赖文件的w(写)权限,而是由所在目录的权限控制。在目录中,用户可以增删或重命名目录中的文件,如 touchrmmv,但有一关键要求:必须同时拥有 x 权限,否则写操作无效。

3、x(执行)

执行,即执行权限,用户可以将文件作为可执行程序来运行,如脚本或二进制文件。但,若选择执行的文件是脚本,还需确保其内容可读(r 权限)。在目录中,用户可以执行如:进入目录(如 cd)或访问目录内文件的元数据(如 ls -l)等操作;若仅有 x 而无 r,用户可通过已知文件名直接操作文件(其需文件自身权限允许)。

二、权限的查看、读取及种类

在刚刚的概念中已经稍稍提了一些文件的查看于读取,接下来我们详细来看看。

1、查看(混了一些权限种类的解释)

文件的常用查看权限一般为 ls ,其中ls也有许多衍生命令,下面挑些常用的来介绍:

1)ls -l

显示文件或目录的详细权限信息,其默认查看当前目录内容。代码和示例如下:

[root@localhost 桌面]# ls -l example1

代码中的example1是创建的一个文件例子,通过代码可知 ls -l 的用法即为:ls -l 要查看的文件

 而查看文件example1的权限后,其权限字段格式:-rw-r--r--,除去第一位,之后的每3位为一个字段,其具体解释:

  • -:文件类型(- 表示普通文件,d 表示目录,l 表示符号链接)

  • rw-:所有者(user)的权限

  • r--:所属组(group)的权限

  • r--:其他用户(others)的权限

2)ls -ld 

即查看目录本身的权限,而非目录内的内容。代码和示例如下:

[root@localhost 桌面]# ls -ld example2

example2是创建的目录例子, 通过代码可知 ls -ld 的用法即为:ls -ld 要查看的目录

d 表示这是一个目录,权限字段 rwxr-xr-x 重复的字段参考刚刚的ls -l中的解释,这里解释新的:

  • d:表示这是一个目录

  • r-x:用户组的读、执行权限

3) stat

即显示文件的详细元数据,包括权限的八进制表示。代码和示例如下:

[root@localhost 桌面]# stat file.txt

 file.txt为创建的例子文件,通过代码可知 stat 的用法即为:stat 要查看的文件

示例的各种种类解释放到后边详讲。 

 

2、权限的种类

用上面先前的一个示例来介绍,如图:

可分为以下几个部分(1-9): 

 - | rw-r--r-- | . | 1 | root | root | 0 | 3月 31 18:18 | example1

[1] 文件类型

  • - 普通文件
  • d 目录
  • l 软连接
  • b 快设备
  • c 字符设备
  • ssocket 套接字
  • p 管道 | 

[2] 文件权限说明(有权限位和用户对文件的身份解释) 

rw- | r-- | r-- 分别对应 u | g | o
u、g、o详细介绍:
符号全称中文作用对象
uUser所有者文件/目录的创建者或拥有者
gGroup所属组文件关联的用户组(组成员)
oOthers其他用户既非所有者,也不在所属组的其他用户

关键注意事项

  1. 权限优先级

    u > g > o,例如:若用户是所有者,则仅 u 的权限生效,g 和 o 的权限对其无效。
  2. 慎用 o 的写权限

    开放 o+w 可能允许任意用户修改文件,存在安全隐患(如 /etc/passwd 不可随意开放)。
  3. 目录权限的特殊性

    对目录的操作(如删除文件)由目录的 w 权限控制,与文件自身的权限无关。

 

[3] 文件安全上下文标记

系统的selinux开启,那么在此位会出现“.”

[4] 文件副本标记或目录中子目录标记

对于文件:文件内容被系统记录的次数(硬链接个数)
对于目录:目录中子目录的个数

[5-6] 文件的归属 

第一个部分【5】是指——文件的拥有着

第二个部分【6】是指——文件的拥有组

[7] 文件容量统计

对于文件:文件内容大小
对于目录:目录中子文件的元数据大小


[8] 文件时间戳 

文件内容被修改的时间

[9] 文件名称

文件名称中一个英文字符占用一个字节,一个中文字符占用三个字节

三、 权限修改的一些命令(chown与chgrp)

1、chown

1)概念

chown为修改文件/目录的拥有者(Owner)和所属组(Group)

2)核心功能
  • 修改所有者:将文件或目录的所有者更改为指定用户。

  • 修改所属组:同时或单独修改文件/目录的所属组(需特定语法)。

3)基本用法(语法)
chown [选项] <新所有者>:<新所属组> <文件或目录>
chown [选项] <新所有者> <文件或目录>        # 仅修改所有者
chown [选项] :<新所属组> <文件或目录>      # 仅修改所属组(等同于 `chgrp`) 

 示例如下(修改所有者的情况):

  • 我们先在mnt目录里创建一个监视器,用来后续方便观察文件所有者和所属组的变动,并创建一个文件test1来做示例文件
    1. 转移到mnt/目录里
    cd /mnt/
    
    2. 在mnt/下创建文件test1作为示例文件
    touch test1
    
    3. 创建监视器,用来监视mnt/下的文件各种权限
    watch -n 1 ls -lR /mnt/

  • 另起一个终端命令行,同样转移(cd)到mnt/下,输入以下命令观察监视器test1的变化
    [root@localhost mnt]# chown lee test1
    
    同样的命令还有:
    [root@localhost mnt]# chown -R lee test1

        可以看到,原本为用户root的所有者已经更改成用户lee 

2、chgrp :

1)概念

chgrp为修改文件/目录的所属组(Group)

2)核心功能

仅修改所属组:与 chown :组名 功能相同,但语法更简洁。

3)基本用法(语法)
chgrp [选项] <新所属组> <文件或目录>

示例如下(修改所属组的情况):

  • 同样还是监视器,这里不再赘述,和chown步骤相同
  • 输入以下命令观察监视器test1的变化
    [root@localhost mnt]# chgrp lee test1
    
    同样的命令还有:
    [root@localhost mnt]# chgrp -R lee test1
    

         可以看到,原本为用户root的所属组已经更改成用户lee的所属组

3、如何同时修改所有者和所属组? 

同时修改所有者和所属组可以用chown来解决,如下:

[root@localhost mnt]# chown root:root test1

刚刚所有者和所属组都被修改成lee的文件test1, 我们再把其所有者和所属组修改回root

如果修改的是目录,那就用下面命令:

[root@localhost mnt]# chown -R root.root timinglee/

 用chown -R把目录timinglee/的所有者和所属组都修改成root;注意:目录的同时修改所有组和所属组之间的符号是“.”,于文件的同时修改有区别(文件的是“:”)

4、chmod 

 1)概念

chmod可以修改权限字段,修改文件/目录的访问权限,控制用户对资源的读(r)、写(w)、执行(x)权限。

2)用法
  • 符号模式
    通过符号组合(u/g/o/a  +  +/-/=  +  r/w/x)灵活调整权限,适合局部修改。

    chmod <对象><操作符><权限> <文件或目录>

    如:

    chmod u+x script.sh       # 给所有者添加执行权限
    chmod g-w data.txt        # 移除组的写权限
    chmod o= file.log         # 其他用户无任何权限
    chmod a=rw config.ini     # 所有用户可读写,不可执行
    chmod +x myapp            # 所有用户添加执行权限(等效 `a+x`)
    符号说明
    对象u(所有者)、g(组)、o(其他)、a(所有用户,默认)
    操作符+(添加权限)、-(移除权限)、=(直接设置权限)
    权限r(读)、w(写)、x(执行)、s(SUID/SGID)、t(粘滞位)
  • 数字模式
    通过三位八进制数字(0-7)快速设置完整权限,适合批量操作。
     

    权限数字计算:
    r = 4,w = 2,x = 1
    每组权限为三者之和(如 rwx = 7,r-x = 5)

    chmod <ABC> <文件或目录>  # A=所有者权限,B=组权限,C=其他用户权限

    如:

    chmod 755 file.txt        # u=7 (rwx), g=5 (r-x), o=5 (r-x)
    chmod 644 dir/            # u=6 (rw-), g=4 (r--), o=4 (r--)
    chmod 1777 tmp/           # 粘滞位(权限为 `rwxrwxrwt`)
    

四、系统默认权限设定 

1、概念

由于系统本身存在的意义共享资源,从安全角度讲系统共享的资源越少,开放的权力越小系统安全性越高,故既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放把不安全的权力默认保留
umask(User File Creation Mask)是 Linux 中用于  控制新建文件或目录默认权限 的机制。

2、用法

umask 权限值
  • 文件默认权限=777-umask-111
  • 目录默认权限=777-umask
  • umask值越大系统安全性越高

umask的临时修改:

umask 077

永久修改:

针对用户:在用户配置文件(如 ~/.bashrc~/.profile)中追加:

umask 022   # 设置默认 umask

全局配置:在系统配置文件(如 /etc/profile/etc/bashrc)中设置。 

3、umask 的常见值

umask 值文件权限目录权限适用场景
002664775用户与组可协作(同组可写)
022644755默认安全配置(仅用户可写)
027640750严格权限(组只读,其他用户无)
077600700完全私有化

 

五、系统中的特殊权限 

1、SUID

也叫Set UID,当一个设置了 SUID 权限的程序被执行时,内核会将进程的有效用户 IDEffective User ID)临时设置为文件所有者的用户 ID,而实际用户 IDReal User ID)保持不变。这样,在程序执行期间,该进程就具有了文件所有者的权限。

  • 作用:执行文件时以文件所有者的身份运行。

  • 设置:

    chmod u+s /usr/bin/myapp    # 符号模式
    chmod 4755 /usr/bin/myapp   # 数字模式(4xxx)

注意:

由于 SUID 权限会提升用户的执行权限,不当使用可能会带来安全风险。例如,如果一个恶意程序
被设置了 SUID 权限且可被普通用户执行,那么该程序可能会以文件所有者的权限执行任意恶意操
作。因此,在设置 SUID 权限时,应谨慎考虑必要性和安全性。

 

2、SGID 

也叫Set GID,对于可执行文件,当设置了 SGID 权限的程序被执行时,进程的有效组 ID Effective Group ID )会临时被设置为文件所属组的组 ID 。对于目录,设置了 SGID 权限后,在该目录下创建的新文件和子目录将自动继承该目录的组,而不是创建者的默认组。
  • 作用:目录内新建文件继承目录的所属组。

  • 设置:

    chmod g+s shared_dir/       # 符号模式
    chmod 2775 shared_dir/      # 数字模式(2xxx)

注意:

同样,SGID 权限的不当使用也可能导致安全问题。例如,如果一个可执行文件设置了 SGID 权限且被恶意利用,可能会使普通用户获得过高的组权限,从而访问到不应访问的资源。对于共享目录设置 SGID 权限时,要确保组内成员的权限管理得当,避免权限滥用。

 

 

 

 目前更新至此(2025/3/31)

相关文章:

  • Linux 编程环境
  • Dify 深度集成 MCP实现灾害应急响应
  • CVP介绍
  • C语言函数
  • ThingsBoard移动应用详细讲解
  • Redis简介
  • 支付宝沙箱支付报错“订单信息无法识别,建议联系卖家”
  • NOIP2017提高组.宝藏
  • 【强化学习】Deep Reinforcement Learning: A Survey综述学习
  • fast_pow(),c语言幂函数
  • 性能比拼: Go(Gin) vs Python(Flask)
  • 按规则批量修改 txt/html/json/xml/csv/记事本等文本文件内容
  • 【企业级Web应用中的文件下载处理:从S3预签名URL到压缩状态管理】
  • 24、网络编程基础概念
  • Appscan下载及安装教程
  • Vue3中的Icon理方案
  • OCR第三个方案:PP-OCRv4的初步探索
  • 2015年国家队选拔赛试题改编题
  • 基于卷积神经网络的眼疾识别系统,resnet50,efficentnet(pytorch框架,python代码)
  • 什么是开发者社区(Developer Communities)?
  • java做网站和php做网站/广东seo排名
  • 那个网站教你做美食/今日西安头条最新消息
  • 好点的Wordpress主题/排名怎么优化快
  • 日本 男女做受网站/长沙建站seo公司
  • 子目录创建网站/2023近期舆情热点事件
  • 山西通州集团网站建设/邯郸seo营销