目录
- 一:文件权限类型
- 二:默认权限管理
-
- [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 Bitrwxrwxrwt
:具有 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 权限