【Linux】权限

shell命令及其运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。
在这里插入图片描述
那为什么不能直接使用kernel?

因为shell存在的意义,是变相的保护操作系统。

在这里插入图片描述假设没有shell的保护,这条随便指令直接给操作系统,可能会造成操作系统的损坏。

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
1.将使用者的命令翻译给核心(kernel)处理。
2.同时,将核心的处理结果翻译给使用者。

对比与windows图形界面,本质上也是一种外壳程序。我们不能直接操作windows内核,而是通过图形化接口,然后完成我们的操作。

因此Linux shell命令行外壳和图形界面是兄弟关系。

Linux权限的概念

Linux下有两种用户:超级用户(root),普通用户

超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

命令:su [用户名]
功能:切换用户。

从超级用户切换到普通用户user,则使用su user
在这里插入图片描述
并且不需要输入密码,因此root的密码一定要牢记,普通用户的密码建议不要和root的密码一样。

从普通用户切换到root,则使用su root(root)可以省略,此时系统会提示输入root用户的密码。
在这里插入图片描述
假如普通用户原本在自己的家目录下,切换root之后,想保持原本路径不变,使用su
如果想重新登录root,使用su -

前面提到过,普通用户执行一条命令,但是没有权限,可以使用sudo command,短暂的提权,使用root身份执行命令。但是现在我们使用sudo进行提权还是不能成功,是因为系统并不信任这个用户,需要将当前用户添加到/etc/sudoersz中,后面我们再说这个配置问题。
在这里插入图片描述

什么是权限

按照我们自己的理解,权限是自己有权做什么事情。其实意思也差不多。

总结:
权限是约束人的(一个人或某些群体)
目标对象:做本来就没有对应的属性(业务),比如要在播放视频的软件做在线oj题。。。

权限:一件事情是否允许被谁做

Linux权限更多的是文件权限
文件权限=人+文件属性

比如这个文件允许张三读,不允许李四读等等。允许王二写,不允许其他人写。如果是这样针对每个人进行权限的划分的话,就太麻烦了。因此把人换成角色就好一些。
在这里插入图片描述
在这里插入图片描述

可能有人会觉得按照拥有者和其他人划分不就可以了吗?为什么要存在所属组呢?
可以这样想,假设在一个大公司,张三在A组,李四在B组。两组处于竞争关系。
在这里插入图片描述
如果张三的上级要看张三的源代码,如果按照拥有者和其他人来划分,张三的上级就是其他人,如果放开权限让其看,那么李四对于张三来说也是其他人,也就可以看。因此存在所属组是有必要的。

文件属性:r (读),w(写),x(执行)。

文件类型

在这里插入图片描述
通过ll显示的众多属性列中的第一列的第一个字符区分文件类型。

文件类型

d:文件夹(目录文件)
-:普通文件(源代码,库文件,可执行文件,文档压缩包等等)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件(以p开头)
c:字符设备文件(例如屏幕等串口设备)(键盘,显示器等等)
s:套接口文件

注意:Linux和windows(文件的后缀)差别很大,Linux与文件后缀无关,但是却可以使用后缀区分文件类型,如果要使用后缀,仅仅是给用户做一个提示符来使用,后缀本质上就是文件名的一部分。但是gcc等工具,对文件后缀可能有要求。

如何操作权限

我们知道文件权限=人+文件属性,因此设置权限时,既要设置文件属性,又要设置文件所属角色。

chmod
功能设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

设置文件权限

方法一
ugo + - rwx方案

用户表示符+/-=权限字符

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

举例
在这里插入图片描述
例1:给拥有者加x(可执行)权限
在这里插入图片描述
例2:给拥有者减x(可执行)权限
在这里插入图片描述
例3:给所有组和其他人加w(写)权限
在这里插入图片描述
例4:一次性给所有用户减r(读)权限
在这里插入图片描述

注意这个文件的权限,拥有者有读的权限,所属组拥有读和写的权限,测试一下,能不能在这个文件中写入内容。
在这里插入图片描述
结论是不能,因为系统会进行匹配,匹配到谁就用谁的权限。
声明一点这里我们使用的root超级用户,还没有切换到普通用户,root无视权限所以可以写,可以自己切换到普通用户试试。

方法二:
八进制方案

在这里插入图片描述
举例
在这里插入图片描述

例1:给拥有者加和所属组加r(读)的权限
在这里插入图片描述例2:给所有用户减去w(写)的权限
在这里插入图片描述

自己可以随意组合。

chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
实例:
在这里插入图片描述

chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
实例:
在这里插入图片描述
一次把文件拥有者和所属组都修改
在这里插入图片描述

为什么要有权限

便于我们系统进行安全管理。

三个问题

问题1

为什么我们创建的目录或者普通文件,默认权限是我们所看到的样子?

在这里插入图片描述

Linux规定
目录 起始权限 777
普通文件 起始权限 666

这里介绍一下umask
umask
功能:查看或修改文件掩码
超级用户默认掩码值为0022,普通用户默认为0002。
系统默认配置号umask权限掩码;凡是在umask中出现的权限都必须在起始权限中去掉。
在这里插入图片描述

在这里插入图片描述

补充指令

file指令:
功能说明:辨识文件类型。
语法:file [选项] 文件或目录…
常用选项
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。
在这里插入图片描述

问题2

如果我们要进入一个目录,需要什么权限?
在这里插入图片描述

进入目录需要x权限
r权限并不影响进不进目录,而影响进入目录之后能不能查看目录文件列表
w权限也不影响进不进目录,而影响进入目录之后能不能创建文件

问题3

为什么系统规定目录必须是777开始的?
因为所有目录被创建处理,一般都要能被进入,必须要有x权限。

粘滞位

一般创建目录或文件都会在家目录下创建,只能自己或者root进行操作,其他人不能操作。但是可能存在这样一种情况,允许其他人对自己的文件做一些自己允许权限的操作。

我们知道,Linux是一个多用户操作,因此我们需要在一个公共的目录下,进行允许其他人对临时文件的操作。

Linux默认的公共目录tmp
在这里插入图片描述
注意这个公共目录是由root创建的。

我们自己创建一个公共目录
在这里插入图片描述
在公共目录下,大家都可以做rwx操作,

w用户创建两个文件,wdl用户创建两个文件
在这里插入图片描述
w用户可以阅读wdl用户文件的内容
在这里插入图片描述
现在wdl修改了权限。
在这里插入图片描述

由于,wdl修改了权限,w用户不能对wdl用户文件进行r和w的操作了,非常生气,所有打算删了它
在这里插入图片描述
发现没有,虽然wdl1.txt对应的其他用户没有了rwx权限,但是w还能删除wdl的文件。
原因在于删除文件,不是由文件权限决定的,而是由目录所决定的。
为什么解决这个不科学的问题,Linux引入了粘滞位的概念。

具体操作
在公共目录下,允许各自rwx操作,但是禁止大家互删对方文件。因为需要给目录设置粘滞位
在这里插入图片描述
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

Linux有关权限到此结束。
喜欢的动动发财的小手点赞,评论,收藏。

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值