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

Linux文件系统权限

Linux文件系统权限

  • 一、普通权限
    • 1.1 权限介绍
      • 1.1.1 权限的数字表示法:
      • 1.1.2 文件权限(文件权限中包括 r 权限)
      • 1.1.3 目录权限(目录权限中包括 r 和 x 权限)
      • 1.1.4 默认权限(umask)
    • 1.2 修改权限
      • 1.2.1 [ugoa][+-=][rwx]方式修改权限
      • 1.2.2 数字方式修改权限
  • 二、特殊权限
    • 2.1 SUID(仅适用于可执行文件-u)
    • 2.2 SGID(针对所属组-g)
    • 2.3 SBIT(只针对目录有效-x)

一、普通权限

1.1 权限介绍

通过命令 ll 查看 当前目录下所有文件/目录的详细信息

[root@ansible1 ~]# ll
total 8
-rw-------. 1 root root 989 Feb 27 16:19 anaconda-ks.cfg
-rw-r--r--. 1 root root  30 Jul  5 10:57 inventory
1			2 3	   4	 5	6			 71:这部分包括文件类型、所属者权限、所属组权限、其它人权限、控制列表权限
2:文件的 链接数
3:文件所属者,即文件的创建者
4:文件所属组
5:文件的大小, 单位为字节
6:文件的最后一次修改时间
7:文件名/目录名

第一部分的 -rw-r--r--

文件类型 | 文件所属权限 | 文件所属权限 | 其他用户 | 访问控制列表

- rw- r-- r-- .
1 2   3   4   51 :表示文件的类型- 普通文件d 目录l 链接文件c 字符设备文件b 块设备文件p 管道文件s 套接字文件2:表示文件所属 者 权限,可以用 u(user) 表示- 表示无权限r 表示读w 表示写x 表示可执行3:表示文件所属 组 权限,可以用 g(group) 表示- 表示无权限r 表示读w 表示写x 表示可执行4:表示其它用户(既不是所属者,也不是所属组中的用户)的权限,可以用 o(other) 表示- 表示无权限r 表示读w 表示写x 表示可执行5:表示访问控制列表. 表示没有设置访问控制列表+ 表示设置了访问控制列表

注意:root 账户不受文件权限的读写限制执行 权限受限制

1.1.1 权限的数字表示法:

权限 	二进制 	八进制
--- 	000 	0
--x 	001 	1
-w- 	010 	2
-wx 	011 	3
r-- 	100 	4
r-x 	101 	5
rw- 	110 	6
rwx 	111 	7

1.1.2 文件权限(文件权限中包括 r 权限)

r(read):表示 可以读取 文件的内容
w(write):表示 可以修改 文件的内容
x(eXcute):表示 可以执行 这个文件

对于文件来说可能出现的权限有:---:没有权限r--:表示只读r-x:表示可读可执行rw-:表示可读写rwx:所有权限都有

1.1.3 目录权限(目录权限中包括 r 和 x 权限)

r:表示可以列出目录下的内容,即可以查看目录下的文件名称
w:表示可以创建、删除目录中的任意文件(但是要注意:如果只有 w 权限,是不能删除文件的,它需要和 x 权限一起使用)
x:表示可以切换目录(w+x才能删除文件)

对于目录来说可能出现的权限:---:表示没有权限r-x:表示可读可进入rwx:表示所有权限

1.1.4 默认权限(umask)

默认权限(也称为umask)是用来 控制新创建文件和目录的权限

linux系统新建文件默认没有执行权限(安全考虑),其最大权限为rw-rw-rw-(666);
新建目录的最大权限为rwx-rwx-rwx(777),目录默认有执行权限(进入目录必需)

  • 文件的默认最大权限是666(即-rw-rw-rw-)
    • 默认权限:666 - 022 = 644
  • 目录的默认最大权限是777(即drwxrwxrwx)
    • 默认权限:777-022=755

1.2 修改权限

修改文件或目录的权限需要使用 chmod(change mode)命令来实现,它的语法格式为:

