1. Linux 构成
-
Linux 操作系统,从广义和狭义上讲有两种解释方式:
-
广义:Linux 系统内核
-
狭义:Linux 内核 + Linux 外壳和对应的配套程序
-
-
Linux 程序的执行过程:
-
将用户输入的指令,解释传递给内核
-
内核执行命令,得到结果,把结果通过外壳传递给用户
结果的传递依赖
命令行解释器
:命令行解释器接收到指令之后,会创建子进程以执行命令,父进程则继续进行命令行获取
shell 是对命令行解释器的统称,细分到各个发行版有
bash
,sh
等
-
-
为什么用户不和系统内核直接交互?
-
直接和系统内核交互,过于复杂,外壳负责对命令进行解释
-
当用户发出不合理请求时,由外壳进行拦截以保护操作系统
-
2. Linux 权限
-
Linux 具体的用户:
-
root - 超级管理员,拥有几乎所有的权限
-
普通用户,受权限约束
普通账户提权命令:
-
su
单纯的账号切换 -
su -
让 root 账号重新登陆
普通账户执行 root 指令:
sudo <命令>
这里输入密码要输入自己账号的密码,输入完成后数分钟不用再输入密码。
root 账户退出命令:
CTRL+D
root 账户变成任何普通用户:
su <用户名>
-
-
-
权限:一件事情是否允许被你做
命令能否执行,与两个方面有关:
-
用户 -> 角色:用户是否具有权限
用户具有三个身份(角色):拥有者,所属组和其他:
-
拥有者:创建者
-
所属组:
-
一个组里可以有很多人,用组长的名字来对组进行命名
-
特殊情况下,一个组里可以只有一个人
为什么要有所属组?
-
进行权限细分,使得用户可以更好的管理文件,以防文件机密泄露
-
-
其他:该文件不属于其他人
不是拥有者,不是所属组,就是 other
-
-
事物属性:文件是否拥有读(
r
),写(w
),执行(x
)权限命令
ll
查看的文件属性,第一列的 10 个字符意思:-
第一个字符,代表文件类型
Linux 文件类型分类:
-
不同于 Windows,Linux 区分文件类型与文件后缀无关,和文件是否具有可执行权限有关。
-
后缀的作用:给人看的,同时软件要对后缀名进行识别。
-
-
代表普通文件:源代码,可执行程序,库等、 -
d
代表目录文件 -
c
代表字符设备文件:显示器,键盘 - 以字符为单位输出/输入 -
b
代表块设备文件:硬盘分区 -
l
代表链接文件:快捷方式 -
p
代表管道文件:进程间通信
-
-
第 2 ~ 4 个字符,代表该文件身份为
拥有者
的权限 -
第 5 ~ 7 个字符,代表该文件身份为
所属组
的权限 -
第 8 ~ 10 个字符,代表该文件身份为
其他
的权限
-
-
-
更改文件的权限:
chmod <身份1> <操作><权限> [<身份2> ...] 文件名
身份:所有人
a
,拥有者u
,所属组g
,其他o
操作:
+
/-
权限:读(
r
),写(w
),执行(x
)只有文件的拥有者可以改变该文件的权限,root 不受此限制。
文件的身份组匹配时,只匹配一次,这意味着一个用户如果同时是文件的拥有者和所属组,所属组的权限对他不起作用。
-
更改文件的权限还有一种方法:
chmod 数字 文件名
数字:用三个二进制位代表一个用户的
r w x
权限,比如 111 代表该用户同时拥有三种权限111 转换成真值是 7,所以三个真值就分别代表三种用户的权限
-
777
三种用户都具有三个权限 -
664
other 没有执行权限 -
...
为什么目录的默认权限是
775
而普通文件的默认权限是664
?-
目录的起始权限是
777
,普通文件的起始权限是666
。 -
权限掩码:
umask [新掩码]
查看/修改,显示一个四位的八进制数字:-
第一个 0,代表八进制的前缀
-
第 n 个 0,代表 拥有者(1)/所属组(2)/other(3) 创建文件时起始权限要去掉对应数字,例如 umask = 002,那么目录文件的默认权限就是 777 - 002 = 775
-
如果该用户的起始权限没有,但是根据 umask 要被减掉,那么不会借位。
例如,
664
->110 110 100
umask = 003
->000 000 011
相减得
664
->110 110 100
,umask 减去的权限被忽略。所以 umask 也可以理解为,把 umask 二进制位为 1 的对应的用户权限二进制位清 0。
对应算法:先把 umask 按位取反,再和起始权限按位与,最终得到结果。
任何数和 1 与等于本身,和 0 与都等于 0。
-
-
-
更改文件的所有者:
chown 新所有者 文件名
然而需要别人同意。
-
方法一:
sudo
提升权限 -
方法二:
su
切换成 root 用户,再给别人
-
-
更改文件的所属组:
chgrp 新所属组 文件名
方法同上。
-
同时更改文件的拥有者和所属组:
chown 新所有者:新所属组 文件名
目录文件是否可以进入,取决于角色是否具有目录的
x
权限。目录中的文件是否可以
ls
,取决于角色是否具有目录的r
权限。查看文件属性的权限,属于该文件所属的目录而不属于该文件。
目录中的文件是否可以
touch/mkdir/rm
,取决于角色是否具有目录的w
权限。如果我已经取消了这个文件 other 的
r
w
权限,但是有人直接把文件删除了,怎么办?-
一般情况下不可能发生,因为别人没有权限进入你的家目录。
-
但是如果是一个合作场景,大家都在 root 创建的共享目录下工作,所有人都必须有
r w x
权限,此时更改文件的权限不能阻止别人删除你的文件。 -
所以操作系统新增了权限 - 粘滞位:
-
-
chmod +t 目录名
给目录添加粘滞位,添加后在该目录内只有文件的拥有者可以删除自己的文件,其他人不能删除。当然 root 也可以删除。
-
file 文件/路径名
辨识文件类型