【Linux】一文带你彻底搞懂权限

举报
修修修也 发表于 2024/10/25 15:36:08 2024/10/25
【摘要】 🦄个人主页:修修修也 🎏所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位)​编辑目录📌 Linux 权 限概念 📌 Linux 权 限相关操作 🎏 使用root 创 建普通用 户 🎏 使用su命令切 换 用 户 📌 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 选项 用户名

参数说明:

选项:

o -c comment 指定一段注性描述。

o -d 目 指定用主目,如果此目不存在,使用-m选项,可以建主目

o -g 用户组 指定用所属的用户组

o -G 用户组,用户组 指定用所属的附加

o -s Shell文件 指定用的登Shell。

o -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切换到普通用户不需要普通用户的密码)

编辑

        然后我们从普通用zhangsanroot用户则使用 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 -

-  -  x

r  w -

r  -  x

-  w x

r w x

-  -  -

1 0 0

0 1 0

0 0 1

1 1 0

1 0 1

0 1 1

1 1 1

0 0 0

4

2

1

6

5

3

7

0

仅可读

仅可写

仅可执行

可读可写

可读可执行

可写可执行

可读可写可执行

无权限


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

🕹️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 [选项] 用户名 命令

        注意, 当使用sudo的用户不是root白名单用户时, 是无权执行sudo的, 下面我们学习一下如何将用户账户添加到root白名单中:

        首先我们登录root账号, 在根目录下用Vim打开[ /etc/sudoers ]文件:

编辑

        然后, 按下[ 100 ] + [ Shift ] + [ g ], 使光标定位到100行:

编辑

        我们按下[ y ] + [ y ]键将这行复制下来, 然后按[ p ]将这行粘贴到文件中:

编辑

        粘贴好后我们按[ i ]键进入Vim的插入模式,然后将root改为要添加的白名单用户名:

编辑

        改好之后我们按[ Esc ]键退出插入模式,再按[ Shift ] + [ ; ]进入底行模式,在底行模式输入" wq! ":

编辑

        按下回车,成功保存修改并退出Vim, 然后我们进行下面的操作:

编辑

        输入mfc用户密码后,就可以看到成功以root权限创建了文件test.txt :

编辑


📌

        我们上面介绍过,目录的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】基本指令(上)


​编辑

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。