菜鸟笔记
提升您的技术认知

Linux权限的概念

1.shell命令以及运行原因

Linux严格意义上说是一个操作系统,称之为“核心(kernel)”,但一般用户不能直接使用kernel。而是通过kernel的“外壳”程序,也就是shell。
shell的最简单的定义:命令行解释器,主要包含:将使用者的命令翻译给核心处理,同时,将核心的处理结果翻译给使用者。
对于windows GUI,我们操作windows不是直接操作windows内核,而是通过图形接口。
shell对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

2.Linux下的用户

Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
命令:su [用户名]
功能:切换用户
要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su
root(root可以省略),此时系统会提示输入root用户的密码

在root用户下,可以通过在home的目录下查看有哪些普通用户

这里提醒一下su是在同一路径下切换,su -是让我们的root重新登录

3.Linux权限管理


大家知不知道红色圈起来的是什么意思吗?接下来就给大家解释

1.文件类型

Linux不用文件后缀区分文件类型,而是用文件属性中第一列的第一个字符来区分文件类型

分类:
-:普通文件(文本、可执行文件),这里和windows下不一样,问文本,可执行文件都是普通文件
d:目录

剩下的几个了解一下就好了

l:软连接
b:块设备文件(硬盘)
p:管道文件
c:字符设备文件(显示器)
s:套接口文件

2.基本权限

文件类型后面还有九个字符,那分别是什么呢?
前三个字符:代表文件所有者的权限
中间三个字符:文件所属用户组的权限
后三个字符:其他用户的权限

首先三个字符的位置是确定的:rwx
基本权限:
r:读,对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录信息的权限
w:写,对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录的权限
x:执行,对文件而言,具有执行文件的权限;对目录而言,具有进入目录的权限
-:表示不具备该项权限


在这里还有补充一下,基本权限后面的两个用户名,一个是文件所属者,另一个是文件所属组。

上图演示了文件所有者对文件的写入和读取,由于test.txt是文本文件,所以说不会有x,执行的权限。

上图演示了其他用户对所有者的文件写入和读取,但test.txt对于其他用户只有读的权限,并没有写的权限,因此跳出了permission denied权限拒绝这句话。

上图演示了其他用户要进入目录所有者的目录,但是其他用户的权限并没有写(w),因为无法在其中创建文件,但是可以进行查看目录的信息和进入目录。

3.文件访问权限的相关设置方法

a)chmod 功能:设置文件的权限
chmod 【参数】 权限 文件名
只有文件的拥有者和root才可以改变文件权限
①用户表示符+/-/=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者所组
o:其他用户
a:所有用户


上图演示了具体的用法,这个大家需要多加尝试就能理解。

②三位8进制数字


具体用法见上图,每三位为一个八进制数

b)chown
修改文件的拥有者
chown 用户名 文件名
c) chgrp
修改文件的所属组
chgrp group 文件名


具体操作见上图,这里唯一要提一下的是如何同时修改所属用户和所属组:chown lnb:lnb 文件名
这里额外介绍一个指令:file,辨识文件类型

4.默认权限

接下来要说的一个话题就是为什么我们创建的普通文件(不包括可执行,因为可执行有x),默认权限时从664开始的,为什么目录的默认权限是775开始的?
文件和目录都有起始权限,这是系统设定的,普通文件起始权限是666开始的(没有x),目录的起始权限是777(rwx)。系统为了更好地控制文件权限,系统会有默认的权限掩码。
unmask可以查看或修改文件掩码

超级用户默认掩码值是0022,普通用户默认为0002
权限掩码:在起始权限中,去掉在umask中出现的权限,不能影响其他任何权限
最终权限=起始权限&(~umask)
默认权限就等于最终权限

上图是目录的默认权限的推演过程

4.粘滞位

背景:在使用Linux的时候,未来可能会有一些共享目录,被所有的普通用户共享,用来保存普通用户产生的临时数据。
共享的目录通常都是root提供的

在上面的图片中可以看出其他用户可以删除文件所属者不属于他的文件,这就会导致问题,你所创的文件可以被我任意删除。
其实能够在特定目录下,创建或者删除文件由该目录的w权限决定。
设定粘滞位会让别人无法删除我的文件(除了超级管理员、该目录的所有者、该文件的所有者)
指令:chmod +t


chmod -t可以把粘滞位删除,恢复成原来的