Linux系统篇,权限(二):缺省权限、最终权限的计算、文件隔离的两种方式

系列文章目录

第二章 Linux的权限管理与使用


文章目录

  • 系列文章目录
  • 前言
  • 一、缺省权限
    • [1.1 缺省权限是什么](#1.1 缺省权限是什么)
    • [1.2 权限掩码 umask](#1.2 权限掩码 umask)
      • [1.2.1 umask指令](#1.2.1 umask指令)
      • [1.2.2 运算格式](#1.2.2 运算格式)
      • [1.2.3 umask 目的](#1.2.3 umask 目的)
  • 二、隔离
    • [2.1 用户间的隔离](#2.1 用户间的隔离)
    • [2.2 文件的所属问题](#2.2 文件的所属问题)
    • [2.3 tmp 文件](#2.3 tmp 文件)
      • [2.3.1 t权限 粘滞位](#2.3.1 t权限 粘滞位)
  • 总结

前言

  本节是讲解Linux权限的第二节内容,本节将围绕二进制文件权限管理、文件的隔离等内容,这是日后在工程开发中常常使用的东西,让我们开始今天的学习吧。


一、缺省权限

1.1 缺省权限是什么

  缺省权限即默认权限,指的是在我们创建文件或目录时系统给其自带的角色权限。

  • 普通文件: 起始权限为666,默认不执行
  • 目录文件: 起始权限为777,默认带x

  但是我们创建文件时却不是如上的默认权限,如图中:普通文件664,目录文件775。甚至你们创建时与我的也不一样,这是因为系统存在一个权限掩码的概念。

1.2 权限掩码 umask

  系统中的权限掩码是机器中可设定的一种01二进制串,它和起始权限共同决定了创建文件的最终权限,因此有以下公式。

  最终权限 = 起始权限 & (~unmask)

1.2.1 umask指令

  • 语法: umask 选项 掩码值
  • 功能: 查看或设置新建文件、目录的默认缺省权限掩码,控制系统创建文件和目录时的初始权限
  • 常用选项 / 用法:

umask :直接查看当前默认权限掩码
umask 数字 :临时修改权限掩码,仅当前终端会话生效

  当然不同用户的umask不是一样的。

1.2.2 运算格式

  这里来进行验证看看是不是这个理论。八进制0002 转为二进制为000000010 取反为 111111101 与 111111111 按位与 ,结果为111 111 101 即775,与上方的目录权限一致。

1.2.3 umask 目的

  凡是在umask中出现的权限,就不应该再最终文件中出现,这是因为取反为0,再与不管是1还是0,最终都是0,因此取消该文件的特点权限。

  1. 系统灵活性: 默认权限由系统决定无法在创建前修改,而umask可配置实现了权限的自定义。
  2. 可控性:特殊情况下,可以控制文件的默认权限,保持文件权限的一致性。

二、隔离

2.1 用户间的隔离

  在我们登录时会发现直接处于家目录,在这种家目录中可以发现每有一个用户就会自动新建一个以用户名命名的文件 ,而这文件具有着拥有者和所属组都是自身的特性,并且限制任何其他用户无法进入。

2.2 文件的所属问题

  有这样一种现象:在我们的目录下,有这样一个文件,它对所有的角色权限都设置为000,我们既不可以读也不可以写,那我们能否对它进行删除呢?

  答案是可以删除,因为这是在目录中操作文件的,与文件本身的权限没有关系,只需要看文件所处目录是否具有w权限即可。

  但这样的情况是很少的,相等于别人到我家里,对我进行限制,我直接可以报警抓走他。

2.3 tmp 文件

  既然如此,文件不应该随便放在别人的目录下,那放在自己的家目录下是否能一劳永逸? 确实可以成功地解决他人对自己文件的操作,但若两个用户之间需要多次文件间的协作时又显得无能为力。那么系统自带的tmp目录就发挥了巨大作用(/tmp)。

*  我们在该目录中创建文件,因需要让他人操作,所以将其他人的权限全部放开,这样实现了文件的共享。*

  但再想想万一有一天这个人变成竞争者后,想把我们创建的文件删除,这是可以的吗?其实是可以的,因为与该目录是否有w权限有关。那这就很奇怪了,之前那种情况是在自己根目录下的就要受主人管理,而这种情况如何解决呢?

2.3.1 t权限 粘滞位

  因此,我们需要这样的要求---------任何人都能新建文件且只有自己能够删除自己的文件。而w的修改根本实现不了这个需求,为实现以上需求 "t 权限" 出现了。

chmod +t 文件名

  此时就成功地实现了以上的需求,删除不了非自己创建的文件了。

  我们在日常中使用系统创建的tmp目录共享即可。


总结

  本节的权限讲解就到此位置了,内容不多但都是面试时常考重点,希望大家好好消化,我们下一节将进入开发工具的安装与使用,感谢您的阅读,我们下节再见。

相关推荐
无限进步_1 分钟前
【Linux】进度条:行缓冲区、\r 与 fflush 的实战
linux·服务器·开发语言·数据结构·后端
宋冠巡5 分钟前
华为云开发桌面OpenEuler搭建Nginx服务器实操记录
服务器·nginx·华为云
say_fall9 分钟前
Linux进程核心概念:命令行参数与环境变量深度解析
linux·运维·服务器·ubuntu
go不是csgo10 分钟前
Go-GMP-调度器深度解析(改进版本)
java·linux·golang
Peace11 分钟前
【Zabbix】
linux·运维·zabbix
枕星而眠11 分钟前
C++面向对象核心:类间关系与继承深度解析
运维·开发语言·c++·后端
FBI HackerHarry浩12 分钟前
在Python中TCP网络程序开发的步骤流程
运维·服务器·开发语言·网络·python·pycharm
qq_4523962313 分钟前
第十一篇:《Docker Compose:多容器应用编排入门》
运维·docker·容器
kTR2hD1qb15 分钟前
Keepalived 学习总结
java·服务器·学习
Geoking.20 分钟前
Docker安装Nacos指南
运维·docker·容器