Linux权限的基本理解

 

一:🚩Linux中的用户

1.1🥦用户的分类

🌟在Linux中用户可以被分为两种用户:

  • 超级用户(root):可以在Linux系统中做各种事情而不被约束
  • 普通用户:只能做有限的事情被权限约束

在实际操作时超级用户的命令提示符为'#',普通用户的命令提示符为'$',可以根据命令提示符来区分当前的用户

1.2:🥦用户的切换

如何在Linux系统中切换用户?

        1.普通用户切换root用户

       方法一:  命令: su

cadaf9450933ddff304fc83205d7e436.png

        方法二: 命令: su -

83aab87718d577067616ad68ef88b7ec.png

[注意]:

两个命令的作用都是将用户变为root用户,但是su是直接把用户变为root,当前路径不会发生改变,而su - 有一条login加载的信息,相当于输入密码重新登陆,会把当前路径修改为/root

        2.root用户变为普通用户

        直接 su+用户名即可,不需要输入密码

二:🚩什么是权限

        权限就是通过一部分条件,可以拦截住一部分人,给另一部分人权力访问资源,并且权限不仅和人有关,还和事务的属性有关,比如我们不能在视频软件上打游戏,所以权限和人与事务的属性有关.

2.1 🥦文件类型及其权限管理

⛲文件类型:

在windows系统中,区分文件类型依靠的是文件的后缀名

在Linux系统中,文件不以后缀名区分,当我们用 ll指令查看文件详细信息时,第一个字符就代表文件的类型

5cbb3e572a262961755b7c61b92b8793.png

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

⛲文件权限:

在Linux系统中,访问文件存在三种角色:

  • 拥有者
  • 所属组
  • 其他

f74997341bd338f6fd135a11315ad38d.png

在文件属性最前面一共有十个字符,第一个为文件的类型,而后九个三三为一组,分别对应文件拥有者、所属组、其他人的权限

第一个字符:是否具有读权限,如果是就是r,否就为-

第二个字符:是否具有写权限,如果是就是w,否就为-

第三个字符:是否具有可执行权限,如果是就是x,否就为-

了解了上述信息就可以对文件的权限进行管理了


💬如何修改文件的权限?

目前test.txt文件的权限如图所示

f0b52dfce3bbee9b1145509210d4a57c.png

方法一: 给角色加减权限(直接)

chmod指令

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项: r - 递归修改目录文件的权限

ps.文件的权限只能由拥有者和root修改

例如: 去掉拥有者的读取权限

e0a9770796ba852636a0ecd279fd5622.png

例如:去掉拥有者的写权限和所属组的读权限

81355aabd46f3afb28eecccfb033ffdf.png
补充:如果要同时去掉或者增加三个角色的某一权限或多个权限可以使用 a(代表all指所有角色)

186b89920fdebfd0708892af33c1678f.png

除了上述方法还可以使用三位八进制数字的方法:

f0b52dfce3bbee9b1145509210d4a57c.png

三个字符表示一个角色的权限,我们将有权限表示为1,无权限表示为0,例如rw-就为110用八进制表示为6, rwx就为111用八进制表示就为7

例如:取消所有角色的所有权限

6ae0737cfe86667c4642222390faae4d.png

例如:增加拥有者和所属组的读取权限,增加其他人的读权限

e59942c11bc151bf1323202b12dcb050.png

方法二:改变角色(间接)

chown指令

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

chgrp指令

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

[注意]:只有root用户才能修改文件的拥有者和所属组

fc26c9566755f78d456db705bdf71ab5.png

如图所示,当前test.txt文件的拥有者和所属组都为zyq

例如: 原来zyq有读和写这个文件的权限,将文件的拥有者和所属组都改为root,此时zyq在这个文件就相当于other,只有r权限了,间接修改了用户的权限

a39fe1238b1da471624d978cae504928.png

也可以同时修改文件的拥有者和所属组(用冒号相隔)

e619b76e4a256ab746ebc53fe49bf576.png

2.2 🥦目录权限

⛲目录权限理解

可读权限(r): 用户是否可以查看目录的内容

可写权限(w):用户是否有在指定目录下有创建、修改、删除文件的权限

可执行权限(x):若无可执行权限,用户无法进入目录

我们操作的用户为dir目录的拥有者

当去掉拥有者对目录的读权限时,我们不能看目录的内容,但是可以进入到目录内

87476018024961fa3765f3600c3473f9.png

当去掉拥有者对目录的写权限,可以进入到目录内但是不能在目录里新建文件

7b5ee5a39e8791af88b42d7b70582fd7.png

当去掉拥有者对目录的可执行权限,进不去这个目录

927245ebf703c9bff6908a09426a8fe8.png

⛲umask

当创建目录和文件时,他们好像有自己默认的权限

3973b01ccea146d234055f7bfc12c0b3.png

其实,新建文件夹默认权限=0666 ,新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。
umask是Linux中默认的权限掩码,凡是在umask中出现的权限,在文件中都要被过滤掉。
证明:
我们先查看当前环境下的umask值为多少
5ef1bc5fb2f15003ba65641bd1df2b2e.png
新建目录默认权限为0777,即111 111 111
umask为002,即000 000 010
先将umask按位取反:111 111 101
再按位与111 111 111
得 111 111 101 即 rwxrwxr-x 与上述结果相同

⛲目录中文件的删除问题

当我们以普通用户在一个指定目录下创建一个普通文件,root用户不是拥有者和所属组此时相当于other的角色,他此时没有写的权限,但是他却可以删掉普通用户创建的文件,这不难理解,因为root是超级用户

fb0373e92135ff851fa084899bc7bcc7.png

反过来,我们用root用户在指定目录下创建一个文件,普通用户不是拥有者和所属组此时相当于other的角色,没有写的权限,但是普通用户也能删掉root用户创建的文件,这是为什么呢?

f5ae9f88680e41386b246db537fb0d65.png

在目录下一个用户删除目标文件,和目标文件没有关系,只要该用户对该目录有w权限就可以删除该目录下的任何文件.

对于这个目录来说,普通用户此时相当于other但是其对此目录有写的权限,所以可以删除目录里的文件,与目录里的文件无关

d3ed0285c117d14093ee743e01c1282a.png

⛲粘滞位

引例:

        为了避免用户之间随意互删对方文件,LInux系统在创建用户时,只会放开自己的权限,这样除了自己和root用户别人都进不到自己的目录下

那么如果想创建一个多用户共享的文件应该创建到哪里呢?

首先肯定不能创建到用户的目录下,所以Linux为了解决这一问题,在根目录下有一个tmp目录,专门可以创建共享文件,(至于为什么tmp目录对other的权限第三位为t后面在讲),而为了用户之间的公平,共享文件一般由root用户创建,这样所有用户都是other,拥有的权限是一致的

9f8e836547f3ef17b0d69c2ec06f8bea.png

因为tmp专门用来创建多用户文件,所以用户对这个目录一般都有读写权限,只要用户具有目录的写权限,就可以随意删除目录中的文件,那如果出现用户随意删除别人的文件怎么解决呢?

粘滞位就可以解决这个问题

粘滞位是给目录设置的一个权限位,具有x的意义,同时也进一步对目录权限进一步设定,当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

这样就算一个用户具有指定目录的写权限,他就只能删除该目录下自己创建的文件,而不能随意删除他人的文件了

 

 

评论 37
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张章包_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值