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
Linux系统文件默认权限
Linux系统文件默认权限
|
25天前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
38 1
linux特殊权限!!
|
2月前
|
运维 监控 安全
Linux_权限理解(详细PLUS)
【10月更文挑战第3天】本文介绍了Linux系统中的权限管理基础,包括文件系统对象与权限关联、权限的继承性、字符与数字表示法的解读,以及用户、组与权限的动态交互。详细解析了`chmod`命令的高级用法和权限修改的风险,探讨了SUID、SGID和Sticky Bit等特殊权限的作用机制,并提出了基于角色的权限分配和定期权限审计的最佳实践。
70 11
|
2月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
2月前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
2月前
|
网络协议 Linux 网络安全
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
|
2月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
28 0
|
4月前
|
存储 安全 Linux
Linux权限之谜:一步步教你如何解锁sudo权限并窥视/etc/shadow的神秘面纱!
【8月更文挑战第22天】在Linux中,`sudo`命令让授权用户能以其他用户(通常是root)身份运行命令。关键的安全文件`/etc/shadow`存储用户密码哈希,仅root可读。要使用`sudo`,需确保账户被列入`sudoers`文件中。系统管理员可通过`visudo`编辑此文件来赋予用户权限,例如添加`username ALL=(ALL) NOPASSWD: ALL`行。获得`sudo`权限后,可运行`sudo cat /etc/shadow`查看文件内容,但需谨慎操作以免影响系统安全。遵循最小权限原则,确保安全使用这些强大工具。
105 2
|
4月前
|
Linux 数据安全/隐私保护
在Linux中,什么是文件权限?什么是rwx权限模型?
在Linux中,什么是文件权限?什么是rwx权限模型?
|
4月前
|
Unix Linux Shell
Linux 权限简介
Linux 权限简介
47 1