你好,我是史丰源
欢迎你的来访,希望我的博客能给你带来一些帮助。
我的Gitee:: 代码仓库
Linux权限
Shell外壳程序运行原理
Shell–外壳,相当于一层遮蔽内部的保护壳。
Linux是一个操作系统,请大家思考一个问题:我们(操作系统使用者)是否能够直接操控操作系统呢?
答案是否定的,请从上到下看下面这张图:
我们平时使用的Windows和Macos 都是使用图形化界面来访问操作系统,而Linux是使用指令来访问操作系统,那么其实图形化界面和指令就是操作系统的Shell外壳程序,大家不妨可以想一下:操作系统底层使用的是大量的0、1序列,如果用户直接去使用操作系统,那么我们需要去记住一串又一串的二进制序列,这对于我们来说是一项成本巨大的工作,并且用户是人,那么不可避免地会出错,这对于操作系统来说是不安全因素。
人不能直接操作操作系统的原因: 1.操作成本高。 2.人会犯错,从而带来不安全因素。
现在我们可以回到底层操控视图,用户操作Shell外壳程序,Shell外壳程序向操作系统传递用户的指令,操作系统再通过硬件驱动操作硬件 从而完成用户所要求的动作。
Shell外壳的意义:
1.是用户和操作系统交互的媒介
2.可以在一定程度上保护操作系统。
小故事:
张三转眼到了结婚的年龄,却没有对象,家里人都很着急,这时他所在的小镇有一个非常有名的媒婆–王婆,那么家里人就请王婆到家里和张三沟通,但张三已经有了一个心仪的对象–隔壁的小花,他请王婆去小花家说媒,那么王婆就来到了小花家,王婆与小花沟通说隔壁的张三你认识吗?小花回答不认识呀,那么王婆一想:这完蛋了,小花不认识隔壁的张三。于是回到张三家告诉张三:小花不认识你呀。
张三—用户
王婆—Shell外壳
小花—操作系统
操作系统如果不认识用户所发出的指令(Shell外壳),那么Shell外壳会返回Command not found.
Linux权限的概念
我们知道:Linux系统下有两种用户类型:
1.Root(最高权限用户),2.普通用户
那么如何识别Root用户和普通用户呢?
Root用户的命令提示符是:#
普通用户的命令提示符是:$
那么两种用户所拥有的权限也是不一样的。
Root: 可以在Linux下做任何事情,不受限制。
普通用户:在Linux下做有限权限的事情
Linux权限管理
文件访问者的分类
1.文件或文件目录拥有者: u(User)
2.文件或文件目录所属组: g(Group)
3.其他用户: o (Others)
文件类型和访问权限(事物属性与人)
事物属性:即这个事物具备能做什么的性质。(我不能够在薯片上看电影)
人:使用者(Root与普通用户)
对人操作:用户之间切换。
这里我们我们讲讲如何从普通用户切换到 Root用户
su -指令
输完指令后,Shell外壳程序会提示你输入密码(password:)。
如下图所示。
文件权限:针对人、事物的基本属性决定权限相关的概念。也即一件事是否能被你‘做’
文件不具备的属性我们就不能访问。
文件权限值的表示形式
1.Linux权限:在Linux下能够进行读写执行的权限。
读:r (八进制表示:4)
Read 对文件而言,具有读取文件内容的权限。对目录而言,具有浏览该目录信息的权限。
写:w (八进制表示:2)
Write 对文件而言,具有修改文件内容的权限。对目录而言,具有删除和移动目录内文件的权限。
执行:x (八进制表示:1)
Execute对文件而言,具有执行文件的权限。对目录而言,具有进入目录的权限。
权限符号(读写执行) 八进制 二进制
r 4 100
w 2 010
x 1 001
rw 6 110
rx 5 101
wx 3 011
rwx 7 111
---- 0 000
2.文件的类型:
d:文件夹 (dir) b: 块设备文件 (例如磁盘文件)
-: 普通文件 p: 管道文件
l: 软链接 c: 字符设备文件 (例如屏幕、键盘等设备)
s: 套接口文件 一般我们常用的是:d(文件夹)和-(普通文件)
注意:Linux下,不以文件后缀来区分文件类型, 后缀名只能代表程序的关联,并不能说明文件是可以执行。
但是,并不代表不可以使用,只是在系统层面(底层)没有意义,后缀名只是给自己看的。
证明:
我将.out后缀改为了.link 却也能执行出Hello World!
由此可见linux底层不以后缀区分文件,而是将这类文件包含为 普通文件。
文件类型位置
如上图,文件类型的显示在Linux中显示为最前端的字符。
那么对于三种访问者,Linux又是如何表示他们的权限呢?
请看下图:
Linux文件权限位置 及 用户与组名称位置
文件访问权限的相关设置方法
1.chmod:
功能:设置文件的访问权限。
具体使用方法:
chmod 用户名称+想要修改的权限 文件名
chmod使用方法
同时修改u和g方法
注意: 只有文件拥有者和Root用户才可以修改文件的权限。
我们在介绍文件权限值的表示形式,讲到了rwx的八进制表示方法,那么我们用八进制也可以完成刚才的操作。
chmod八进制表示图
2.chown:(只能以Root用户身份更改)
功能:修改文件拥有者
具体使用方法:
chown 用户名称(文件最终拥有者) 文件名
chown使用方法
3.chgrp:(只能以Root用户身份更改)
功能:修改文件或者目录的所属组。
具体使用方法:
chgrp使用方法
注意:
u无权和g有权的区别
我作为拥有者没有任何权限操作文件,那么我即使是文件权限所属组成员我也没又权限去操作文件,因为权限只会认证一次
4.umask (user mask):
功能:查看和修改文件掩码。
Linux默认:
一个目录被创建,起始权限是: 777
一个普通文件被创建,起始权限是:666
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。
原因:创建文件或目录的时候还要受到umask的影响。
格式: umask 权限值(八进制)
目录的权限
可执行权限: 如果目录没有可执行权限,则无法cd到目录中。
可读权限: 如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容。
可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。