【Linux】Shell命令运行原理和权限详解
- 一、剩余指令的补充
- 1.tar指令
- 2.bc指令
- 3.uname
- 4.热键
- 二、Shell命令运行原理
- 1.Shell
- 2.为什么Linux不让用户直接使用kernel
- 三、Linux权限概念
- 四、Linux权限管理
- 1.文件访问的用户分类
- 2.文件类型和访问权限
- (1)文件类型
- (2)访问权限
- 3.权限的表示方法
- (1)字符表示法:
- (2)八进制表示法:
- 4.权限的设置
- (1)chmod修改文件访问权限
- (2)chown修改文件拥有者
- (3)chgrp修改文件或者目录的所属组
- (4)umask查看或者修改文件掩码
- (5)目录的权限
- (6)粘滞位
一、剩余指令的补充
1.tar指令
- tar指令(重要):打包/解包,不打开它,直接看内容
- 语法:tar [-cxtzjvf] 文件与目录 … 参数:
常用的为:
(1)-c :建立一个压缩文件的参数指令(create 的意思);
(2)-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩
(3)-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数
(4)-v :压缩的过程中显示文件!
(5)-x :解开一个压缩文件的参数指令!
(6)-C : 解压到指定目录
我们一般用-czf就够了!
-v把打包的过程显示出来:
3. tar的解压:只需将-czf / -cvzf 中的 c 变成 x 即可!
总结:
(1)zip和tar都是:打包
(2)unzip和tar都是:压缩
2.bc指令
Linux下的计算器:
如果退出要么:Ctrl+C / quit + 回车
通过重定向(echo)和管道(|)算一串连续的数字:
3.uname
1.uname:查Linux下的系统架构:
4.热键
(1)Ctrl+C :终止命令。
(2)Tab键:具有命令补齐的功能!
(3)按两次Ctrl+D 就直接退出关闭XShell
(4)Ctrl+R:在历史命令中进行搜索
二、Shell命令运行原理
1.Shell
Linux作为一个操作系统,称为"kernel",一般用户不能直接使用kernel,而通过"kernel"的外壳程序"Shell"和kernel进行沟通。
所以广义上Linux发行版=Linux内核+外壳程序,狭义上Linux发行版=Linux内核。
Shell作为外壳程序,包裹在Linux内核外层,是一个应用程序,通过一系列的Linux命令对操作系统 发出相关治疗提供人际界面。它连接了用户和Linux内核,让用户更加高效、安全、低成本地使用Linux内核,这就是Shell的本质。bash是Shell的一种。
Shell命令的执行过程:
Shell有两个作用:
(1)传递请求指令,让操作系统执行命令
(2)保护内核
2.为什么Linux不让用户直接使用kernel
对比windows GUI,用户操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成用户操作(比如进入D盘的操作,用户通常通过双击D盘盘符而进入D盘)。
shell 对于Linux,有相同的作用,主要是对用户的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
三、Linux权限概念
- 权限与人扮演的角色有关,权限也与事物的属性有关,权限==人(角色)+ 事物的属性!
- 在Linux下有两种用户,一是超级用户(root),二级是普通用户,超级用户与普通用户的命令提示符不一样:超级用户的命令提示符是"#“,普通用户的命令提示符是”$"。
- 超级用户:root 可以在Linux下做任何事情不受限制!
- 超级用户与普通用户之间可以相互切换(但是如果你普通用户切换到超级用户系统会让你输入一个密码,这个密码是root的密码,但是你root切换到普通用户不需要输入任何密码)
四、Linux权限管理
1.文件访问的用户分类
- 文件访问的用户分类,分为3类:
(1)拥有者:User(u)
(2)所属组:Group(g)
(3)other:Other(o)
2.文件类型和访问权限
(1)文件类型
在Linux中,不以文件后缀作为区分文件类型的方式,而是以文件详细列表的第一位进行标识区分:
在Linux中,我们现阶段只学常用的文件类型有:
d:目录文件
-:普通文件(包括文本、各种静态库、可执行程序、源程序)
- 众所周知,windows是如何区分文件类型的,就是通过后缀名,但是Linux不通过后缀来区分文件类型,但是Linux并不是说不用后缀。( Linux区分文件类型是根据前面的第一列字符,现在就知道 - (普通文件)和 d (目录文件)就行了)
我们对Linux中文件后缀的态度是可以使用,但并不代表Linux系统下的工具不用后缀来做区分,比如说编译器gcc就需要以后缀名来区分文件类型。
(2)访问权限
linux对文件有3种访问权限:
r:read,对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
w:write,对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
x:execute,对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
3.权限的表示方法
(1)字符表示法:
(1)快速掌握修改权限的做法:
(2)一次性加减多名角色的权限:
(3)权限的访问对用户身份只识别一次,如果匹配成功,那么就结束识别!
按 拥有者->所属组->other的顺序进行匹配!
(1)如何证明Linux对用户身份只识别一次?
对用户身份只识别一次:如果匹配成功就按成功的来,如果对拥有者匹配不成功就自动匹配所属组,如果两个都不成功,那就说明是other。
注意:“识别”和“匹配”不一样!!!(匹配成功那才叫识别了一次!)
(2)八进制表示法:
4.权限的设置
(1)chmod修改文件访问权限
只有文件的拥有者和root可以设置文件的访问权限:
chmod 【参数】 权限 文件名
①用户符号+/-/=权限字符:
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
(2)chown修改文件拥有者
修改文件拥有者:
chown 【参数】 用户名 文件名
(3)chgrp修改文件或者目录的所属组
chgrp 【参数】 用户组名 文件名
chmod chown chgrp 的语法总结:
(4)umask查看或者修改文件掩码
新创建一个文件,访问权限按理来说,应该是777,但是却发现新创建的目录的权限是755:
umask:是Linux中的默认权限掩码
(5)目录的权限
①可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
②可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
③可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
(6)粘滞位
在root的根目录下,有一个tmp文件夹,这个文件夹下存放的是临时文件,用户在保存文件之前,文件都存放在tmp文件夹中,这个文件夹下存放用户的临时文件,可以看到它的权限有个t:
这个文件夹对拥有者和所属组的权限都是rwx,对other的权限是rwt。这个t是什么属性?和r、w、x有什么区别?
先来看下面的例子,root用户在根目录下创建了一个文件夹test,并在这个文件夹中创建了2个文件test1和test2,然后又root用户切换为yjl用户,此时发现yjl竟然可以删掉test中的文件:
这怎么能忍,我创建的文件,怎么能够被别人随随便便的删除掉了?test的目录对other有w和x的权限,一旦有w的权限,那么也就是说other可以对他进行创建文件和删除文件的操作,但是不希望一个用户创建的文件被别的用户删除删除掉,我们该怎么办呢?在这种场景下我们就需要粘滞位。
当一个目录被设置了粘滞位以后,即使用户对该目录有写的权限,但是也不能删除该目录中其他用户的文件。只有文件的拥有者和root用户才可以删除。这就达到了各个用户可以在目录中读,写,修改,删除文件,但是不能随意的删除其他用户的文件的目的。
但是最后发现他报错了,你没有访问权限。
因此,当一个目录被设置为"粘滞位"(chmod +t),则该目录下的文件只能由
(1)超级管理员删除
(2)该目录的所有者删除
(3)该文件的所有者删除
好了,今天的分享就到这里了
如果对你有帮助,记得点赞👍+关注哦!
我的主页还有其他文章,欢迎学习指点。关注我,让我们一起学习,一起成长吧!