目录
一、Linux用户的分类
1.Linux下的两种用户
2.两种用户提示符的区别
3.用户的切换方法
二、Linux的权限管理
1.文件访问者分类
2.常见文件类型
3.文件访问权限
4.权限检查逻辑
5.文件权限的表示方式
三、与文件访问权限相关的设置方法
1.前提:
2.如何修改文件或目录权限
指令:
①符号模式(字母表示)
②数字模式(八进制)
③常用选项
④特殊权限
⑤典型使用场景
⑥注意事项
3.修改文件或目录的所有者或所属组
指令:
①常用选项
②示例
③注意事项
④chmod和chown的区别
4.修改文件的所属组
指令
①常用选项
②示例
③注意事项
④chgrp和chown的区别
5.权限掩码umask
①umask作用
②如何查看当前umask
③如何修改umask
④常见umask
⑤注意事项
四、目录权限
1.目录各权限作用
2.粘滞位的作用
3.如何设置粘滞位
①符号模式(更推荐)
②数字模式(八进制)
4.如何查看粘滞位
①使用 ls -l 查看
②使用 stat 查看
5.粘滞位和 SUID/SGID 的区别
6.注意事项
一、Linux用户的分类
1.Linux下的两种用户
①超级用户(root):可以在Linux系统下作任何事,不受限制。
②普通用户:在Linux系统下只能做一定权限内的事,受到约束。
2.两种用户提示符的区别
超级用户(root)的命令提示符是“#”,普通用户的命令提示符是“$”
3.用户的切换方法
切换用户指令:su
①root用户切换到普通用户(无需输入普通用户口令)
su + 空格 + 普通用户名,即: su user
②普通用户切换到root用户
su + 空格 + root (su之后都可以省略不写)
然后输入root用户口令
二、Linux的权限管理
1.文件访问者分类
①文件及文件目录的所有者:u(User)
②文件和文件目录的所有者所在的组的用户:g(Group)
③其他用户:o(other)
注:三种身份在进行认证时,只能选择一种身份。
2.常见文件类型
①-:普通文件(文本、可执行程序、库基本都属于普通文件)
②d:目录文件
③b:块设备文件(磁盘文件等)
④c:字符设备文件(键盘文件、显示器文件等)
⑤p:管道文件
⑥l:软连接
⑦s:套接口文件
注:Linux系统中文件后缀名没有直接意义(但不代表不用)
3.文件访问权限
r :可读权限
w :可写权限
x:可执行权限
- :表示所在权限位置没有权限
4.权限检查逻辑
当用户尝试访问文件时,系统按以下顺序匹配身份并应用对应权限:
拥有者(Owner)
若用户是文件的所有者,直接应用
owner
权限,忽略后续检查。所属组(Group)
若用户不是所有者,但属于文件的所属组,则应用
group
权限,忽略后续检查。其他用户(Others)
若用户既不是所有者,也不在所属组中,则应用
others
权限。
注:
优先级是单向的:一旦匹配到身份(如
owner
),后续身份(group
/others
)的权限不会生效。组权限的局限性:即使用户属于多个组,系统仅检查文件所属组,而非用户的所有组。
5.文件权限的表示方式
①字符表示
r--:表示仅可读
-w-:表示仅可写
--x:表示仅可执行
rw-:表示仅可读可写
rwx:表示可读可写可执行
---:表示无权限
②八进制数值表示
权限符号 二进制 八进制 r 100 4 w 010 2 x 001 1 rw 110 6 rx 101 5 wx 011 3 rwx 111 7 --- 000 0
三、与文件访问权限相关的设置方法
1.前提:
只有文件拥有者和 root 可以修改文件权限。
2.如何修改文件或目录权限
指令:
chmod——名称来源于change mode
基本语法:chmod [选项] 权限模式 文件/目录
①符号模式(字母表示)
用户类别:
u
:所有者(user)
g
:所属组(group)
o
:其他用户(others)
a
:所有用户(all,默认值)操作符:
+
:添加权限
-
:移除权限
=
:直接设置权限权限类型:
r
:读(4)
w
:写(2)
x
:执行(1)
示例:
②数字模式(八进制)
权限用 3 位八进制数表示,分别对应 所有者、组、其他用户。
权限值:
4
:读(r)——对应2进制:100
2
:写(w)——对应2进制:010
1
:执行(x)——对应2进制:001权限组合通过相加得到(如
rwx=4+2+1=7
)。
示例:
③常用选项
选项 作用 -R
递归修改目录及其子内容的权限 -v
显示权限变更的详细信息 -c
类似 -v
,但仅显示修改过的文件--reference=FILE
参照某个文件的权限设置目标文件
示例:
④特殊权限
SUID(Set User ID)
用户执行文件时临时获得所有者权限。
设置:
chmod u+s file
或数字模式前缀4
(如4755
)。SGID(Set Group ID)
用户执行文件时临时获得所属组权限,或目录下新建文件继承组权限。
设置:
chmod g+s dir
或数字模式前缀2
(如2755
)。Sticky Bit
仅允许所有者删除/重命名目录下的文件(如
/tmp
)。设置:
chmod +t dir
或数字模式前缀1
(如1777
)。
示例:
⑤典型使用场景
⑥注意事项
权限顺序:符号模式下操作顺序为
用户类别→操作符→权限
(如u+rx
)。安全风险:谨慎使用
777
或-R 777
,避免过度开放权限。
3.修改文件或目录的所有者或所属组
指令:
chown——名称来源change owner
基本语法:chown [选项] 新所有者:新所属组 文件/目录
注:可以单独修改所有者或组,也可以同时修改
①常用选项
选项 作用 -R
递归修改目录及其子内容的所有者/组 -v
显示修改的详细信息(verbose) -c
类似 -v
,但仅显示修改过的文件--reference=FILE
参照某个文件的所有者/组设置目标文件 -h
修改符号链接本身的所有者(默认修改链接指向的文件)
②示例
1. 修改文件的所有者
2. 修改目录的所有者及组(递归)
3. 参照另一个文件设置权限
4. 修改符号链接的所有者(默认修改链接指向的文件)
③注意事项
需要 root 权限:
普通用户只能修改自己拥有的文件,
root
可以修改任何文件的所有者。
sudo
提权:这个需要用root用户将普通用户添加进白名单,操作并不复杂,感兴趣的可以自行了解用户和组必须存在:
如果指定的用户或组不存在,
chown
会报错目录权限影响:
如果目录的权限不允许写入,即使是
root
,也可能无法修改其子文件的所有者
④chmod和chown的区别
chown
:修改 所有者/组(谁拥有文件)。
chmod
:修改 权限(谁能读/写/执行文件)。
4.修改文件的所属组
指令
chgrp——名称来源于:change group
基本语法:chgrp [选项] 新组名 文件/目录
新组名:可以是组名(如
developers
)或 GID(如1001
)。可以同时修改多个文件或目录。
①常用选项
选项 作用 -R
递归修改目录及其子内容的所属组 -v
显示修改的详细信息(verbose) -c
类似 -v
,但仅显示修改过的文件--reference=FILE
参照某个文件的组设置目标文件 -h
修改符号链接本身的组(默认修改链接指向的文件)
②示例
1. 修改文件的所属组
2. 递归修改目录的所属组
3. 参照另一个文件设置组
4. 修改符号链接的组(默认修改链接指向的文件)
③注意事项
需要权限:
普通用户只能修改自己拥有的文件的组,且必须是该组的成员。
root
可以修改任何文件的组。使用
sudo
提权:感兴趣的自行了解组必须存在:
如果组不存在,
chgrp
会报错
④chgrp和chown的区别
chgrp
:仅修改 组(如chgrp dev file
)。
chown
:可以同时修改 所有者和组(如chown user:dev file
)。
5.权限掩码umask
①umask作用
文件/目录创建时,系统会使用
umask
值来屏蔽(去除)某些权限。默认权限:
文件:0666(即
rw-rw-rw-
)目录:0777(即
rwxrwxrwx
)
但实际上我们所创建的文件和目录,看到的权限往往不是上面的默认值,原因就是创建文件或目录的时候还要受到 umask的影响。
假设默认权限是mask
则实际创建的出来的文件权限是:
二进制计算表示:
- 最终权限 = mask & ~umask
八进制计算表示:
最终权限 = mask - umask 权限
符号表示:
- umask 也可以使用
u/g/o
和r/w/x
表示:
②如何查看当前umask
输出结果:
③如何修改umask
临时修改(仅当前会话有效)
永久修改(对所有用户生效)
修改
/etc/profile
或用户~/.bashrc
:
重新加载配置:
④常见umask
umask 文件权限 目录权限 适用场景 0000
666
(rw-rw-rw-
)777
(rwxrwxrwx
)开放权限(不安全) 0022
644
(rw-r--r--
)755
(rwxr-xr-x
)默认推荐(用户可读写,其他只读) 0027
640
(rw-r-----
)750
(rwxr-x---
)组内共享,其他用户无权限 0077
600
(rw-------
)700
(rwx------
)仅所有者可访问(最严格)
⑤注意事项
umask 是权限的“反码”:
umask=022
表示 去掉w
权限(即rw-r--r--
)。root 用户的默认 umask 通常是
022
,普通用户可能是002
。umask 不影响已有文件,仅对新创建的文件/目录生效。
四、目录权限
1.目录各权限作用
可执行权限(x): 如果目录没有可执行权限, 则无法cd到目录中
可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
- 目录的
r
权限仅允许查看文件名列表(需配合x
才能读取文件内容)可写权限(w): 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
但是这并不科学
上面的目录权限说明只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限,但是我张三创建的一个文件, 凭什么可以被你李四删掉?
于是Linux引入了粘滞位
2.粘滞位的作用
用于目录(对普通文件无效)。
允许用户创建文件,但只能删除自己拥有的文件(防止误删他人文件)。
3.如何设置粘滞位
①符号模式(更推荐)
②数字模式(八进制)
粘滞位对应 权限数字的最前面一位:
1
表示粘滞位(如1777
)
0
表示无粘滞位(如0755
)
4.如何查看粘滞位
①使用 ls -l
查看
如果目录有粘滞位,权限的 其他用户(others)执行位
x
会变成t
输出结果:
其他用户rwt
表示:
rw-
:可读写,不可执行
rwx
:可读写可执行
rwt
:其他用户可读写 + 粘滞位
②使用 stat
查看
5.粘滞位和 SUID/SGID 的区别
细心的朋友应该注意到了,这里就是前面提到过的特殊权限
特殊权限 作用 适用对象 SUID 用户执行时临时获得所有者权限 可执行文件 SGID 用户执行时临时获得组权限,或目录下新建文件继承组 可执行文件/目录 粘滞位 仅允许所有者删除文件 目录
6.注意事项
粘滞位一般是给目录设置,而且一般是共享目录
共享目录一般只有root用户有权限创建
本文有些长,若有错漏之处,烦请各位指正。