2024-09-11
shell
⭐原理上初步理解 shell
为什么?
- 用户不能直接访问 OS
- 操作系统本身:易用程度+安全
可以检查用户的指令是否非法、安全
是什么?
核心工作:用户和内核之间
需求指令 <-shell->执行结果- 将使用者的命令翻译给核心处理
- 同时,将核心的处理结果翻译给使用者
怎么办?
shell:本质是一个执行起来的程序(或者称之为“进程”),系统启动期间,一直存在。
对于有风险、用户自定义指令,shell 都是通过创建 子进程的方式让子进程去执行有风险的命令
shell
是一个统称,bash、sh
等是具体的命令行解释器。
Linux 用户
- root,超级管理员
- 非 root,xxx,普通用户
普通用户切换成 root,需要输入 root 的密码
管理员才会具有 root 密码
root 账号变成普通,不用认证的。
普通用户变成另一个普通用户,需要对方的密码
对指令提权
假如我现在是普通用户,但我只想用root账号执行一条命令,如果切换为root那么太麻烦了
sudo
对指定的指令进行提权
权限管理
权限是用来限制人的。
对应的操作对象,一定要有对应的满足人的需求的属性。
文件访问者的分类(人)
Linux 群体——更多的是角色—— 拥有者、所属组、other
一个人有多个身份
user->u group->g other->o
文件类型和访问权限(事物属性)
文件类型
第一个字符,表示文件类型
Linux 的文件类型不通过后缀区分(不代表 Linux 不用后缀)
-
:普通文件,文本、源代码、图片、视频、库、可执行等
d
:目录文件
b
:block,块设备文件
c
:char,字符设备文件
键盘、显示器——不允许随机访问
l
:链接文件
p
:管道文件
s
:socket 文件
基本权限
Linux 操作对象的属性——文件权限——r w x
r
:Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限w
:Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限x
:execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 iv.“—”表示不具有该项权限-
:表示不具有该项权限
如何修改权限
chmod u/g/o/a +/- r/w/x FILENAME
或者通过其对应权限用数值形式
在系统中使用二进制位存储,也就是使用0和1表示是否具备操作的权限,以每3个比特位表示一个八进制数字(取值范围:0~7),则转换为三个8进制数字
如 rwx–111—7
-rw-r--r-x
——645
更改文件拥有者
chown+用户+文件名
chgrp +用户+文件名`
对于文件后缀的态度:虽然 Linux 不通过它识别文件类型,但是我们依旧推荐使用!
1. 工具需要
2. 人需要
file 指令:可告诉我们文件类型
常见的权限三个问题
对文件夹的权限理解
- 对一个目录而言,如果要进入一个目录,需要什么权限?
- x 决定是否可以进入目录
- r 决定是否可以进行对文件属性信息进行查看的权利,Is-I
- w 决定是否可以在目录下进行新建和删除文件
默认权限以及权限掩码
- 为什么我们创建的普通文件:默认的权限不是
777
,而是664
普通文件的起始权限:666
为什么我们创建的目录文件:默认的权限不是777
,而是775
目录文件的起始权限:777
umask
:(该指令)查看权限掩码
定制一个文件被创建的时候的默认权限
权限掩码的相关计算
- 将权限掩码和起始权限变成二进制
- 将这两个二进制对一一对应
- 权限掩码为1,起始权限为1时,起始权限改为0
- 权限掩码为0,起始权限也为0时,起始权限不变
总结:从起始权限中去掉 在umask
(权限掩码)中出现的权限。不是减法!!!
计算公式:起始权限&(~umask) = 最终权限(默认)(还是总结的更好记)
拓展:粘滞位
- 一个文件能否被删除,并不取决于文件本身!!! 而取决于文件所处的目录,拥有者是否具有 w 权限。
如果我们需要一个特定的目录下,实现文件的共享呢?
为了实现让多个用户之间可以数据共享,将 other 的 rwx 权限全部放开,共享的目的达到了!但是删一个文件与你这个文件本身无关(所以别人就可以删我们的文件),防不住别人删我的文件。- 去掉 other 的 w 权限不就可以了吗?但是也会阻止别人新建文件。
于是,给 other 新增了一个权限:t
粘滞位:给目录中的 other 设置的一个权限位,具有 x 的意义,同时也进一步对目录权限进行特殊限定:该目录里面的文件,只有 root 、该目录的所有者、文件的拥有者有权利进行删除!!!其他人一概不允许!
- 去掉 other 的 w 权限不就可以了吗?但是也会阻止别人新建文件。