目录
[1.1 超级用户(root)和普通用户](#1.1 超级用户(root)和普通用户)
[1.2 普通<->超级](#1.2 普通<->超级)
[1.3 sudo](#1.3 sudo)
[2.1 chown&&chgrp](#2.1 chown&&chgrp)
[2.1.1 chown](#2.1.1 chown)
[2.1.2 chgrp](#2.1.2 chgrp)
[2.2 chmod](#2.2 chmod)
[4.1 理解多用户隔离](#4.1 理解多用户隔离)
[4.2 /tmp/](#4.2 /tmp/)
1、用户分类
1.1 超级用户(root)和普通用户
超级用户 :可以在 Linux 系统下执行任何操作,几乎不受权限限制。
普通用户 :在linux下做有限的操作。一般只能在/home/用户名,自己家操作。
超级用户 的命令提示符是**#,普通用户 的命令提示符是$**。

创建普通用户 → 设置密码 → 彻底删除普通用户。使用root用户创建用户,就不需要sudo。
bash
sudo useradd -m 用户名 # 创建用户并自动建立家目录(/home/用户名)
sudo passwd 用户名 # 设置密码(交互式输入)
sudo userdel -r 用户名 # 彻底删除用户及其家目录、邮件
1.2 普通<->超级
普通->超级 :需要root用户的密码,普通用户权限低
su root,root可省略,切换到root用户,路径不变。
su - root,root可省略,以root用户身份重新登录 ,路径改变。
超级->普通 :不需要密码,root用户权限高
su 用户名 ,切换到该用户,路径不变。
su - 用户名 ,以该用户身份重新登录 ,路径改变。
1.3 sudo
sudo:指令的短暂提权 ,如:安装软件,需要root的权限。需要用户自己的密码。
注意:
只有在**/etc/sudoers**的这个"白名单 "里面,才能使用sudo,进行指令的短暂提权。
2、文件和目录的权限
访问身份 | 判定条件 | 权限标识 |
---|---|---|
所有者(Owner) | 当前用户是文件的创建者 | u |
组用户(Group) | 当前用户是文件所属组的成员 | g |
其他用户(Others) | 既不是所有者也不在组中 | o |
对于文件的权限:
-
r
:读取文件内容 -
w
:修改文件内容 -
x
:可执行 (如果是程序/脚本)。文件的可执行权限(机会 )+文件可以执行(能力 ) = 可执行
对于目录的权限:
-
r
:列出目录内容,如:ls -
w
:创建 /删除 /重命名 目录内文件/目录 。文件/目录的删除 与文件/目录本身无关 ,与所在目录的w权限有关。 -
x
:cd目录
如:对于普通文件(对目录一样)
注意:
访问身份只确定一次 ,按照所有者 ,组用户 ,其他用户的顺序。
如:Lzc用户有所有者和组用户的访问身份,
但Lzc用户访问时,确定为所有者,就只看所有者对文件的权限了。
2.1 chown&&chgrp
2.1.1 chown
功能:修改文件或目录 的所有者 或 所有者和组。
bash
chown [选项] 新所有者 文件/目录
chown [选项] 新所有者:新组 文件/目录
选项 | 作用 |
---|---|
-R |
递归修改 (用于目录,同时修改目录内所有子文件、子目录的所有者和组) |
2.1.2 chgrp
功能:修改文件或目录 的组。
bash
chgrp [选项] 新组名 文件/目录
chgrp -R 新组名 目录名/
选项 | 作用 |
---|---|
-R |
递归修改 (用于目录,同时修改目录内所有子文件、子目录的组) |
注意:
-
允许操作的用户:
-
root 用户(可直接修改任何文件的所有者和组)。
-
文件所有者(但仅限以下情况):
-
修改文件/目录 的组 时,目标组必须是该用户所属的组(否则需
sudo
)。 -
普通用户不能直接修改文件/目录所有者 (需
sudo
,即使自己是当前所有者)。
-
-
2.2 chmod
功能:设置访问身份 (所有者,组,其他用户)对应 的文件或目录的访问权限。以下以文件为例。
注意:
-
允许操作的用户:
-
文件/目录的所有者(Owner)。
-
root 用户(超级用户,无限制)。
-
bash
chmod [选项] 权限模式 文件/目录
选项 | 作用 |
---|---|
-R |
递归修改 (用于目录,同时修改目录内所有子文件、子目录的访问权限) |
权限模式:
(1)符号模式(u/
g/
o/
a + +/
-/
= + r/
w/
x)
符号 | 含义 |
---|---|
u |
文件所有者(user) |
g |
所属组(group) |
o |
其他用户(others) |
a |
所有用户(all) |
+ |
添加权限 |
- |
移除权限 |
= |
直接设置权限 |
例:可以用,连续操作
a是all,一起操作

=,直接设置
(2)数字模式(3位8进制数)
数字 | 权限 |
---|---|
4 |
读(r ) |
2 |
写(w ) |
1 |
执行(x ) |
例:666就是,rw-rw-rw-

总结一下:
root用户 ,随意。
普通用户的权限能力 = 访问身份 对应的 文件系统权限
身份 决定你适用哪组权限 规则(u /g /o)
文件/目录权限 决定具体的操作 许可(rwx)
3、文件和目录的默认权限
普通文件 :起始权限 666,默认不带可执行x。如:gcc后,会自动加x。
普通目录 :起始权限 777,一般都要r(如:ls),w(修改),x(如:cd)。
但是,还存在一个umask,权限掩码 。想要临时修改 umask,如:umask 002。

默认权限 = 起始权限 & (~umask)。umask 的后三位八进制参与位运算。
效果:umask中出现(为1) 的权限 ,都不会在默认权限中出现 (为0),可以灵活控制文件/目录的默认权限。

4、共享文件
4.1 理解多用户隔离
普通用户都在/home/下。

任何用户(root用户例外)不能进入其他用户的家目录。
4.2 /tmp/
需求:任何人都能新建文件/目录 ,但是非所有者不能删除该文件(只能删自己的文件/目录)。
当一个目录被设置粘滞位 (用 chmod +t
),则该目录下的文件删除权限受如下限制:
-
超级用户(root)可以删除
-
该目录的所有者可以删除
-
文件的所有者可以删除
其他用户 即使有写权限(w
)也无法删除这些文件。
而**/tmp/** 就是满足这个需求的目录,其他用户可以创建文件/目录 ,但是只能删自己的文件/目录 。