【Linux修炼进程之权限篇】探讨Linux权限问题

【Linux修炼】------权限问题

目录

一:认识Linux下用户的分类

1.1:如何添加新用户【使用root用户创建添加】

1.2:su指令用法

二:Linux下权限是什么?

2.1:权限所认证的是身份(人+身份角色)

2.2:权限和事物(文件)的"属性"有关

2.3:谈权限所熟知的过程

三:文件权限值的表示方法

3.1:权限字符表示法

3.2:权限八进制数值表示法

四:对于权限的修改问题

4.1:修改权限的相关指令

4.1.1:chmod指令

4.1.2:chgrp指令

4.1.3:chown指令

4.2:文件的权限修改

4.2.1:普通文件的权限修改

4.2.2:目录文件的权限修改

五:关于权限的重要问题

5.1:为什么我们创建文件的默认权限是我们所看到的样子?

5.2:多个用户进行文件的共享时如何保证安全性?


一:认识Linux下用户的分类

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

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

1.1:如何添加新用户【使用root用户创建添加】

**第一步建立新用户:**adduser newname(用户姓名,根据自己情况而定)

**第二步给新用户设置密码:**passwd newname

**第三步输入新用户的密码,密码不回显(我们是看不到的):**New password:******

**第四步再次输入新用户密码:**Retype new password:******

显示有 successfully 即创建新用户成功!

第五步测试新用户:su newname

显示当前身份就是 zs 。表明我创建的新用户既可以使用了。

1.2:su指令用法

关于 root 账号与普通账号之间的切换:

**语法:**su 用户名

**功能:**切换用户

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


二:Linux下权限是什么?

**权限:**对于一件事情是否允许被你做。

注意:指定规则的 root,不受权限的约束!!!

一个文件中各种数据大致表示情况:

2.1:权限所认证的是身份****(人+身份角色)

因为权限所认证的是身份,即人+身份角色。

**人:**root用户,普通用户

**身份角色/权限身份:**拥有者(u / User),所属组(g / Group),其他人(o / Other).

人与具体身份有着对应的关系!!

查看一个文件的拥有者和所属组情况:

那么 other 呢?------登录身份账号,进行文件身份匹配,若都不匹配,则是 other。即匹配过程是一个 if...else if...else 的过程。具体步骤: 先匹配身份是否是拥有者,若匹配成功则匹配对应的拥有者权限属性,若不是则继续匹配是否是所属组,若所属组匹配成功就进行该文件所对应的所属组权限属性,若不是则剩下的一律匹配到 other 中,进行对应的other权限属性。

2.2:权限和事物(文件)的"属性"有关

所谓文件属性, 一定有可读,可写,可执行三种属性。

读( r ): 具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写( w ): Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
执行( x ): execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
**"---":**表示不具有该项权限。

该红框框中的十个字符:表示一个文件的文件类型和文件的属性情况。

Linux中的文件类型:

  • 以 - 开头:普通文件
  • 以 d 开头:目录文件
  • 以 b 开头:块设备文件
  • 以 c 开头:字符设备文件
  • 以 p 开头:管道文件
  • ....

十个字符中除却第一个字符还剩下的九个字符,其是由三种符号组合:r(可读),w(可写),x(可执行)。

后面的九个字符三三为一组,表示三种身份的各自权限。

  • 第一个三【rwx / rw-】:拥有者权限
  • 第二个三【rwx / rw-】:所属组权限
  • 第三个三【r-x / r--】:other 权限

九个字符中各个字符的位置的含义是确定的!

剩下的九个字符中表示的含义:

  • 第一个字符:拥有者的读权限
  • 第二个字符:拥有者的写权限
  • 第三个字符:拥有者的执行权限
  • 第四个字符:所属组的读权限
  • 第五个字符:所属组的写权限
  • 第六个字符:所属组的执行权限
  • 第七个字符:other 的读权限
  • 第八个字符:other 的写权限
  • 第九个字符:other 的执行权限

每一个位置只有是或者否,具有指定的权限:读权限(r / -) ,写权限(w / -),执行权限(x / -)

2.3:谈权限所熟知的过程

谈权限:

第一步:你是谁?【你的身份】

第二步:文件的所属组,拥有者是谁?【进行匹配】

第三步:拥有者,所属组和 other 分别各自的权限是什么?

实例:

第一步,我们知道我的身份是 alin

第二步,以dir1目录文件为例,该文件的拥有者是 alin,所属组是 alin

第三步,以dir1目录,拥有者权限情况为rwx(可读,可写,可执行),所属组权限情况为rwx(可读,可写,可执行),other 权限情况为r-x(可读,不可写,可执行)。


三:文件权限值的表示方法

3.1:权限字符表示法

我们知道在文件的权限三三为一组时,文件位置的含义都是确定的。每一组的第一个字符都代表的是否可读,是否可写,是否可执行。

即权限的字符表示方法:

3.2:权限八进制数值表示法

接下来以一个表格进一步来描述权限符号与八进制数值的关系。


四:对于权限的修改问题

对于文件权限的修改,只能是由该文件的拥有者和root来修改!

4.1:修改权限的相关指令

4.1.1:chmod指令

功能: 设置文件的访问权限
**语法格式:**chmod 参数 权限 文件名

