Linux权限

简介: Linux权限

一、Linux下用户的分类


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


1、超级用户:几乎可以在Linux系统下做任何的事情,不受权限的控制。


2、普通用户(我们自己新建的用户):在Linux下做有限的事情。


3、超级用户的命令提示符是#,普通用户的命令提示符是$。




命令:su [用户名]


功能:切换用户。


例如:想要从root用户切换到普通用户,则使用 su 普通用户名。 要从普通用户切换到root用户则使用 su/su -,此时系统会提示输入root用户的口令。


二、Linux权限


2.1 什么叫做权限?


简单来说,权限就是说一件事是否允许被你做。


1、权限验证的是你的身份。比如说你用腾讯视频看电影,你的身份是普通用户,但是你想看的电影需要VIP身份才能观看,系统验证你的身份是普通用户,就禁止你看这部电影。如果你是VIP,那么就允许你看这部电影。


2、权限也跟事物的属性(文件的属性:是否可读,是否可写,是否可执行)有关,即事物的属性也能决定这件事是否允许被你做。例如:一个本子,它是你的,那么你可以用它来写东西,这个是验证的是你的身份,本子属于你,所以你能写,但是尽管这个本子是你的,但是你说你要拿这个本子咬两口,把它像面包一样吃掉,这样显然是不对的,因为这个本子本身不具有被吃掉的属性,所以它的属性也决定你是否能够做这件事。


2.2 Linux下的用户身份


Linux系统下用户具有三种身份,分别是拥有者(user),所属组(group),其他人(other)。

那么这三个身份和前面所说的超级用户(root)和普通用户有什么关系呢?简单来说就是root可以扮演拥有者,可以扮演所属组,也可以扮演其他人这三个角色的任意一个,普通用户同样如此,换句话说前面三个是一种广义的身份,而root或者普通用户是具体的一个用户。


2.3 文件类型和访问权限



1、文件的类型:


d:文件夹


-:普通文件(源文件,可执行文件)


s:套接口文件


l:软链接(类似Windows的快捷方式)


p:管道文件(用来进行通信)


c:字符设备文件(例如屏幕,键盘等串口设备)


b:块设备文件(例如硬盘、光驱、磁盘等)


2、基本权限:


(1)、读(read):对于普通文件来说,r代表具有读取文件内容的权限。对于目录来说,r代表具有浏览给目录信息的权限。


(2)、写(write):对于普通文件来说,w代表具有写入(修改,删除)该文件内容的权限;对于目录来说,w代表具有在给目录下创建文件,删除文件,移动文件的权限。


(3)、可执行(execute):对于普通文件来说,x代表具有执行该文件的权限;对于目录来说,x代表具有进入该目录的权限。


(4)、“-”代表不具有该项权限。


2.4 如何修改权限?


方法一:


chmod u/g/o±某某权限 文件名。


比如要给test.txt文件的拥有者加上可执行权限:


指令:chmod u+x test.txt


(u是user拥有者,g是group所属组,o是other其他人)


再比如要给test.txt文件其他人去掉写权限:


指令:chmod o-w test.txt


给test.txt的所有身份的用户都加上写(w)权限:


指令:chmod a+w test.txt


其他的情况也以此类推即可。


方法二:


除了上面这种方法能够修改权限之外还有另外一种方法,通过观察可以知道,无论是读®,写®,还是可执行(x)权限,都是要么就有该权限,要么就没有该权限,没有就用“-”表示,这样的情况在计算机领域我们很容易就能想到二进制序列,要么是1,要么是0,所以另一种修改权限的方法就是以八进制的形式设置权限,因为每一个用户都有三种权限,读写可执行,三个比特位就是八进制,所以毫无疑问三个八进制数字就能准确表述拥有者,所属组,还有其他人的权限。


例如要给test.txt设置所有人都是可读可写,但是不可执行,可读可写那对于拥有者而言第一个比特位是1代表可读,第二个比特位是1代表可写,第三个比特位是0代表不可执行,那就是110,转换成八进制数就是6,因为所属组和其他人也是一样的权限,所以我们应该设置成666.


即指令为:chmod 666 test.txt




下面我们来看看当一个用户做某件事是没有权限会出现什么现象:


我现在是cmj这个用户。







下面有一个问题:假如现在有一个目录文件,我要进去这个目录文件需要拥有什么权限呢?是读权限,是写权限,还是可执行权限呢?


读®权限?



写(w)权限?



