【Linux】权限

🦄个人主页:修修修也

🎏所属专栏:Linux

⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位)


目录

📌Linux权限概念

📌Linux权限相关操作

🎏使用root创建普通用户

🎏使用su命令切换用户

📌Linux权限管理

🎏文件访问者的分类

🎏文件类型和访问权限

🎏文件权限值的表示方法

🅰️字符表示法

8️⃣8进制数值表示法

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

🕹️chmod指令

🕹️chown指令

🕹️chgrp指令

🕹️umask指令

🕹️file指令

🕹️sudo指令

📌目录的权限

🎏目录写权限与文件写权限的矛盾

🎏粘滞位

结语


📌Linux权限概念

        Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

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

  • 超级用户:可以在Linux系统下做任何事情,不受限制                                                    
  • 普通用户:在linux下做有限的事情。( 注: 超级用户的命令提示符是 " # "普通用户的命令提示符是 " $ ")

📌Linux权限相关操作

🎏使用root创建普通用户

        添加新的用户账户使用adduser命令,其语法如下:

adduser 选项 用户名

参数说明:

  • 选项:

    • -c comment 指定一段注释性描述。
    • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    • -g 用户组 指定用户所属的用户组。
    • -G 用户组,用户组 指定用户所属的附加组。
    • -s Shell文件 指定用户的登录Shell。
    • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  • 用户名:  指定新账号的登录名。

使用示例:

        如下图,我们使用root账户为系统添加一位普通用户zhangsan, 然后使用passwd为其设置密码 (注意,Linux中输入密码是不回显的,要注意适应):

        当系统提示"passwd: All authentication tokens updated successfully.即passwd:所有身份验证令牌都已成功更新。"后,我们就可以使用这个新建的用户身份及其密码登录了:

        其他相关指令拓展:

指令名称指令功能指令语法
adduser/useradd创建用户adduser 用户名
passwd设置用户密码passwd 用户名
groupadd创建用户组groupadd 用户组名
usermod修改用户账号设定由具体功能决定
userdel删除用户userdel 用户名

🎏使用su命令切换用户

命令

su 用户名

功能:切换用户。
使用示例:

        我们从root用户切换到普通用户user,使用 su user。(从root切换到普通用户不需要输入普通用户的密码)

        然后我们从普通用户zhangsan切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码, 输入正确密码后就可以切换为root用户.如下三种方式都可以从普通用户切换为root用户:


📌Linux权限管理

        首先我们要知道的是,Linux下一切皆文件,即无论是普通的文件,目录、字符设备、块设备、 套接字等在Linux中均是以文件被对待的.

🎏文件访问者的分类

        理解了上面那一点,我们再来看看文件访问者的分类:

  • 文件和文件目录的所有者:u——User
  • 文件和文件目录的所有者所在的组的用户:g——Group
  • 其它用户:o——Others

        画个图帮助大家理解:

        注意,这里千万不能和前面root和普通用户的概念搞混了,我们画图区分一下这两个概念:


🎏文件类型和访问权限

        我们在前面学习基本指令时曾经学学习过ls指令:

        可以看到,其中ls -l指令的作用是列出文件的详细信息,那么这些详细信息都包括什么?我们来一一探究一下:

        如下,我们在Linux_study目录下敲入ll(ls -l指令的缩写),此时目录下的所有文件及其信息就会显示出来了:

        我们先来解析一下这三条文件的各个位置的字符都代表文件的什么信息:

        下面我们详细解析一下各个字符都是什么含义:

第1位 文件类型:

  • d:文件夹
  • - :普通文件
  • l :软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