具体用法: 用户表示符+/-=权限字符

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

用户表示符号:

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

权限字符:

  • r:可读
  • w:可写
  • x:可执行

4.1.2:chgrp指令

功能: 修改文件或目录的所属组
**格式:**chgrp 参数 用户组名 文件名

常用选项:

  • -R 递归修改文件或目录的所属组
  • 注意:只能由root账号修改

实例:

不是root账号修改不会成功:

使用root账号修改:

4.1.3:chown指令

功能: 修改文件的拥有者,同时也可以一次性修改文件的拥有者和所属组
**格式:**chown 参数 用户名 文件名

常用选项:

  • -R 递归修改文件或目录的拥有者
  • 注意:只能由root账号修改

实例:

改变文件的拥有者:

一次性修改文件的拥有者和所属组:chown 用户名:所属组 文件

4.2:文件的权限修改

文件的权限修改主要靠****chmod指令

4.2.1:普通文件的权限修改

对于普通文件的rwx:

  • r:具有读取该文件内容的权限
  • w:具有修改文件内容的权限
  • x:具有执行文件的权限

以上述几个普通文件为例:

因为现在我的身份是 alin ,可查看这些文件的拥有者是否是 alin。即发现在文件 rt1.txt,rtest.c 文件中alin 的身份是other ,即在这两个文件中的权限是 r-- 仅可读。在rtest.exe 可执行文件中权限是r-x可读可执行;但是在文件t1.txt,t2.txt,test.calin 的身份是拥有者,即在这三个文件中的权限是rw- 可读可写,在test.exe 可执行文件中权限是 rwx可读可写可执行

修改权限:

chmod u-rwx,g-rwx,o-rwx t1.txt:将 t1.txt 的所有权限都关闭【自封该文件】

此时除了root用户,谁也不能操作该文件。

chmod u+rw,g+rw,o+rx t1.txt:操作t1.txt文件,给该文件的拥有者和所属组增加可读可写权限,给文件的 other 增加可读可执行权限。

**因为我们的权限可以使用八进制来表示。**所以 chmod 000 t1.txt:操作t1.txt文件,将该文件的所有权限都关闭【自封该文件】

chmod 444 t1.txt:操作t1.txt文件,将该文件的拥有者、所属组和 other 设置权限为只可读

当操作没有权限的文件时系统文件肯定会报错的。例如alin在rt1.txt文件中身份是 other,其权限仅是只可读。所以当将信息写入该文件时会报错!

4.2.2:目录文件的权限修改

对于目录文件的rwx:

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

检测可读权限【 r 】:是否能查看目录中的文件内容.

检测可写权限【 w 】:是否能在目录中创建文件, 在目录中删除文件.

检测可执行权限【 x 】:是否能cd进入到目录中.

五:关于权限的重要问题

5.1:为什么我们创建文件的默认权限是我们所看到的样子?

  • 为什么普通文件:664【rw- rw- r--】
  • 为什么目录文件:775【rwx rwx r-x】

解决法:

首先Linux会默认给普通文件的起始权限是666【rw- rw- rw- / 110 110 110】,默认给目录文件的起始权限是777【rwx rwx rwx / 111 111 111】。

但是Linux系统中有一个umask 权限掩码这一情况。所谓权限掩码,就是凡在 umask中出现的权限,不会在最终的文件权限中出现!

umask 指令

功能: 查看或修改文件掩码

**格式:**umask 权限值

说明: 超级用户默认掩码值为0022,普通用户默认为0002。

实例:

  • umask //查看
  • umask 0555 //设置

=>

文件的最终权限 = 起始权限 & (~umask)

=>

修改 umask 默认权限值:

若使得创建的文件都只能写,不能读,不能被执行【-w- -w- -w- / 010 010 010】,对其取反:101 101 101 / 555。所以此时将umask = 0555即可

该问题被称之为起始权限问题.

重点理解在umask.

5.2:多个用户进行文件的共享时如何保证安全性?

普通用户自己的家目录权限是700,即我在我的家目录创建的文件别人看不到。但是有时候我们多个用户想进行文件数据的共享。

那么在根目录下创建一个文件【只能使用root账号创建】,所有权限都放开:chmod 777 shared_file

在多个用户共享一个文件下,一个用户写的文件,另一个用户也能看见。

但是有一个问题:在多个用户共享一个文件下,一个用户写的文件,另一个用户竟然能删掉???

这使得文件的安全行不可靠。

那么如何解决呢?

=> 一个文件能否被删除,并不由文件本身决定,而是由这个文件所处的目录决定。那么如何规避用户与用户之间的安全行呢?

最好的方法就是:粘滞位 t (即,在共享目录下,我们可以创建文件,但不可删除文件 chmod o+t shared_file)

**粘滞位:**给目录设置,一般是大家可以进行操作的共享目录,在该目录中各用户进行各自的增删改查。

粘滞位实例:

在shared_file目录文件中,alin用户创建一个文件。

另一个用户tmp_user想要删除alin创建的文件

发现只能查看而删除不成功!此时安全性就大大的提高了。

。有了粘滞位,则只允许文件的拥有者或者root能删这个文件,其他人一律不允许,t 是一种特殊的 x 可执行权限
所以,一个文件能否被删除,取决于该文件所处的目录权限。

相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式