Shell命令极其运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:将使用者的命令翻译给核心(kernel)处理。同时,将核心的处理结果翻译给使用者。对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。(双向关系)帮助理解:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。注意:shell本质是一个执行起来的程序(进程),系统启动期间一直存在。有风险,用户自定义的指令,shell都是通过创建子进程的方式让子进程去执行有风险的指令
Linux的权限
概念
Linux用户 root为超级管理员 非root为普通用户
什么样的人,会有root密码呢-》管理员
普通用户切换成root,需要输入root的密码
root账号切换普通不用认证
普通用户切换为另一个普通用户->需要对方的密码
su -是以root身份重新登录一次,su是用户身份切换为root
权限部分
权限是限制普通人的,大部分root操作都不会被限制
这里我举下例子,以root账号举例子
从左到右我说一下,第一个-或者d是指普通文件或者目录
紧接着有九个字母,分别是rwx和-,r是读权限,w是写权限,x是可执行权限
三个字母为一批,前三个是拥有者权限,中间是所属组权限,最后是other其他人权限
接下来有数字先不说不重要,有两个root
,是代表拥有者和所属组的区别,其他的就没啥了,概念先讲清楚等下我举例子理解
这里1.txt本来拥有者user没可执行权限,这里chmod u(代表user拥有者)+x(代表可执行权限)
总结user-》u (拥有者),group-》g(所属组),other-》o(其他人)
chmod ugoa+rwx File就可以进行权限修改
chgrp修改所属组权限用的较少chmod 777 hahah 给这个文件的拥有者,所属组,其他设置全部权限,1+2+4=7
文件类型解析
、
第一个字母代表文件类型
-:普通文件,文本源代码,图片,视频,库,可执行等等
d:目录文件
b:block,块设备文件(键盘)
c:char,字符设备文件(键盘显示器)
l:链接文件
p:管道文件
s:socket文件
Linux下一切皆文件
win下,文件类型通过后缀标识
Linux的文件类型不通过后缀区分(大部分看前面就行)
file命令可以查看对应文件信息
目录的权限
对一个目录而言,如果进入一个目录,需要什么权限?
x决定是否可以进入目录
r决定是否可以查看文件属性信息
w决定是否可以在目录下新建删除文件
umask权限掩码
定制一个文件的默认权限
为什么我们创建的普通文件默认权限不是777,而是664(因为起始权限是666)
为什么我们创建的目录文件默认权限不是777而是775(默认权限777)
因为默认权限的公式是起始权限&(~umask)二进制操作
粘滞位
一个文件是否能被删除,并不取决于文件本身,而取决于文件所处目录,拥有者是否有w权限
如果我们需要在特定目录下实现文件共享
根目录下有一个tmp目录可以完成这个功能
正常情况下other有w权限,谁都可以进来删除文件,这里第三位变成t代表粘滞位,具有x的意义,同时对目录权限也有限定
该目录的文件,只有root或者文件拥有者才有权删除





、
216



被折叠的 条评论
为什么被折叠?



