Shell
用户不善于直接使用操作系统
让用户直接使用操作系统成本高,不安全
什么叫做用户直接访问操作系统?
用户需要考虑如何把数据交给操作系统,操作系统如何将数据写入显示器,有没有成功,处理问题,这些都需要用户关心
所以,系统设计者为我们提供了Shell外壳程序,一方面降低用户使用成本,外壳程序将用户的需求交给操纵系统,另一方面保护了操作系统,因为很多非法访问可以直接在外壳程序处终止,而windows的图形化界面和Linux的命令行都是操作系统提供的外壳程序
![](https://i-blog.csdnimg.cn/blog_migrate/38906a15f1227e09b2c8ea947543266f.png)
外壳存在的意义
如果我把一个错误的指令交给外壳,外壳把这个指令交给操作系统,操作系统拒绝了命令的执行,外壳打印出了commond not found
我把一个正确指令交给外壳,外壳把这个指令交给操作系统,但操作系统拒绝了命令执行,这叫做指令存在但是不能执行(没有权限)
外壳知道操作系统不可能执行用户的某个命令(非法请求)则在外壳这一层就拒绝了用户,也是外壳变相保护了操作系统
Bash外壳称为命令行解释器,他不是自己做事,在Linux下是通过创建子进程,让子进程执行命令行解析,只有这样,外壳才能专注于创建子进程,给子进程派发任务
外壳将使用者的命令翻译给核心,再把核心的处理结果返回给用户
查看我们Linux下的外壳程序
![](https://i-blog.csdnimg.cn/blog_migrate/00ed42ac9d67e2756b66b13a27841012.png)
权限
普通用户切换超级用户
![](https://i-blog.csdnimg.cn/blog_migrate/384bf45c60ac25c18f95885e46340b3a.png)
ctrl+d退回普通用户
![](https://i-blog.csdnimg.cn/blog_migrate/6ba9c3a7799756bb3438e1e9e7b5e9cc.png)
在普通用户状态下直接su可以变成超级用户,之前的路径不改变
su - 让root重新登陆,路径变为/root(默认路径)
![](https://i-blog.csdnimg.cn/blog_migrate/d9154c64d32a53c75bb29c8d701d5d6b.png)
如果我是root我可以变成任何人
![](https://i-blog.csdnimg.cn/blog_migrate/f37c2a87b6d6b42c02d5c3041fab5db2.png)
权限是什么
针对普通用户(非VIP)
如果某个事物不具备某种属性,那么人就不具备对应权限,文件权限就是一件事是否允许被谁(人)做(事物属性 r读 w写 x执行)
Linux下不以文件名区分文件类型<文件类型介绍>
d:目录
-:普通文件
![](https://i-blog.csdnimg.cn/blog_migrate/d39de2bb420b4657199263eea4996e0b.png)
p 管道文件 mkfifo f
![](https://i-blog.csdnimg.cn/blog_migrate/8cf20695645e0ef884eebe4abc10b971.png)
b块设备,磁盘设备
c 字符设备,键盘或显示器
l 链接文件
![](https://i-blog.csdnimg.cn/blog_migrate/fb66462650df3bd76905002d5016808a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7d2a14e6cdc67637a63d6fc48ada9978.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4beeb4599fd5b087fc7a36134e5924d1.png)
chmod
不是拥有者,不是所属组,就是other
root wanwan 这样的管理员又或者是普通用户,这就是具体用户,它们可以是一个文件的拥有者,也可以是一个文件的所属组,也可以是other。因此拥有者,所属组,other这叫做对于一个文件来说的身份。
第一列是文件类型,后面九列3列为一组,分别对应拥有者所属组和other,每一种身份对应三个权限,且rwx相对位置是确定的
权限操作
1.ugo +- 方案
chmod u+rwx,g-rw,o+rw myfile.txt 要用逗号隔开,如果一起写的话
![](https://i-blog.csdnimg.cn/blog_migrate/d62ee4b3347531582b586427190572e2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/90cc72c757839e0def97f411091b2a2c.png)
chmod a+x myfile.txt
a代表所有人
改变一个文件的拥有者所属组
chown
chgrp
不需要改变other,因为有了chown和chgrp,所属组自然就随之改变
chown wanwan file.txt
chgrp wanwan file.txt
sudo chown wanwan file.txt
sudo chown wanwan:wanwan file.txt 同时修改
使用sudo命令的前提是我要被放在信任列表中,才可以以root身份运行
vim /etc/sudoers
2.八进制方案
chmod 777 myfile.txt
目录权限问题
cd dir x 权限
ls r 权限
touch file w权限
如果你是一个文件的拥有者那就认定你是拥有者的权限,不认定所属组,文件的权限只被认定一次
粘滞位 umask
linux默认一个文件被创建
目录的起始权限:777
普通文件的起始权限:666
但是我们看到
![](https://i-blog.csdnimg.cn/blog_migrate/46a7b3238226fae51662396ccda1e666.png)
所以最终权限==起始权限?
umask 权限掩码,所有在umask中出现的都不该在最终权限中出现
最终权限=所以默认起始权限-unmask
最终权限=起始权限&(~umask)
![](https://i-blog.csdnimg.cn/blog_migrate/6746ba1bc56f2cc3919e939da2ad762b.png)
umask改变了other的权限
umask的意义
如果别人在你的目录下创建了一个文件,如果他设置了权限,你可能读写不了,但是你可以删除这个文件,因为你拥有目录的写权限
如果大家对某个目录都有读写权限,所有人都可以在这个目录下创建文件,我可以设置我的文件其他人无法读取,但是阻止不了他人删除我的文件,因为所有用户都对这个目录有读写权限
根目录下,有一个tmp文件夹,被系统所有用户共享
就是粘滞位+t(x的特殊情况)
设置粘滞位,多人在同一目录进行开发并且不会相互影响
![](https://i-blog.csdnimg.cn/blog_migrate/e2e57e2483472f54b05d5b7ad891dda4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/89fd09ea964cde60881d6b27b69c8ffa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/00dd876562b248e42bfb4c831adee1d6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7c115389d05976c61179d2f4abaa33e1.png)