可执行权限?



由上述的验证可知,可执行权限才是决定用户能否进入该目录的因素,而不是读权限和写权限。


当用户同时是拥有者和所属组时,拥有者没有读权限,所属组有读权限,那么该用户是否具有读权限?



2.5 起始权限问题



因为有权限掩码umask,所以我们可以按照需求修改umask,从而控制文件的起始权限了。


最终权限=起始权限 & (~umask)


2.6 目录文件的权限+粘滞位


可执行权限: 如果用户没有该目录的可执行权限, 则无法cd到目录中。


可读权限: 如果用户没有该目录的可读权限, 则无法用ls等命令查看目录中的文件内容。


可写权限: 如果用户没有该目录的可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件,移动文件。


普通用户自己的家目录权限是700,即除了拥有者自己,其他用户(root除外)一律不能进入这个目录。



那有时候我们需要进行多用户的文件数据共享该怎么办?这好说,创建一个共享目录,然后不同的用户就可以在该目录下创建自己的文件,可以写入各种数据,与别人共享。想要给别人看的就设置一下其他用户的权限就行了。


但是我们知道,在这个共享目录下能否创建文件,删除文件并不是由文件本身的权限决定的,而是由这个共享目录的权限决定的。





为了避免上述这种“得不到就毁掉”的行为,有人提出的方案一是既然目录的写(w)权限决定他是否能够删除目录下的文件,那么我们把共享目录的写权限去掉不就好了吗?但是你别忘了,你创建文件也是需要写权限的,如果把写权限去掉,那么用户也就无法在这个目录下创建文件了,那么这个共享目录的共享体现在哪里?所以去掉写权限显然是不能够很好地解决这个互删的问题的。后来就出现了粘滞位这个东西。


粘滞位是一种特殊的可执行权限,就是你可以进入该共享目录下创建文件并写入内容,和别人达到共享的目的,但是用户不能删除别人的文件,这个粘滞位就能很好地解决了用户互删文件的问题。


用法:chmod o+t tmp


一般都是给other加上t权限,因为共享目录的拥有者一般都是root。



当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由超级用户root或者文件的拥有者可以删除。


2.7 如何更改文件的拥有者或者所属组?


想要更改文件的拥有者和所属组只能是root执行,因为普通用户把文件给别人需要别人的同意,但是root并不受权限的控制,root是超级用户,root说给你就给你,你不想要也要拿着。


修改文件的拥有者:


指令:chown 新拥有者 文件名


修改文件的所属组:


指令:chgrp 新所属组 文件名



三、关于权限的总结


再一次说明:


目录的可执行权限是决定你能否进入该目录的因素。


如果没有可执行权限(x),则无法对目录执行任何命令,甚至无法用cd进入这个目录,千万记得不是拥有可读权限就能进去这个目录的(很容易出错)。


而如果目录具有x权限,但没有r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在该目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。


相关文章
|
2天前
|
Linux Shell 开发工具
Shell的运行原理以及Linux当中的权限问题
Shell的运行原理以及Linux当中的权限问题
35 0
|
2天前
|
安全 Linux 数据安全/隐私保护
Linux权限详解
Linux权限详解
|
2天前
|
存储 安全 前端开发
《Linux 简易速速上手小册》第3章: 文件系统与权限(2024 最新版)
《Linux 简易速速上手小册》第3章: 文件系统与权限(2024 最新版)
43 1
|
2天前
|
Linux
【Linux】3. 基本权限与文件指令
【Linux】3. 基本权限与文件指令
27 2
|
2天前
|
Linux
linux 权限和Acl权限
linux 权限和Acl权限
17 0
|
2天前
|
Linux
如何在 Linux 中递归更改文件的权限?
【5月更文挑战第10天】
19 3
|
2天前
|
算法 Linux 数据安全/隐私保护
Linux:权限
Linux:权限
14 0
|
2天前
|
Linux 数据安全/隐私保护 Windows
【Linux】权限 !
关于Linux的权限问题,可以理解为不同级别的工作者,分别拥有不同的能力来管理文件。
21 5
|
2天前
|
Linux 开发工具 数据安全/隐私保护
深入探索Linux:ACL权限、特殊位与隐藏属性的奥秘
深入探索Linux:ACL权限、特殊位与隐藏属性的奥秘
|
2天前
|
存储 安全 Linux
从基础到高级:Linux用户与用户组权限设置详解
从基础到高级:Linux用户与用户组权限设置详解