第2-10位 基本权限:

  • 读(r / 4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览查看该目录文件信息的权限
  • 写(w / 2):Write对文件而言,具有修改文件内容的权限;对目录来说具有创建删除移动目录内文件的权限
  • 执行(x / 1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • "—"表示不具有该项权限

🎏文件权限值的表示方法

🅰️字符表示法

Linux表示说明
r - -仅可读
- w -仅可写
- - x仅可执行
r w -可读可写

- w x

可写可执行
r - x可读可执行
r w x可读可写可执行
- - -无任何权限

8️⃣8进制数值表示法

权限符号r  -  --  w --  -  xr  w -r  -  x-  w xr w x-  -  -
二级制1 0 00 1 00 0 11 1 01 0 10 1 11 1 10 0 0
八进制42165370
说明仅可读仅可写仅可执行可读可写可读可执行可写可执行可读可写可执行无权限

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

🕹️chmod指令

格式:chmod [参数] 权限 文件名


功能:设置文件的访问权限
常用选项:

  • R -> 递归修改目录文件的权限

chmod命令权限值的两种方法:

1.chmod 用户表示符 + / - / =权限字符(注:权限字符即r,w,x)

用户表示符

含义操作符号含义
u拥有者+向权限范围增加权限代号所表示的权限
g拥有者所属组-向权限范围取消权限代号所表示的权限
o其他用户=向权限范围赋予权限代号所表示的权限
a所有用户

使用示例:

        我们将dir1的拥有者的r,w,x权限全部取消:

        我们给dir1的拥有者加上r,w权限:

        我们给study.txt的所有用户加上r,w,x权限:

2.chmod 三位8进制数字

        使用三位8进制数字来表示权限的原理如下图:

使用示例:

        我们将study.txt文件所有人的所有权限都取消:

        我们给study.txt文件拥有者和其所属组赋予读和写的权限,给其他用户赋予读的权限:


🕹️chown指令


功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
使用示例:

        我们将study.txt的拥有者从mfc改为zhangsan:


🕹️chgrp指令


功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
使用示例:

        我们将study.txt的所属组从mfc改为zhangsan:


🕹️umask指令


功能:查看或修改文件掩码。
格式:umask 权限值
说明:新建文件夹默认权限 = 0666(rw-,rw-,rw-,), 新建目录默认权限 = 0777(rwx,rwx,rwx)
        但实际上我们所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask。将现有的存取权限减去权限掩码后,即可产生建立文件时预设限。超级用户默认掩码值为0022,普通用户默认为0002。

        这个地方可能第一次接触的朋友不太理解,画图帮助大家理解一下:

        先举例说明一下他们三个的关系:

        再画图帮助大家理解其中的逻辑关系:

        最后演示一遍这其中的数学演算过程:


使用示例:

        查看当前umask值(上图为root账号,下图为普通用户):

        我们按照上面的情况先分别在两种用户下创建一个新的目录和文件,看看他们的权限(上图为root账号,下图为普通用户):

        我们分别将root的umask值改为123,将普通用户的umask改为222,再创建目录和文件查看他们的权限(上图为root账号,下图为普通用户):


🕹️file指令

功能说明:辨识文件类型
语法:file [选项] 文件或目录...
常用选项:

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容。

        注意,在Linux系统中并不是依靠文件的后缀来判断文件类型的,而是通过分析文件内部结构来判断文件类型,这样是比较可靠的方式.

使用示例:


🕹️sudo指令

功能说明: sudo 命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

使用权限:在 /etc/sudoers 中有出现的使用者。

语法: sudo [选项] 用户名 命令


📌目录的权限

        我们上面介绍过,目录的r,w,x三种权限分别是:

  • r可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • w可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
  • x可执行权限: 如果目录没有可执行权限, 则无法cd(进入)到目录中

🎏目录写权限与文件写权限的矛盾

        现在我们构造一个场景,假设现在用户mfc和zhangsan在同一个共享目录Linux_study下创作文件,该目录对所有人的权限都是可读可写可执行:

        这时候,mfc在Linux_study目录中创建了一个study.txt文件,这个文件对于zhangsan的权限是只可读:

        创建好文件后,mfc向其中输入了一些内容:

        zhangsan这时候查看了这个文件,是可以查看的:

        zhangsan也想向文件中写入内容,但是显示他没有写入的权限:

        zhangsan气不过,直接删除了study.txt文件:

        然后他竟然成功删除了mfc的文件:

        复盘整个事件,问题就在于zhangsan明明没有study.txt文件的写权限,但是因为他有Linux_study目录的写权限,因此就可以直接将别人的文件删除掉了.但是如果不给zhangsan目录的写权限,那他自己也没法在目录里创建文件,如果给的话,又怕他把别人的文件删掉了.

        为了解决这个矛盾的问题,Linux引入了粘滞位的概念.

🎏粘滞位

粘滞位的概念:

        当一个目录被设置为"粘滞位",则该目录下的文件只能

  • 超级管理员(root)删除
  • 该目录的所有者(User)删除
  • 该文件的所有者(User)删除

粘滞位的设置方法:

格式: chmod +t 文件名

粘滞位的特性展示:

        首先给Linux_study目录设置粘滞位:

        然后我们让mfc在Linux_study目录下创建一个文件, 并向其中输入一些内容:

        然后再让张三试着查看,写入,删除操作:

        可以看到,设有粘滞位的目录里面的文件确实不会再被非(root和user)的用户删除了.

小tips:

  • 目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档

结语

希望这篇关于 Linux权限 的博客能对大家有所帮助,欢迎大佬们留言或私信与我交流.

学海漫浩浩,我亦苦作舟!关注我,大家一起学习,一起进步!

相关文章推荐

【Linux】基本指令(下)

【Linux】基本指令(中)

【Linux】基本指令(上)

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修修修也

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值