目录
一shell命令以及运行原理
1shell命令是文件
我们要知道,在Linux中,一切皆文件。shell命令也不例外,大部分的指令都是文件。
大部分指令都存储在usr/bin的目录中,输入相关的指令就从该目录中找到相关文件并执行它。
2运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel) “ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell程序来间接使用操作系统。
shell简单来说是:命令行解释器,是介于用户与操作系统内核的软件
而bash是最常用的一种shell,是当前大多数Linux发行版的默认Shell。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用序)。
对于Linux,主要是我们使用指令,shell程序解析指令给Linux内核。反馈结果在通过内核运
行出结果,通过shell解析给用户。shell相当于中介的作用。
为什么不是我们自己跟操作系统内核进行操作呢?
1因为我们不善于跟操作系统进行交互
2设置shell程序变相保护了操作系统内核(shell程序会对请求进行合理检查)
关于运行原理我们用一段故事来理解:
你叫张三,年过30,还没有女朋友。其实不是你不去找,而是你看上邻居的女儿——如花。但你自己比较社恐,不敢自己去约她出来玩。于是,你找到十里八乡最有名的媒婆——王婶,来为你”搭桥"。于是王婶根据你的需求,到如花家去提亲。但王婶走到门口时,看见如花一家人做在一起吃饭,还有如花的男朋友,正商量着明年结婚。王婶一听到这个消息,里马就跑到你家去,告诉你说你们之间不可能在一起。但你听完就不乐意了,就说:王婶,你再上门去看看,说不定如花就跟我在一起了。王婶作为媒婆,自然知道这是不可能的,但碍于你父亲是村长,没有态度强硬地拒绝你。于是王婶想了一个办法:成立一个相亲公司,让实习生去解决问题。解决不了就开除。找下一个人来代替就行。这样来也有个交代,也不会影响到我王婶的名声。
在这里媒婆(shell)只是总称,王婶(bash)是对媒婆的具体叫法。
王婶明知任务不能完成,就派一个实习生去完成。在操作系统内部表现为:bash基本上会为我们创建一个子进程,帮用户解释命令行注释,使自己不受任何失败的影响导致bash的崩溃
二Linux权限
1概念
简单来说:通过一部分限制条件,拦住一部分人,给予另一部分人某种权利,来访问资源。
权限就是有与没有的问题!例如:VIP,门禁
权限=人+事物的属性
2用户
本质——权限与人有关:
Linux有两种"具体的人":超级用户(root)、普通用户
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
命令: su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。
@ 如果要从当前路径下变为超级用户:su (root) root加不加无所谓
@ 如果要变的同时路径也要是/root:Ctrl+d或者是su -
Linux有三种“人”(角色) :拥有者,所属组,其它用户
文件和文件目录的所有者: u---User
文件和文件目录的所有者所在的组的用户: g---Group
其它用户: o---Others
那你可能会说:有了拥有者和其它用户就够了,所属组有什么用呢?
比如:你所在的公司的制度是:赛马机制,一个项目由多个人去写,选择写的好的项目去使用。有一天,你和你的竞争对手:小王在同个Linux机器上写项目,你的领导要看看你的代码写得怎么样,让你放开权限好让领导看到。如果Linux没有所属组的概念,放开其他用户的权限后,小王也能看到你的所有内容,不利于你接下来的优化与改进。
LInux有了所属组的概念,在多人协作时才更好的对权限进行管理
权限与人有关,但在Linux下有这么多"人"的概念,不会互相冲突?
其实不会冲突,角色是需要“具体的人”来扮演的!角色是“具体的人”的补充!
3文件
本质——权限与事物的属性(文件权限属性)有关
以上是关于Linux指令文件的总体介绍
3.1文件类型
window中是以文件名后缀区分文件类型,但linux以ls -l第一个属性列区分
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
那么,在定义一个文件名我们是不是可以不用加后缀名了?
修改文件名后缀,文件一样能执行!
但如果我们不注意,会出现以下的情景:
修改了后缀编译不通过,为什么?
因为Linux不用后缀识别文件类型,关我gcc什么事!gcc需要后缀名判断.
我们对Linux使用后缀名的态度:支持!
3.2文件属性
r——读权限 w——写权限 x——可执行权限
chmod
格式: chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限例子:chmod u+-rwx,g+-rwx,o+-rwx,a+-rwx filename (user,greap,other,all)
说明:只有文件的拥有者和root才可以改变文件的权限
chmod也可以搭配八进制进制来使用:
3.3文件权限
a.文件谁能修改?
文件时zzj的,他本人能修改,但将账号切换成root,他也能修改该文件.
所以:1.文件拥有者 2.超级管理员root
b.权限有无对比
我是该文件的拥有者,把拥有者的权限去除,也要受到权限的约束!(root除外)
但我是同时也是给文件的所属组,有rw权限,为什么也不能进行相应的操作?
因为Linux对于身份的识别,只进行一次!如下证明:
c.修改拥有者或所属组
除了上面指令修改权限外,修改拥有者或所属组同样能达到修改权限的效果
把我自己(whb)的文件强制给gaobo用户不也是修改权限的做法吗?
但如果不是root,要用sudo(指令提权)来实现
相关指令:chown(修改拥有者) chgreap(修改所属组) name1:name2 filename
为什么没有修改chother的呢?因为不需要(除了拥有者,所属组,其它都是other)!
d.如何理解x?
有x权限但执行不了
是执行文件但也执行不了
x代表给文件具有可执行权限,但并不一定能执行
最终能不能执行,还要看该文件是不是一个可执行文件。两者缺一不可
能执行=可执行权限+你本身是一个可执行文件
4目录权限
a进入目录的权限
少了x权限,目录进不去,说明:进入目录里面需要x权限!
b目录权限理解
作为root用户,删除普通用户的文件我能接受
但我作为普通用户,能删了root的文件我不能接受,为什么普通用户能删?
这就得牵扯到目录的w权限:
我们知道:文件=内容+事物的属性
那目录的内容是什么呢?目录是多个文件的载体,存放着多个文件,所以:
目录的内容是该目录里面所有文件信息的详细数据!
目录的w权限决定用户是否能在该目录里新建,修改,删除文件
目录的r权限决定用户能否查看指定目录下的文件内容
5默认权限
a疑问
文件的起始权限是0666(八进制),不包含x:
目录的起始权限是0888(八进制),包含x
创建文件(目录)用起始权限就可以了,为什么还要有默认权限这样概念?
原来,LInux系统为了维护用户创建文件或目录的安全性与系统内部实际情况而设置的默认权限,最终是为了方便用户。
b权限掩码
用umask指令来查系统的权限掩码,也可以修改它:
c计算
默认权限(最终权限)=起始权限&(~umask)
6共享文件
如果我们想在Linux下,想实现多用户的信息共享,怎么做呢?
a位置
能不能再家目录上建立呢?
明显是不能的,各个用户的家目录除了拥有者,其它角色的权限都没有
那我们只能根目录(非家目录)下建立一个目录(root用户才能实现)
b其它用户能删吗?
我们几个人一起在共享文件里工作,但其它用户(zzj)看到我们共享文件的内容,不想让我们在继续下去,他能删吗?
zzj用户可以删除该文件,那怎么办呢?
c粘滞位
为了解决问题, Linux引入了粘滞位的概念
chmod +t 目录名
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
最后
这便是我在学习权限的一些知识,希望对你有所帮助!