Linux 中文件的权限说明

embedded/2024/10/20 17:24:20/

目录

  • 一:文件权限类型
  • 二:默认权限管理
    • 1. 查看当前用户的umask值
    • 2. 修改当前用户的umask值
    • 3. 根据umask计算默认权限
  • 三:普通权限管理
    • 1. 三种普通权限说明
      • 1.1 对于非目录文件来说
      • 1.2 对于目录文件来说
    • 2. 查看某个文件的权限信息
      • 2.1 使用 ls -l
      • 2.2 使用 stat
    • 3. 修改某个文件的权限信息
      • 3.1 chmod 的符号模式
      • 3.2 chmod 的数字模式
  • 四:特殊权限管理
    • 1. 三种特殊权限说明
      • 1.1 SUID 权限
      • 1.2 SGID 权限
      • 1.3 Sticky Bit

一:文件权限类型

Linux中文件的权限可以大致分为默认权限、普通权限和特殊权限三大类;

  • 默认权限:新建文件或目录时自动赋予的初始权限
  • 普通权限:包括文件或目录的读(r)、写(w)、执行(x)权限。
  • 特殊权限:对文件或目录的执行行为进行控制,包含 SUID、SGID、和 Sticky Bit

二:默认权限管理

Linux中创建文件的默认权限是由umask的值决定,而且还有个特点就是root用户的umask值和普通用户的umask值不一样;

1. 查看当前用户的umask值

umask的值是三位八进制数字,它表示需要去掉的权限。最前面的0表示这是一个八进制数。

# 在终端输入 umask 可以查看当前的 umask 值
ehigh@ubuntu:~$ umask 
0002root@ubuntu:~# umask 
0022

2. 修改当前用户的umask值

命令行修改umsk只会临时生效,系统重启后就失效了。

例如

umask  026

3. 根据umask计算默认权限

  • 非目录文件:666 - umask值 ,如果结果为奇数就 + 1

  • 目录文件:777 - umask值

例如umask为0002,文件的默认权限为:

666 - 002 = 644

文件默认权限基准值是666 是因为文件一般不需要可执行权限;
目录默认权限基准值是777 是因为目录需要“执行”权限才能进入和列出内容;
计算非目录文件权限时,如果结果是奇数说明具有执行权限,+1可以去掉其执行权限;

三:普通权限管理

1. 三种普通权限说明

1.1 对于非目录文件来说

  • 读取权限 (r):这意味着用户可以查看文件的内容。

  • 写入权限 (w):这意味着用户可以修改或删除文件。

  • 执行权限 (x):这意味着用户可以执行文件(如果它是一个可执行文件或脚本)

1.2 对于目录文件来说

  • 读取权限 (r):允许列出目录的内容。

  • 写入权限 (w):允许在目录中创建、删除或重命名文件。

  • 执行权限 (x):允许进入目录并访问其内容。

目录的最小权限是执行权限,既对于一个目录来说,必须要保证有执行权限,因为目录是一种特殊的文件类型,用于存储其他文件和目录。对于一个目录来说,必须拥有执行权限才能进入这个目录。不然连目录都没法进入。

2. 查看某个文件的权限信息

2.1 使用 ls -l

root@ubuntu:/home/ehigh# ls -l time_stamp.log 
-rw-r--r-- 1 root root 11 1016 19:05 time_stamp.log

2.2 使用 stat

root@ubuntu:/home/ehigh# stat time_stamp.log File: time_stamp.logSize: 11        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 8936463     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-09-26 09:59:52.000000000 +0800
Modify: 2024-10-16 19:08:20.824239766 +0800
Change: 2024-10-16 19:08:20.824239766 +0800Birth: -

3. 修改某个文件的权限信息

通过chmod命令可以修改某个文件的权限信息,chmod有两种格式,字符格式和数字格式。

3.1 chmod 的符号模式

符号模式:用一个字符来表示某个权限,通过+、-、=符号来确认是增加权限还是去除权限。

表示用户:

  • a:表示所有的意思,包括文件所有者、所属组和其他用户
  • u:表示的是文件所有者
  • g:表示的是文件所属组
  • o:表示的是其他用户

执行的操作:

  • +:表示在原有权限的基础上加上指定权限
  • -:表示在原有权限的基础上减去指定权限
  • =:表示清空原有权限,使用当前的权限

权限类型:

  • x:表示可执行权限
  • r:表示可读权限
  • w:表示可写权限
  • -:单独的 - 表示无权限

例如:

# 给文件所有者增加可执行权限
chmod u+x file_name# 给所有用户(所有者、所属组、其它用户)增加可执行权限
chmod a+x file_name# 去除其它用户的r权限
chmod o-r file_name# 给文件所有者重新赋予权限
chmod a=rxw  file_name

3.2 chmod 的数字模式

数字模式由 三个八进制数字组成 ,从左到第一个数字代表文件所有者权限,第二个数字表示文件所属组权限,第三个数字表示其他用户权限。
类别的权限(属主、组用户、其他用户)都是通过这些数字的组合来表示

  • 1:表示可执行权限
  • 2:表示可写权限
  • 4:表示可读权限
  • 0:表示没有权限

例如

# 表示给所有者、所属组和其他用户都授予读写执行权限  7=4+2+1 表示具有读写执行权限
chmod 777 file_name

四:特殊权限管理

1. 三种特殊权限说明

