03_[Linux操作系统]Linux的权限及权限管理
Posted .阿Q.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03_[Linux操作系统]Linux的权限及权限管理相关的知识,希望对你有一定的参考价值。
目录
Linux权限的概念
Linux严格意义上说的是一个操作系统,我们称之为 “ 核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的 “ 外壳 ” 程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度, Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
- 将使用者的命令翻译给核心(kernel)处理。
- 同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符或者运行起来一个应用程序)。
而shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
帮助理解行✨:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的让你心动的小花。你看上了小花,但是有不好意思直接表白,那就让媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。
su切换用户命令
Linux下有两种用户:超级用户(root)、普通用户
- 超级用户:可以再linux系统下做任何事情,不受限制。
- 普通用户:在linux下做有限的事情,权限受限制。
- 超级用户的命令提示符是“ # ”,普通用户的命令提示符是“ $ “。
命令:su [用户名]
功能:切换用户
例如:
- 从root用户切换到普通用户user: su user (不用输入密码)
- 从普通用户user切换到root用户: su root(root可以省略),此时系统会提示输入root用户的口令
注意:虽然从root用户切换到普通用户可以su -user,也不用输入密码。但是也不建议这样写。因为..................bash.........过多?见视频02:31:41
我们建议用 exit 或者 Ctrl + d进行用户回退
我们想要让root执行操作很简单,因为root有最高的权限。所以对于一些操作我们当然可以切换到root用户去执行。
我们不想切换到root用户,只是此处执行命令且用了root用户的身份。那么有没有别的方式,可以实现?
—— sudo 指令
sudo功能:临时权限提升,执行后续命令,以root身份执行。
注意:目前我们的Xshell还不能执行sudo指令,那是因为还没有装配置,等讲到vim再讲这个事情 ........................
Linux权限管理
所以权限是由两部分组成:
- 人
- 事物的属性
01文件访问者的分类(人)
- 文件和文件目录的所有者:u --- User
- 文件和文件目录的所有者所在的组的用户:g --- Group
- 其他用户 :o --- Others
02文件类型和访问权限(事物属性)
03修改权限的命令(修改人+修改事物的属性)
(1)chmod
功能:设置文件访问权限
语法格式:chmod [ u/g/o] [+/-] [r/w/x] 文件名
常用选项:a 表示对所有的访问者(拥有者、所属组、其他人)都操作
说明:只有文件的拥有者和root才可以改变文件的权限
(2)chown
功能:修改文件的拥有者 (也可以拥有者和所属者一起改变)
格式:chown 用户名 文件名
eg:chown root file.txt
(3)chgrp
功能:修改文件或目录得所属组
格式:chgrp 用户名 文件名
eg:chgrp root file.txt
了解(2)(3)命令得基本功能和语法格式后,看下面具体实例:
如何把文件的拥有者修改为root?
04文件权限值得表示方法
(1)字符表示形式
不多赘述,就是rwx-。
我们知道,文件属性里面,包含三个对应的权限:拥有者得权限、所属组得权限、其他人得权限
其中三三为对应的一个“ 角色 ”。而角色内部也有顺序,分别是:读、写、可执行。如果该位置是r/w/x,则代表可以读/可以写/可以执行
如果是-,那么就代表不可执行。
所以,既然内部是有顺序的,并且顺序是一定的,每个位置要么是可以xxx,要么是不可以xxx。
即:权限的位置是确定的,并且是两态的。我们记作可以是1,不可是0。
所以:rw-r--r--可以表示为110100100。
而三个位置看作一个整体,那么就是类似于三个“ 比特位 ”,表示范围是0 —— 7,是8进制数据
(类比一下:0——9是十进制;0——15是十六进制)
所以,rw-r--r--可以表示为110100100,也可以表示成8进制数字644(110是6,100是4)
(2)8进制数值表示法
所以,文件权限值不止可以写成类似于rw-r--r--的字符表示形式;也可以写成644这种8进制数字的表示形式。
举个例子:
chmod a-rwx file.txt <==> chmod 777 file.txt
效果如下:
再如:
目录的权限
- 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
- 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
- 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中(注意:有读权限不可以进入目录读取目录下的文件)
于是, 问题来了~~
换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。
这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉?
为了解决这个不科学的问题, Linux引入了粘滞位的概念
粘滞位
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
- 超级管理员root删除
- 该目录的拥有者删除
- 该文件的拥有者删除
权限掩码
关于权限的总结
- 目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录,即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)。
- 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。
- 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
以上是关于03_[Linux操作系统]Linux的权限及权限管理的主要内容,如果未能解决你的问题,请参考以下文章