Linux 中文件的权限说明

目录

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

一:文件权限类型

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

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

二:默认权限管理

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

1. 查看当前用户的umask值

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

bash 复制代码
# 在终端输入 umask 可以查看当前的 umask 值
ehigh@ubuntu:~$ umask 
0002

root@ubuntu:~# umask 
0022

2. 修改当前用户的umask值

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

例如

bash 复制代码
umask  026

3. 根据umask计算默认权限

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

  • 目录文件:777 - umask值

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

bash 复制代码
666 - 002 = 644

文件默认权限基准值是666 是因为文件一般不需要可执行权限;

目录默认权限基准值是777 是因为目录需要"执行"权限才能进入和列出内容;

计算非目录文件权限时,如果结果是奇数说明具有执行权限,+1可以去掉其执行权限;

三:普通权限管理

1. 三种普通权限说明

1.1 对于非目录文件来说

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

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

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

1.2 对于目录文件来说

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

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

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

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

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

2.1 使用 ls -l

bash 复制代码
root@ubuntu:/home/ehigh# ls -l time_stamp.log 
-rw-r--r-- 1 root root 11 10月 16 19:05 time_stamp.log

2.2 使用 stat

bash 复制代码
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:表示可写权限
  • -:单独的 - 表示无权限

例如:

bash 复制代码
# 给文件所有者增加可执行权限
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:表示没有权限

例如

bash 复制代码
# 表示给所有者、所属组和其他用户都授予读写执行权限  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 权限

相关推荐
b哈利路亚d1 分钟前
使用ubuntu On windows安装docker
运维·docker·容器
梅秃头2 分钟前
CentOS 8修改Linux配置文件指定属性的值
linux·运维·服务器
一个小坑货5 分钟前
CentOS9 Stream上安装Edge浏览器
linux·centos
weixin_449310847 分钟前
基于轻易云的平台集成案例:从泛微OA到金蝶云的业务自动化
运维·自动化
我是如子啊10 分钟前
【UBuntu20 配置usb网卡】 记录Ubuntu20配置usb网卡(特别是建立热点)
linux·网卡·教程·ubuntu20.04·wifi热点·ap·usb网卡
_.Switch10 分钟前
高效网络自动化:Python在网络基础中的应用
运维·开发语言·网络·python·数据分析·自动化
sdau_blue16 分钟前
pycharm远程服务器Linux下解决cannot connect to X server问题
linux·运维·服务器
CP-DD23 分钟前
linux 高级 I/O
linux
baidu_3755288124 分钟前
温度传感器 芯片ms5607 linux 驱动代码
linux·运维·服务器
言之。24 分钟前
linux 删除当前目录下修改时间超过1天的文件
linux·运维·服务器