Linux文件系统权限

Linux文件系统权限

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

一、普通权限

1.1 权限介绍

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

bash 复制代码
[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			 7

1:这部分包括文件类型、所属者权限、所属组权限、其它人权限、控制列表权限
2:文件的 链接数
3:文件所属者,即文件的创建者
4:文件所属组
5:文件的大小, 单位为字节
6:文件的最后一次修改时间
7:文件名/目录名

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

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

bash 复制代码
- rw- r-- r-- .
1 2   3   4   5

1 :表示文件的类型
	- 普通文件
	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 权限的数字表示法:

bash 复制代码
权限 	二进制 	八进制
--- 	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):表示 可以执行 这个文件

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

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

r:表示可以列出目录下的内容,即可以查看目录下的文件名称

w:表示可以创建、删除目录中的任意文件(但是要注意:如果只有 w 权限,是不能删除文件的,它需要和 x 权限一起使用)

x:表示可以切换目录(w+x才能删除文件)

bash 复制代码
对于目录来说可能出现的权限:
	---:表示没有权限
	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)命令来实现,它的语法格式为:

bash 复制代码
chmod [选项] [ugoa][+-=][rwx] 文件或目录.....
或者
chmod [选项] nnn 文件或目录.......

选项:
	-R:表示 递归修改 `指定目录下` 所有文件及其子目录的权限

`ugoa`:表示 权限设置 所针对的用户类型,可以是其中字母的一个或组合。
	u 表示所属者
	g 表示所属组
	o 表示其他用户
	a 表示(u+g+o)
`+-=`:表示设置权限的操作动作。
	+ 表示添加某个权限
	- 表示取消某个权限
	= 表示赋值某个权限
`rwx`:用字符形式表示所设置的权限,可以是一个字母或组合。
	r:读
	w:写
	x:执行
`nnn`:用三位八进制数字来表示权限
	r=4
	w=2
	x=1
	
	rwx
	x表示 2 的 0 次方 = 1
	w表示 2 的 1 次方 = 2
	r表示 2 的 2 次方 = 4

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

bash 复制代码
# 以 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 数字方式修改权限

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

bash 复制代码
# 给 /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 所在位置,表示执行这个命令时,可以具有这个文件创建者的权限

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

2.2 SGID(针对所属组-g)

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

shell 复制代码
chmod g+s 目录名
chmod 2xxx 目录名

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

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

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

shell 复制代码
chmod +t 目录
chmod o+t 目录
chmod a+t 目录
chmod 1000 目录名
相关推荐
Vesan,29 分钟前
【Linux/Ubuntu】VIM指令大全
linux·ubuntu·vim
苹果醋31 小时前
iview中实现点击表格单元格完成编辑和查看(span和input切换)
运维·vue.js·spring boot·nginx·课程设计
丨千纸鹤丨1 小时前
高可用集群Keepalived
linux·服务器·网络
☞下凡☜2 小时前
C语言(20250722)
linux·c语言·开发语言
hweiyu002 小时前
开发运维DevOps(附电子书资料)
运维·devops
feifeigo1232 小时前
自动化运维:从脚本到DevOps的演进
运维·自动化·devops
您的通讯录好友2 小时前
TechGPT2部署
linux·人工智能·python·大模型·techgpt
不念霉运2 小时前
国产DevOps平台Gitee:如何重塑中国企业研发效能新格局
运维·gitee·devops
飛_2 小时前
【Word Press基础】创建一个动态的自定义区块
运维·nginx·html·word press
程序员黄老师3 小时前
四层负载均衡与七层负载均衡详解
运维·负载均衡