Linux指令运行原理和权限
- 一.命名行解释器
- 二.权限
- 1.用户分类
- 2.什么是权限
- 3.增删权限
- 4.更改权限的拥有者
- 5.三个概念
- 1.权限掩码
- 2.目录权限
- 3.粘滞位
- 三.权限总结
一.命名行解释器
那么命令行解释器存在的意义:1.进行命令的解释。2.保护os,对于非法的请求,直接拦截。
二.权限
1.用户分类
进入root权限
退回普通用户
变成其他用户,如果是root账号则不需要输入密码,如果是同级账号则需要输入密码
短暂的提升用户权限
在这条指令后,输入自己的密码,这样就可以暂时的进入root权限。但实际上并非所有用户都能进入root权限,你的用户必须在信任白名单里。
2.什么是权限
1.一件事情是否允许你做(与访问者有关)
2.文件类型和访问权限(与事物属性有关)
人
这里的人指的是具体的角色,权限身份。它与我们具体的用户是一种相互支持的关系,不同的用户可以扮演不同的角色。就像一个人既可以是医生,也可以是父亲。
属性
3.增删权限
注意增删权限只有拥有者和root能使用。
给拥有者增删权限
给所属组和其他人增删权限
给所有人增删权限
因为权限只有有和没有两个选项,如果我们将有权限看作1,无权限看作0,那么rwx就可以写为111,转换为8进制就是7,如果我们给所有人加上rwx权限,那么就是777。
4.更改权限的拥有者
但是我们在直接进行操作时会出现操作不允许。这是因为这种操作需要征求别人同意,很明显这里很难操作。所以我们还可以强制给予(需要权限提升到root)。
也可以一次更改拥有者和所属组
总结
如果我既是文件拥有者又是所属组,但是作为文件拥有者我只有读的权限,作为所属组我既有读又有写的权限,那么我能不能写文件呢?
答案是不能的。这是因为权限只能选择一个进行认证,也就是说因为已经首先认证了拥有者权限,那么就不能再认证所属组权限了。
5.三个概念
1.权限掩码
为什么普通文件的默认权限是rw-rw-r–(664)呢?
为什么创建的目录默认权限是rwxrwxr-x(775)呢?
这里其实存在一个权限掩码umask,它其实是8进制的,第一个0是代表8进制。它的作用是凡是在umask中出现的权限,不会在最终的文件权限中出现。
这里看上去很像减法,实际上并不能当作减法来看。我们这里可以将权限掩码修改一下。
按照减法推论,这里的test3应权限应该变为665,但实际上它的权限是666。
根据umask的定义,其实这里umaks最后一位是1,那么意味着test3的最后一位是0,但实际上test3最后一位本来就是0,所以实际上umaks并没有起作用。
2.目录权限
一个文档的读写很好理解,那么一个目录的读写又代表什么含义呢?首先一步一步来,我们为什么能进入目录呢?
是不是因为我们有读的权限,接下来将这个权限去掉看看发生什么。
我们可以发现我们依然能够进入,但是不能够查看了。这说明读权限是影响查看列表的操作。那么写呢?
写是不能在目录里创建文件了。
总结
3.粘滞位
那么此时在我们可以直接在根目录下创建共享文件,任何人都可以在这个文件里进行读写。但问题来了,任何一个人都可以写,也就意味着每个人都可以任意删除文件,很明显这是不合理的。那我们如何规避这个问题呢?能不能把写的权限去掉呢?答案是不可以的,如果去掉,那么这个共享文件就毫无意义,所以我们得有个新概念来解决这个问题。就是粘滞位。
我们可以看到这里的x变为了t,t其实也是一种可执行权限,但这个权限有些特殊。这代表着你可以新建文件,但只能删除或修改你自己建立的文件。