Linux权限学习

权限学习

1. shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel) “ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度, Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,就是命令行解释器,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。 如果用户进行非法操作,shell就可以把这些非法请求拦截下来,也是对操作系统的一种保护

我们centos 7常用的命令行解释器(shell),叫做bash,它是一个可执行的外壳程序。

shell是所有外壳程序的一种统称,而bash是一款具体的外壳程序。

2. Linux权限的概念

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

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

命令: su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

whoami
//Yuucho
切换为root建议用:su -
//Password:
whoami
//root
logout
whoami
//Yuucho

在root用户下,可以直接转换到任意一个用户,无需密码。

3. Linux权限管理

Linux系统中不是以文件后缀区分文件类型的,而是通过ll显示的第一个字符区分文件类型的!

image-20220819183314736

-:普通文件,文本,源代码,可执行程序,第三方静态库等
d:目录文件
l:链接文件
p:管道文件
b:块设备文件,磁盘
c:字符设备文件

注意:在gcc下文件要按照严格的后缀区分,因为gcc并不是Linux操作系统,而是Linux使用的一个编译器软件。

3.1文件访问者的分类(人)

生活中什么是权限?

  1. 约束人的(对人进行分类)
  2. 需要对应的事物具有特定的属性

Linux中,对文件的权限:

  1. 这个文件谁能"访问",这个文件谁不能"访问"
  2. 对应的文件应该具备的某种属性:r、w、执行权限x

权限=人+事物属性,所以权限的概念以及操作都是围绕着人和文件属性展开的!

Linux中,人分为3类:

  • 文件和文件目录的所有者:user
  • 文件和文件目录的所有者所在的组的用户:group
  • 其它用户:other

root和普通用户与Linux中3的类人并不冲突,反而是相互补充的。也就是说root或者普通用户都可以是3类人中的任意一种。

为什么Linux中会有所属组?给自己所在团队成员给予文件访问权限。

image-20220820175300992

3.2.文件类型和访问权限(事物属性)

image-20220820175402001

注:“—”表示不具有该项权限

3.3 文件权限值的表示方法

  1. 字符表示方法

image-20220820175620506

  1. 8进制数值表示方法

image-20220820175657144

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

3.4.1 改文件权限

  1. 用户表示符+/-=权限字符
去掉myfile.txt文件所有者的读权限:chmod u-r myfile.txt
去掉myfile.txt文件所属组的读权限:chmod g-r myfile.txt
去掉myfile.txt文件其他人的读权限:chmod o-r myfile.txt
加上myfile.txt文件所有者的读和执行权限:chmod u+rx myfile.txt
......
还可以任意组合:chmod u-r,o-r,g-r myfile.txt
chmod a=r myfile.txt    所有人都拥有读权限,a代表all
......

注:root虽然是other,但是它无视这些权限的规则,照样读写执行。

  1. 八进制方案:这里八进制理解上是二进制,1代表有,0代表无。每一个8进制数字代表一组权限。
chmod 777 myfile.txt   所有人拥有所有权限

3.4.2 改人

chown root myfile.txt  将root改为文件所有者

但是上述操作并不能完成,因为当你给一个人东西时还要征求对方是否同意。且文件的创建者和文件的拥有者可能并不是同一个人。

我们可以通过提升权限:以root的身份去运行程序chown。

sudo chown root myfile.txt

也可以转换为root用户进行改人操作。

su -
//password:
chgrp zs myfile.txt  //将张三改为文件的所属组
sudo chown zs:zs myfile.txt    //将张三改为文件的所有者和所属组

大家如果执行sudo报错,可能是因为没有配置信任列表文件。

4. 目录的权限(重要)

如果我想进入一个目录,需要什么权限?

需要目录的x权限

image-20220820185204980

如果目录只没有r权限,允许进入,允许在该目录下创建(写入)一个文件,不允许查看文件列表。

如果目录只没有w权限,允许进入,允许在该目录下查看文件,但是不允许创建文件。

如果同时没有rw权限,允许进入,但是不允许创建和查看目录下的文件列表(注意:不是文件内容!!文件的内容是否可以查看,由文件自己的权限决定!!)

4.1 如何理解?

Linux下一切皆文件,目录也是文件,文件 = 内容 + 属性

如果一个目录没有r权限就无法查看文件列表,但是我知道在此目录下有一个file1.txt文件,我可以查看文件的内容吗?我在centos 7 测试发现是可以的。

image-20220820192212768

你想访问文件,前提是你得先找到它。Linux中我们是通过路径找到这个文件的。

这里能访问的原因可能是文件名和id之间是有对应的映射关系的,有可能被系统缓存了。

4.2 目录和普通文件的默认权限

为什么我们创建目录的默认权限是775?为什么我们创建的普通文件的默认权限是664?(不同系统可能存在差异)

首先我们要知道目录的起始权限是777,普通文件的起始权限是666。

其次我们得认识一下权限掩码:

umask
//0002 第一个0表示八进制,我们只关心后3位

凡是在权限掩码中出现的权限都不应该在最终权限中出现!

image-20220820194057221

怎么证明是否是减法?

我们可以更改权限掩码来多看几个例子:

umask 000          //将权限掩码设置为0000

当我们把权限掩码设置为0003时,文件的最终权限应该是663,但是我们发现实际上文件的权限是664。

image-20220821130439239

最终权限 = 默认权限 & (~umask)

5. 粘滞位

5.1什么是粘滞位?

有时候我们需要一个目录,这个目录可以让所有人删除或创建临时文件,我们Linux系统当中就有这样的目录:tmp。tmp的拥有者和所属组是root,其他人允许以other身份在该目录下进行文件的创建,读取,删除,修改等。

在一个共享目录下,你的文件不让我写,不让我读,但防不住我删除!

如果我还想在共享目录下,形成临时文件。但是,不允许除了我之外的人删除!

方法是给共享的<目录>加上粘滞位!

假设有一个共享目录all

chmod +t all   //加上粘滞位后别人无法删除

tmp目录默认带有粘滞位。

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

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

6. file指令

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

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形
  • -z 尝试去解读压缩文件的内容。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Yuucho

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

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

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

打赏作者

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

抵扣说明:

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

余额充值