[ Linux长征路第三篇 ] 权限理解

Posted 小白又菜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ Linux长征路第三篇 ] 权限理解相关的知识,希望对你有一定的参考价值。


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

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

root只有一个,而普通用户可以有多个。(类似于win系统中管理员和普通用户)

1.root用户和普通用户相互切换 

whoami 可确认当前用户

[

[

想切换到root用户时,可使用 su - 指令

注意:输入的密码是不回显的

[

[

可以看出普通用户的提示符是$ 超级用户是#

想要再切回普通用户身份可直接输入logout,也可以使用su user

[

[

[

[

 

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

在Linux下,一切事物皆文件。文件 = 文件属性 + 文件内容

下图能看到这段代码是test.cpp 的文件内容,那test.cpp的文件属性又在哪里呢?

[

[

其实,文件的属性正是红框内下面这么多 

[

[

[

[

这些属性我们一组一组来详解

2.1 文件类型

第一列的第一个字符,叫做文件类型!Linux 系统不是以文件名后缀区别文件类型的,而是以ll下第一列的第一个字符显示的。Linux下的文件类型共有以下几种!

  • d:文件夹
  • -:普通文件  (文本,源代码,可执行程序(win下是exe),第三方动静态库等)
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

[

[

[

[

[

[

我们最长使用的是 文件夹和普通文件,其他文件类型只需要了解即可。

2.2 基本权限

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

[

[

我们接下来要解释的就是这9列,这9列是文件的访问权限。这个权限就是用来区别谁能“访问”,谁不能“访问”;以及对应的文件应该具备某种属性,r 读 w 写 x 执行

在Linux中为了要想区别文件谁能访问谁不能访问,Linux将文件的访问者进行了分类(人)

  • 文件和文件目录的所有者:u---User(平民 )
  • 文件和文件目录的所有者所在的组的用户:g---Group(同组)
  • 其它用户:o---Others (外国人)

因此这9行被分成了3组,前3列是User的权限  中间三列是Group的权限   后三列是Other的权限

[

[

 

2.3 文件权限值得表示方法

1)字符表示法

Linux表示

说明

Linux表示

说明

r--

只读

-w-

仅可写

--x

仅可执行

rw-

可读可写

-wx

可写和可执行

r-x

可读可执行

rwx

可读可写可执行

---

无权限

 

2)8进制数值表示法

权限符号(可执行)

八进制

二进制

r

4

100

w

2

010

x

1

001

rw

6

110

rx

5

101

wx

3

011

rwx

7

111

---

0

000

八进制数字对应的二进制数字中,为1则说明有该权限,为0说明没有该权限:例如r-- 为只读权限,对应二进制为 100  ,二进制100对应八进制为4。

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

1) chomd

功能:设置文件的访问权限

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

常用选项:

  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限

① 用户表示符+/-=权限字符

  • +: 向权限范围增加权限代号所表示的权限
  • -:  向权限范围取消权限代号所表示的权限
  • =: 向权限范围赋予权限代号所表示的权限

用户符号:  

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

1:假设我要掉file.txt拥有者的读权限:chmod u-r file.txt

[

[

2:我要再加上file.txt拥有者的读权限:chmod u+r file.txt 

[

[

3:假设我要去掉 file.txt 中Group的所有权限

[

[

2)三位8进制数字 

权限符号(可执行)

八进制

二进制

r

4

100

w

2

010

x

1

001

rw

6

110

rx

5

101

wx

3

011

rwx

7

111

---

0

000

1:给file.txt文件中User Group Other 都设置所有(可读可写可执行)权限 :chmod 777 file.txt

[

[

 

 3) chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

 

 当我想把file.txt的拥有者修改为root时为什么会报错呢?该怎么解决呢? 

这是因为当我们修改文件拥有者时,相当于我们把该文件扔给对方,这也要考虑对方要不要,因此Linux是不能直接修改的,但是我们就想把改文件给对方时怎么办呢?我们有两个方法

1:我们可以在指令前加上sodu,加上sodu之后权限会短暂提升为root。sudo chown root file.txt

2:我们先切换成root用户,然后可以直接修改。

[

[

 

 4)chgrp

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

 

3. 目录的权限

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

进入一个目录,需要可执行权限,首先验证一下....

[

[

如果目录只没有r权限,允许进入,允许在该目录下创建(写入)只是不能查看

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

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

 

3.1 umask

功能

查看或修改文件掩码  新建文件夹默认权限=0666   新建目录默认权限=0777

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。


  • # umask 755
  • # umask               //查看
  • # umask 044        //设置


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

[

[

这是因为系统有一个默认的权限掩码:umask

[

[

所谓的权限掩码是什么呢?

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

因此 默认目录的起始权限是 777 ,umask 是 002,因此最终默认权限是 775;默认文件权限道理如此。最终默认权限的计算方式是:mask & ~umask

[

[

如果我们修改umask,也会修改最终默认权限。

[

[

4.粘滞位 

什么叫做粘滞位呢?

这是因为,有时候我们需要有一个目录需要所有人在该目录下进行创建和删除临时文件。这样的好处是操作系统给所有人提供了一个临时场所供我们随时创建和删除临时文件。

[

[

 

现在都是没有权限的,由于是我Lxy下的文件,我可以直接删掉hulu用户创建的文件。因此在一个共享目录下,你不让我写,不让我读,防不住我删除!

[

[

 

 因此如果,我还想在一个共享目录下,行程临时文件,但是不允许除了我之外的人删除!我们给共享的目录加上粘滞位!!

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

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

[

[

 注意:粘滞位所加目录的拥有者不能是这两个操作者

[

(本篇完

以上是关于[ Linux长征路第三篇 ] 权限理解的主要内容,如果未能解决你的问题,请参考以下文章

[ Linux长征路第六篇 ] Linux使用git上传gitee三板斧

[ Linux 长征路第四篇 ] 开发工具 vim的使用 gcc/g++的使用

[ Linux 长征路第一篇] 基本指令

Linux系统安装与使用基础之第三篇控制文件和目录的存取权限

Linux提权第三篇-GNU C Library动态链接库$ORIGIN溢出提权

深入理解DOM事件机制系列第三篇——事件对象