Linux权限
一、shell命令及其运行原理:
Linux严格意义上说的是一个操作系统,我们称之为核心(kernel),但我们一般用户不能直接使用kernel,而是用kernel的外壳程序也就是所谓的shell来与kernel沟通。
上面这些是命令行,用于与Linux系统沟通,但它们并不是操作系统的功能,而是外壳程序提供的读取命令、识别命令的功能,由命令行执行操作。
从技术角度,shell的最简单定义:命令行解释器,主要包括:
* 将使用者的命令翻译给kernel处理。
* 同时将kernel的处理结果翻译给使用者。
对比windows操作系统,我们不是直接操作它的系统内核,而是通过点击图形接口完成操作。
shell对于Linux,有相同的作用,主要是对我们的命令进行解析,解析指令给Linux内核,反馈结果在通过内核运行出结果,通过shell解析给用户。
外壳程序是以进程的形式呈现的,而且在命令行解释时不能挂,所以外壳程序在执行新命令时会创建子进程去执行命令。
二、Linux权限的概念:
Linux分为超级用户和普通用户:超级用户(root)可以在Linux下做任何事情,命令提示符是#,普通用户只能做有限的事情,命令提示符是$。
三、Linux权限管理:
1、文件访问者的分类:
*文件和文件目录的所有者:u
*文件和文件目录的所有者所在的组的用户:g
*其他用户:o
2、文件类型和访问权限:
(1)文件类型:
d:文件夹
-:普通文件
l:软链接(类似windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
(2)基本权限:
*r读:read对文件而言具有读取文件内容的权限,对目录而言具有浏览该目录信息的权限。
*w写:write对文件而言具有修改文件内容的权限,对目录而言具有删除移动目录内文件的权限。
*x执行:exectue对文件而言具有执行文件的权限,对目录而言具有进入目录的权限。
*-表示不具有该项权限。
就比如r--表示只读,rw-表示可读可写,r-x表示可读可执行,-w-表示只可写,---表示没有权限。
3.文件访问权限的相关设置方法:
(1)chmod
功能:修改文件权限信息
例如想要修改一个my.txt文件拥有者读的权限:chmod u-(+)r my.txt
修改文件所属组读的权限:chmod g-(+)r my.txt
同时修改三个位置的读的权限:chmod a-(+) my.txt,a表示all所有。
(2)chown
功能:修改文件的拥有者
(3)chgrp
功能:修改文件或目录的所属组
四、知识点汇总:
1.用户只能修改自己的文件权限,无法修改其他用户的。
2.没有权限发生的事:对于目标文件来说,如果没有具备相应的权限,系统会拒绝访问。
例如:剥夺my.txt文件写入的权限,就无法再进行写入的操作。
3.确定权限信息时,系统会先确定用户是谁,属于拥有者还是所属组还是其他。在Centos下,用户角色只确定一次,依次是拥有者所属组还是其他。就比如访问的用户是拥有者,系统从拥有者这一栏开始查,发现可以匹配,然后就看拥有者有没有对应的权限,没有那就无法访问,且不会再往下查,也不会再查询一次;如果访问的用户是非拥有者但是是所属组的一员,系统从拥有者这里查,发现身份不匹配,就接着查所属组,发现匹配,就看所属组那一栏有没有对应的权限。
4.root作为超级用户不受约束,想改什么改什么。
5.关于可执行文件,只有是可以本来就可以执行的文件在加上可以执行的权限才可以执行,就是给你机会但你要中用。
6.关于文件权限位都是三个三个为一组,每个位置要么就是r w x 要么就是没有权限 - ,也就是每位置都是两态的,当作比特位来看就可以表示成1或者0,上图的 my.txt 看起来就是110 110 100,将这个二进制码转换为八进制,第一、二组就是6,第三组就是4,这个文件的权限就可以表示为664,那么修改文件权限就可以用八进制表示来修改,比如:
7.对于目录来说,起始权限是777,默认携带x,因为要可以进入,所以要有x执行。但是对于普通文件来说,起始权限是666,也就是说默认不带x,因为只有可执行文件,才可以被执行。
但是上图中可以看到,该目录的起始权限是775,包括普通文件也是664不是666。这是因为在系统里存在一个权限掩码的概念, 叫做umask。
当前我的系统默认的权限掩码是0002,这个数字是八进制的,第一个0是与用户相关的,可以不做考虑,也就是说我的权限掩码缺省的是002,写成二进制就是000 000 010,它的意思是文件的最终权限=起始权限 & (~umask) 。以目录权限为例,起始权限是777转换为二进制就是111 111 111,umask就是000 000 010,对其进行按位取反,就变成111 111 101,再与起始权限按位与,就是111 111 101,这个数字转换为八进制就是775也就是目录所显示的最终权限。
8.umask出现的目的是希望在umask中出现的权限,都不应该在最终权限中权限。也就可以实现在最终权限中自己希望文件的权限是什么,就可以通过修改umask从而实现最终权限的修改。可以使系统可配置,可以灵活满足需求。在特殊情况下,配置umask,可以控制文件的默认权限,让我们的代码都是可控的。
9.粘滞位:只用用于需要共享的目录,使任何一个人都能在共享目录下新建,但不能让非拥有者删除。