1.1 SUID 权限

  • 默认状态;默认无SUID权限
  • 应用场景:用于可执行文件上,如果某个文件无可执行权限,则SUID不生效
  • 权限作用:任何用户执行该文件时,都会以文件属主的身份来运行该文件,而不仅仅是执行用户的身份。
  • 权限位置:出现在文件所有者可执行权限位置
  • 权限表示:文件所有者的可执行权限位置会变为s或S 表示设置了SUID
    • rws:表示 SUID 已启用,并且文件的所有者具有对该文件的执行权限,此时SUID会生效;
    • rwS:表示瑞谈SUID已启用,但是文件所有者对这个文件没有执行权限,此时SUID不生效;
  • 权限设置
    • 符号发:chmod u+s filename (只能给文件所有者 u 添加)
    • 数字法:chmod 4755 filename(数字 4 代表 SUID,设置时在常规权限前面加上4)

1.2 SGID 权限

  • 默认状态;默认无SGID权限
  • 应用场景:用于可执行权限或者目录
  • 权限作用
    • 应用于可执行文件时:执行改文件的用户会以属组的身份来运行该文件
    • 应用于目录文件时:所有在该目录中创建的文件或子目录将自动继承该目录的所属组,而不是创建者的有效组。
  • 权限位置:出现在文件所属组可执行权限位置
  • 权限表示:如果所属组的可执行权限位变为了s或S,则表示设置了SGID权限。
    • rwxr-sr-x:具有 SGID 权限,并且文件或目录对组用户有执行权限。
    • rwxr-Sr-x:具有 SGID 权限,但文件对组用户没有执行权限。
      权限设置
    • 符号法:chmod g+s filename(只能给文件所有者g 添加)
    • 数字法:chmod 2755 filename(数字 2 代表 SGID,设置时在常规权限前面加上2)

1.3 Sticky Bit

  • 默认状态;默认无 Sticky Bit 权限
  • 应用场景:目录文件
  • 权限作用:只有文件的所有者才可以删除或重命名文件,防止用户在公共目录中删除其他用户的文件。
  • 权限位置:出现在文件其他用户可执行权限位置
  • 权限表示:文件其他用户的执行权限位变为了t或T,表示设置了 Sticky Bit
    • rwxrwxrwt:具有 Sticky Bit 权限,并且目录对其他用户有执行权限;
    • rwxrwxrwT:具有 Sticky Bit 权限,但目录对其他用户没有执行权限;
      权限设置
    • 符号法:chmod o+t filename(省略 o 也可以直接加上 Sticky Bit
    • 数字法:chmod 1755 filename(数字1 代表 Sticky Bit ,设置时在常规权限前面加上1)

例如:passwd命令设置有SUID权限:
普通用户使用 passwd 命令修改自己的密码时,需要访问 /etc/shadow 文件,但是该文件只有 root 用户才有权限访问。
在这里插入图片描述
为了允许普通用户修改自己的密码,passwd 程序需要拥有 SUID 权限,这样普通用户在运行 passwd 程序时,就会暂时获得 root 用户的权限,可以访问 /etc/shadow 文件并修改自己的密码。
在这里插入图片描述


例如:temp目录设置有 Sticky Bit 权限
在这里插入图片描述


http://www.ppmy.cn/embedded/129043.html

相关文章

计算机网络——第三章 数据链路层

文章目录 1.数据链路的几个重点问题1.1数据链路和帧1.2三个基本问题 2.使用广播信道的数据链路层2.1局域网的数据链路层2.1.1局域网的基本概念2.1.2共享信道的问题2.1.3以太网 2.2CSMA/CD协议2.2.1以太网提供的服务2.2.2CSMA/CD协议2.2.3用集线器的星形拓扑 2.4以太网的 MAC 层…

如何使用Python对Excel、CSV文件完成数据清洗与预处理?

在数据分析和机器学习项目中,数据清洗与预处理是不可或缺的重要环节。 现实世界中的数据往往是不完整、不一致且含有噪声的,这些问题会严重影响数据分析的质量和机器学习模型的性能。 Python作为一门强大的编程语言,提供了多种库和工具来帮…

算法Day-4

24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,…

【深度学习|地学应用】Aerosol——宏观层面分析地震气溶胶异常——采用 HYSPLIT-4模型模拟地震AOD异常的水平和垂直后向轨迹

【深度学习|地学应用】Aerosol——宏观层面分析地震气溶胶异常——采用 HYSPLIT-4模型模拟地震AOD异常的水平和垂直后向轨迹 【深度学习|地学应用】Aerosol——宏观层面分析地震气溶胶异常——采用 HYSPLIT-4模型模拟地震AOD异常的水平和垂直后向轨迹 文章目录 【深度学习|地学…

纯血鸿蒙!

纯血鸿蒙,这是哪个营销大师给起的名字啊! 纯血!象征着高贵、自信、自主、血性、英雄气概,都融入这纯血鸿蒙了! 鸿蒙本就是开天辟地,加上纯血,真是荡气回肠! 鸿蒙的推出背景 我们前…

面试手撕代码-二十三种设计模式之模版方法模式

package com.study.handcode.设计模式.行为型模式;import java.io.InputStream;public class 二十三种设计模式之模版方法模式 {public static void main(String[] args) {/*** 1、模版方法就是在抽象类中提供了一个算法流程,但是这个算法流程中有一些抽象方法&…

stm32启动时用到的systeminit、__main说明

先运行systeminit函数,其功能:初始化时钟(SYSCLK, HCLK, PCLK2 and PCLK1 prescalers)、配置中断向量表(中断向量表的定位是在flash还是SRAM)再运行__main函数: 作用:Initializatio…

Flutter 中的 PopScope 小部件:全面指南

Flutter 中的 PopScope 小部件:全面指南 在 Flutter 应用开发中,导航和路由管理是构建复杂应用时必须面对的挑战之一。PopScope 小部件是 Flutter 2.0 版本引入的一个新功能,它提供了一种更灵活的方式来控制页面的弹出和返回行为。本文将带你…