chmod [选项] [ugoa][+-=][rwx] 文件或目录.....
或者
chmod [选项] nnn 文件或目录.......选项:-R:表示 递归修改 `指定目录下` 所有文件及其子目录的权限`ugoa`:表示 权限设置 所针对的用户类型,可以是其中字母的一个或组合。u 表示所属者g 表示所属组o 表示其他用户a 表示(u+g+o)
`+-=`:表示设置权限的操作动作。+ 表示添加某个权限- 表示取消某个权限= 表示赋值某个权限
`rwx`:用字符形式表示所设置的权限,可以是一个字母或组合。r:读w:写x:执行
`nnn`:用三位八进制数字来表示权限r=4w=2x=1rwxx表示 20 次方 = 1w表示 21 次方 = 2r表示 22 次方 = 4

1.2.1 [ugoa][±=][rwx]方式修改权限

# 以 root 用户在 /opt 目录下新建一个file1文件和test目录[root@bogon ~]# cd /opt
[root@bogon opt]# ll
total 0
[root@bogon opt]# touch file1
[root@bogon opt]# ll
total 0
-rw-r--r--. 1 root root 0 Dec 9 19:37 file1# 创建目录 test
[root@bogon opt]# mkdir -p test
[root@bogon opt]# ll
total 0
-rw-r--r--. 1 root root 0 Dec 9 19:37 file1
drwxr-xr-x. 2 root root 6 Dec 9 19:37 test# 在test目录下创建文件 file2
[root@bogon opt]# cd test
[root@bogon test]# touch file2
[root@bogon test]# ll
total 0
-rw-r--r--. 1 root root 0 Dec 9 19:38 file2
[root@bogon test]## 切换到 redhat 用户
[root@bogon test]# su - redhat
[redhat@bogon ~]$ ll /opt
total 0
-rw-r--r--. 1 root root 0 Dec 9 19:37 file1
drwxr-xr-x. 2 root root 19 Dec 9 19:38 test
[redhat@bogon ~]$ cd /opt
[redhat@bogon opt]$ ls
file1 test
[redhat@bogon opt]$ echo 123 > file1
-bash: file1: Permission denied
[redhat@bogon opt]$ cat file1
[redhat@bogon opt]$
# 切换后,可以发现,redhat 这个用户对于 /opt/file1 文件只具有 可读 的权限,而其他权限不是具备的。# 现在让 redhat 用户具有对 /opt/file1 文件具有可写的权限# 以 root 用户来为 file1 文件的 其他用户 赋予 可读可写 权限
[root@bogon opt]# chmod o=rw- file1
[root@bogon opt]## 赋值成功后,切换到 redhat 用户
[redhat@bogon opt]$ ll
total 0
-rw-r--r--. 1 root root 0 Dec 9 19:37 file1
drwxr-xr-x. 2 root root 19 Dec 9 19:38 test
[redhat@bogon opt]$ ll
total 0
-rw-r--rw-. 1 root root 0 Dec 9 19:37 file1
drwxr-xr-x. 2 root root 19 Dec 9 19:38 test
[redhat@bogon opt]$ echo 123 > file1
[redhat@bogon opt]$ cat file1# 从上面的结果可以发现,redhat 用户已经对 file1 文件具有了可读可写的权限了。# 注意:在赋予权限时,= 号表示给它刚好这个权限,如果希望在原有的权限基础上添加某个权限,需要使用 + 号
[root@bogon opt]# chmod o+r file1
[redhat@bogon opt]$ ll
total 4
-rw-r--rw-. 1 root root 8 Dec 9 19:48 file1
drwxr-xr-x. 2 root root 19 Dec 9 19:38 test# 如果希望给某个用户取消某个权限,则需要使用 - 号,例如,对 /opt/file1 文件的 其他用户 权限 可写 权限,则操作如下:
[root@bogon opt]# chmod o-w file1
[redhat@bogon opt]$ ll
total 4
-rw-r--r--. 1 root root 8 Dec 9 19:48 file1
drwxr-xr-x. 2 root root 19 Dec 9 19:38 test

1.2.2 数字方式修改权限

使用数字的方式来设置权限

