Linux的权限
目录
1、用户分类
1.1 超级用户(root)和普通用户
1.2 普通<->超级
1.3 sudo
2、文件和目录的权限
2.1 chown&&chgrp
2.1.1 chown
2.1.2 chgrp
2.2 chmod
总结一下:
3、文件和目录的默认权限
4、共享文件
4.1 理解多用户隔离
4.2 /tmp/
1、用户分类
1.1 超级用户(root)和普通用户
超级用户:可以在 Linux 系统下执行任何操作,几乎不受权限限制。
普通用户:在linux下做有限的操作。一般只能在/home/用户名,自己家操作。
超级用户的命令提示符是#,普通用户的命令提示符是$。
创建普通用户 → 设置密码 → 彻底删除普通用户。使用root用户创建用户,就不需要sudo。
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
功能:修改文件或目录的所有者 或 所有者和组。
chown [选项] 新所有者 文件/目录
chown [选项] 新所有者:新组 文件/目录
选项 | 作用 |
---|---|
-R | 递归修改(用于目录,同时修改目录内所有子文件、子目录的所有者和组) |
2.1.2 chgrp
功能:修改文件或目录的组。
chgrp [选项] 新组名 文件/目录
chgrp -R 新组名 目录名/
选项 | 作用 |
---|---|
-R | 递归修改(用于目录,同时修改目录内所有子文件、子目录的组) |
注意:
-
允许操作的用户:
-
root 用户(可直接修改任何文件的所有者和组)。
-
文件所有者(但仅限以下情况):
-
修改文件/目录的组时,目标组必须是该用户所属的组(否则需
sudo
)。 -
普通用户不能直接修改文件/目录所有者(需
sudo
,即使自己是当前所有者)。
-
-
2.2 chmod
功能:设置访问身份(所有者,组,其他用户)对应的文件或目录的访问权限。以下以文件为例。
注意:
-
允许操作的用户:
-
文件/目录的所有者(Owner)。
-
root 用户(超级用户,无限制)。
-
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/就是满足这个需求的目录,其他用户可以创建文件/目录,但是只能删自己的文件/目录。