🔥博客主页:小王又困了
📚系列专栏:Linux
🌟人之为学,不日近则日退
❤️感谢大家点赞👍收藏⭐评论✍️
目录
一、Linux中的用户
📒1.1Linux用户分类
📒1.2用户转换
📒1.3指令提权
二、Linux权限管理
📒2.1权限的概念
📒2.2Linux中的角色
📒2.3文件权限
📒2.4权限修改
💌2.4.1chmod
💌2.4.2chown
💌2.4.3chgrp
📒2.5目录权限
📒2.6粘滞位
🗒️前言:
在上一期中我们学习了Linux常见的指令,那我们为什么可以使用这些指令呢?这就要讲到我们的权限。权限决定了一个人可以干什么和不可以干什么,它是一种限制,在日生活中大家也都受到过权限的约束,今天就让我们认识Linux中的权限管理。
一、Linux中的用户
📒1.1Linux用户分类
Linux下有两种用户:超级用户(root)、普通用户
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
📒1.2用户转换
命令:su [用户名]
功能:切换用户
用户切换可分为:
- 普通用户切换成超级用户
- 超级用户切换成普通用户
- 普通用户A切换成普通用户B
- 普通用户切换成超级用户
如上图,当前我是一个普通用户,用户名是wtl,此时想要切换成超级用户,直接输入su指令然后点击回车,提示我们要输入密码,这里应该输入root用户的密码,输入正确的密码后就可以成功地切换成root用户。
注意:上述操作仅仅只是对用户身份进行了切换,不改变当前所处路径,如上图,身份切换前后都处在wtl用户的家目录。此时如果想切回wtl用户,只需要输入 exit 或者 Ctrl+d。
从一个普通用户切换成超级用户,除了上面的su指令外,还可以用su -指令。它们的区别是:前者仅是对身份的切换,不改变当前所处路径,而后者则是以重新登录的方式切换成超级用户,此时不仅完成了身份切换,并且当前所处的路径也变成了root用户的家目录。
- 超级用户切换成普通用户
在root身份下,直接输入su [用户名]指令,就可以随意切换成任意一个普通用户,无需输入任何密码。切换后路径不变。
- 普通用户A切换成普通用户B
从普通用户A切换的普通用户B需要输入B用户的密码。
📒1.3指令提权
当我们不想把自己变成root用户,但我们还想让普通用户以root的权限,执行一条命令,我们可以使用sudo指令,对后面跟的指令进行提权,以超级用户的身份去执行该条指令。
我们只要输入自己的密码,就可以以超级用户的身份去执行该条指令,但前提是我们用户的用户名在sudoers的配置文件中,这样才允许用户执行sudo。想要添加进白名单,也要通过root用户进行操作。
二、Linux权限管理
📒2.1权限的概念
在计算机中,权限管理一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。权限是限制人的,而且对应的操作对象,要有满足人的需求的属性。例如:张三可以在爱奇艺看付费电影,是因为他是VIP,而不是因为他是张三,而且我们也不可以在爱奇艺上做题。所以:
- 权限认证的是身份(角色)
- 权限也和属性有关
在Linux环境中,我们所有的操作都是针对文件进行的,因此我们要先知道文件具备哪些属性,我们可以对文件做些什么。
📒2.2Linux中的角色
前面提到,权限和身份(角色)有关,Linux中分以下三种角色:
- 拥有者(文件的创建人)
- 所属组(为了实现组内协同)
- 其他人
如上图,红色框起来的就表示当前文件的拥有者,蓝色框起来的就表示当前文件的所属组。其他人并没有直接出现在上图所展现的信息中,当一个用户操作一个文件的时候,该文件会先看该用户是不是我的拥有者,若不是,再看该用户是不是我的所属组,若都不是,那他就是其他人。
📒2.3文件权限
我们可以通过ls - l指令,查看当前目录下所有文件的属性。
如上图,其中紫色框起来字符表示文件类型,后面的九个字符,三三一组,依次为:文件拥有者的权限、文件所属组的权限、其他人的权限。其中r,w,x都代表文件属性。
🎀文件类型
Linux系统中,文件名后缀没有直接意义,系统不通过后缀来区分文件类型,而是通过字符来区分文件类型。但是在Linux系统上运行的软件会通过后缀来区分文件类型。Linux系统中主要有以下几种文件类型:
- d :文件夹(文本文件、源代码、可执行程序、库)
- -:普通文件
- l :软链接(类似Windows的快捷方式)
- b :块设备文件(例如硬盘、光驱等)
- p :管道文件(用来进行通信)
- c :字符设备文件(例如屏幕等串口设备)
- s :套接口文件
🎀基本权限
Linux系统中主要有以下几种文件属性:
- r :读权限,对于普通文件而言,具有读取文件内容的权限;对目录文件来说,具有浏览目录信息的权限。
- w :写权限,对于普通文件而言,具有修改文件内容的权限;对目录文件来说,具有删除、移动目录文件的权限。
- x :可执行权限,对于普通文件而言,具有执行文件的权限;对目录文件来说,具有进入目录的权限。
- - :表示不具备该权限。
注意:每组权限都是由三个字符组成,这三个位置所表示的含义是确定的,即第一个位置只能表示是否有读权限;第二个位置表示是否有写权限;第三个位置表示是否有可执行权限。
如图:wtl用户也是所属组,也具有写的权限,可是为什么无法执行呢?
这是因为一次只能匹配一个角色,当 wtl 用户执行命令时,系统匹配到 wtl 是test1,txt文件的拥有者,而拥有者不具备写权限,所以 wtl 用户无法写入。
📒2.4权限修改
只有文件的拥有者和超级用户才可以修改权限。
💌2.4.1chmod
语法:chmod [参数] 权限 文件名
功能:设置文件的访问权限
常用选项:
- R :递归修改目录文件的权限
🎀方法一:用户表示符、+ - =、权限字符
- + :向权限范围增加权限代号所表示的权限
- - :向权限范围取消权限代号所表示的权限
- = :向权限范围赋予权限代号所表示的权限
- u :拥有者
- g :所属组
- o :其他人
- a :所有用户(拥有者、所属组、其他人)
示例:
- chmod u+x test1.txt:表示给拥有者添加test.txt文件的执行权限。
- chmod a-rwx test.txt:表示取消所有用户对test.txt文件的读、写、可执行权限。
🎀方法二:三位8进制数字
对于一组权限中的三个权限位,可以用1表示具备该权限,用0表示不具备该权限。例如:111表示当前角色拥有读、写、可执行权限。这三个2进制数字又可以用一个8进制数字来表示,111对应的8进制是7。这样每种角色的权限可以用一个8进制数字表示,那三个角色的权限就可以用三个8进制数字来表示。
示例:
- chmod 777 test.txt:表示给所有用户设置对于test.txt文件的所有权限。
💌2.4.2chown
语法:chown [参数] 用户名 文件名
功能:修改文件的拥有者
我们将一个东西交给别人,是需要别人同意的,修改文件的拥有者也是同样的道理,这里我们就要借用root强制修改。
示例:
- chown wyo test1.txt:表示把test.txt文件的拥有者改成wyo
💌2.4.3chgrp
语法:chgrp [参数] 用户组名 文件名
功能:修改文件或目录的所属组
常用选项:
- -R:递归修改文件或目录的所属组
示例:
- chgrp wyo test1.txt:表示把test.txt文件的所属组改成wyo
- chown wtl:wyo test1.txt:表示把test.txt文件的拥有者改成wtl,把所属组改成wyo
📒2.5目录权限
- 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
- 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
- 可执行权限:如果目录没有可执行权限,则用户无法进入对应的目录
📒2.6粘滞位
我们创建一个用户,用户家目录的权限是700,其他用户无法进入我的家目录,也不能查看我的家目录下的文件,更不能对我的家目录中的文件进行修改、删除,也不能在我的家目录中创建文件。
但有的时候,我们多个用户想进行文件数据的共享。由于家目录的特性,导致我们所建立的共享目录在用户的家目录下无法实现。那建立在哪里合适呢?Linux提供了tmp目录,在这个目录下就可以实现多个用户想进行文件数据的共享。
我们可以看到tmp目录的最后一个权限是t,而不是x。那它有怎样的意义呢?因为其他人有w权限,所以在tmp目录中创建的文件可以随便删除。所以给other新增了一个权限t,为粘滞位。它具有x的意义,还会对目录权限进行特殊的设定,该目录里的文件,只有root或文件的拥有者可以删除。
粘滞位总结:
- 给目录设置,一般是共享目录
- 只允许文件的拥有者或者root能删除这个文件,其他用户一概不允许
t
是一种特殊的x权限
本次的内容到这里就结束啦。希望大家阅读完可以有所收获,同时也感谢各位读者三连支持。文章有问题可以在评论区留言,博主一定认真认真修改,以后写出更好的文章。你们的支持就是博主最大的动力。