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

Linux 中文件的权限说明

目录

  • 一:文件权限类型
  • 二:默认权限管理
    • 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 
0002

root@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.log
  Size: 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 +0800
 Birth: -

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.kler.cn/news/357189.html

相关文章:

  • 论线段树的调试
  • 如何保护您的服务器免受Shellshock Bash漏洞的影响
  • IDEA项目提交至SVNGIT仓库
  • 【升华】人工智能python重要库scikit-learn学习
  • 【ARM】MDK-Flex服务管理软件使用说明
  • 基于SpringBoot+Vue+uniapp微信小程序的校园反诈骗微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
  • 【华为HCIP实战课程十三】OSPF网络中3类LSA及区域间负载均衡,网络工程师
  • 读人工智能全传16读后总结与感想兼导读
  • 苍穹外卖笔记
  • LeetCode 206 - 反转链表
  • YoloV10改进:Block改进|使用ContextAggregation模块改善C2f模块|即插即用
  • 探索C++的工具箱:双向链表容器类list(1)
  • 【linux】Microsoft Edge 的 Bookmarks 文件存储位置
  • 三大编程思想(POP、OOP、AOP、FOP)及oop 五大设计原则
  • 用Python构建动态折线图:实时展示爬取数据的指南
  • 【74LS48译码器】2022-1-2
  • S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器
  • T-SNE
  • 接口测试 —— 如何测试加密接口?
  • 【安当产品应用案例100集】022-阿里云、腾讯云、华为云等公有云上ECS服务器中数据加密保护方案