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 目录名
相关推荐
一只大头猿5 分钟前
FinalShell 服务器远程连接工具
运维·服务器
kjl5365664 小时前
docker命令
运维·docker·容器
野熊佩骑4 小时前
CentOS7二进制安装包方式部署K8S集群之ETCD集群部署
运维·数据库·云原生·容器·kubernetes·centos·etcd
大白的编程日记.8 小时前
【Linux学习笔记】线程概念和控制(二)
linux·笔记·学习
jerryinwuhan8 小时前
VIM和Linux命令速查表
linux·编辑器·vim
小白银子8 小时前
零基础从头教学Linux(Day 45)
linux·运维·junit·openresty
穷人小水滴8 小时前
笔记本 光驱 的内部结构及用法: 应急系统启动 (恢复) 光盘 (DVD+R/RW)
linux
半梦半醒*9 小时前
nginx反向代理和负载均衡
linux·运维·nginx·centos·tomcat·负载均衡
喜欢你,还有大家9 小时前
集群的概述和分类和负载均衡集群
运维·负载均衡
liu****9 小时前
负载均衡式的在线OJ项目编写(六)
运维·c++·负载均衡·个人开发