# 给 /opt/file1 文件的其他用户设置权限为可卖可写
[root@bogon opt]# chmod 644 file1 
# 这是设置整个 file1 的权限,而我们的需求是对其他用户,所以这个不能满足题目要求。# 而能满足题目要求如下所示:
[root@bogon opt]# chmod 646 file1#--------------------------------
# r w - 	r - - 	r w -
# 4 2 0 	4 0 0 	4 2 0
# 6 		4 		6
# 646#----------------------------
# 1. 使用 root 用户对 /opt/test 目录的其他用户的可执行权限取消
[root@bogon opt]# chmod o-x test# 2. 使用 redhat 用户来切换这个目录
[redhat@bogon opt]$ ll
total 4
-rw-r--rw-. 1 root root 8 Dec 9 19:48 file1
drwxr-xr--. 2 root root 19 Dec 9 19:38 test
[redhat@bogon opt]$ cd test
-bash: cd: test: Permission denied
# 发现已经不能成功切换了,说明权限设置成功。# 需求:给 /opt/test 目录及子目录和文件都添加 w 权限
[root@bogon opt]# chmod -R o+w test
[redhat@bogon opt]$ ll
total 4
-rw-r--rw-. 1 root root 8 Dec 9 19:48 file1
drwxr-xrwx. 2 root root 19 Dec 9 19:38 test
[redhat@bogon opt]$ cd test
[redhat@bogon test]$ ll
total 0
-rw-r--rw-. 1 root root 0 Dec 9 19:38 file2

二、特殊权限

在Linux中,用户对文件或目录的访问权限除了r,x,w这三种一般权限以外,还有 SUID (Set User Id)、SGID(Set Group Id)、Sticky Bit(粘滞位)三种特殊权限,用于对文件或目录进行更加灵活且 方便的访问控制

数字法:

  • SUID:4000
  • SGID:2000
  • SBIT: 1000

2.1 SUID(仅适用于可执行文件-u)

SUID是针对所属者具有 s 权限,只要用户设有 SUID 的文件有可执行权限,那么当用户执行此文件时,会以文件所有者身份去执行这个文件,一旦文件执行结束,身份的切换也随之消失

s 是标记在 x 所在位置,表示执行这个命令时,可以具有这个文件创建者的权限

chmod u+s 目录名
chmod 4xxx 目录名	//xxx表示目录的所有者、所属组、其他用户权限

2.2 SGID(针对所属组-g)

SGID是针对所属组具有 s 权限

chmod g+s 目录名
chmod 2xxx 目录名

2.3 SBIT(只针对目录有效-x)

只针对目录有效,对文件无效

对目录的作用是:在具有 SBIT 权限的目录下,用户若在该目录下具有 w 及 x 权限,则当用户在该目录下建立文件或目录时,只有文件拥有者与 root 才有权力删除

chmod +t 目录
chmod o+t 目录
chmod a+t 目录
chmod 1000 目录名
http://www.dtcms.com/a/297800.html

相关文章:

  • 【基于CKF的IMM】MATLAB例程,CV和CT两个模型下的IMM,二维,滤波使用CKF(容积卡尔曼滤波),附下载链接
  • 基于ENMeval包的MaxEnt模型参数优化总结
  • C#索引器、接口、泛型
  • 构建跨平台远程医疗系统中的视频通路技术方案探究
  • Java 反射机制详解:从基础到实战,彻底掌握 Class、Method、Field 的动态操作
  • 免模型控制
  • 解决笔记本合盖开盖DPI缩放大小变 (异于网传方法,Win11 24H2)
  • TCP模型,mqtt协议01 day41
  • 全国产8通道250M AD FMC子卡
  • C语言————原码 补码 反码 (试图讲清楚版)
  • 基于粒子群优化的PID控制在药液流量控制系统中的应用
  • 数组相关学习
  • IP证书:构建数字世界知识产权安全防线的基石
  • Jenkins构建间代码变更记录追踪方案
  • JAVA知识点(四):SpringBoot与分布式、微服务架构
  • 从huggingface上下载模型
  • 前端学习日记(十三)
  • Qt 网络编程进阶:HTTP 客户端实现
  • Microsoft-DNN NTLM暴露漏洞复现(CVE-2025-52488)
  • 使用Python绘制金融数据可视化工具
  • ISIS高级特性LSP的分片扩展
  • k8s下springboot-admin 监控服务部署,客户端接入
  • MYSQL高可用集群搭建--docker
  • Go语言环境搭建与VS Code开发配置
  • OneNote 当前无法同步笔记。将继续尝试。 (错误代码: 0xE00009C8 bb0ur)问题解决
  • Qt 与 MySQL 高级应用开发
  • pytorch学习笔记-使用DataLoader加载固有Datasets(CIFAR10),使用tensorboard进行可视化
  • 第三篇:VAE架构详解与PyTorch实现:从零构建AI的“视觉压缩引擎”
  • 星图云开发者平台新功能速递 | 页面编辑器:全场景编辑器,提供系统全面的解决方案
  • SQL性能优化