当前位置: 首页 > news >正文

Linux中常见的权限问题

目录

  • 前言
  • 1. 目录权限
  • 2. umask
  • 3. 粘滞位
  • 结语


前言

在了解完上一篇文章 Linux权限的理解与操作 之后,还有一些比较常见的权限问题需要我们去了解。其中包括目录的权限,umask 以及 粘滞位的使用。


1. 目录权限

问题一:进入一个目录,需要什么权限? —— 可执行权限(x)

问题二:查看目录下的文件列表,需要什么权限? —— 读权限(r)

问题三:在目录中创建文件或目录,需要什么权限? —— 写权限(w)


2. umask

首先,我们需要清楚,在 Linux 下默认,一个目录被创建,起始权限是从:777,而一个普通文件被创建,起始权限是从::666 (注意:这里强调的都是起始权限!)

那……什么是 umask呢?—— umask 可以称为权限掩码,我们可以理解为,凡事在 umask 中出现的权限,都不应该出现在文件或目录的最终权限中。

在这里插入图片描述

在命令行中,我们也可以通过 umask 来查看当前的权限掩码是多少,而系统默认的 umask 的值就是0002

在这里插入图片描述

但是我们又可以看到,我们所创建出来的文件或者目录,它们的默认权限,都不是上述所提到的起始权限。目录的默认权限为 775,文件为664,与 Linux 规定的起始权限对不上啊,那我们所看到的默认权限是如何得到呢??

联想到 umask 的值为 0002,我们以目录来举例,目录的起始权限为777,权限掩码为002,起始权限减去 umask 刚好不就是我们所看到的目录的默认权限吗!!??

但是这样去推断默认权限与起始权限之间的关系,是不正确的!

我们创建出来的目录或文件,他们的最终权限的算法可以表示为:最终权限 = 起始权限 & (~umask)

我们同样以目录为例,给大家做一下演示:
在这里插入图片描述

其实我们不难发现,最终权限的本质就是,将起始权限中umask为1的二进制位变为0,就是我们所看到的最终权限。

如果我们想根据自己的需求来修改目录或者文件的最终权限的话,我们也可以通过修改 umask 的值来达到修改创建目录或文件时的默认权限。

在这里插入图片描述
我们可以看到,当我们将 umask 的值修改为太极端时(比如777),再根据最终权限的算法,就会出现创建出来的文件或目录的权限都为空的情况,所以在修改 umask 这件事上,一般的建议是,根据实际需求修改即可


3. 粘滞位

在讲粘滞位之前,我们需要再对权限先做一些铺垫,以方便我们了解清楚粘滞位的作用。

示例一:

在这里插入图片描述

示例二:

在这里插入图片描述

因此我们可以先得出一个结论:删除一个文件,参考的不是当前用户对该文件是否具有读权限,而是参考当前用户对于该文件所在目录是否具有读权限, 如果当前用户对该文件所在的目录没有读权限,即便对该文件具有读权限,也无法删除该文件!

示例三:

在这里插入图片描述

因此,我们又一次证明了上述结论,删除文件参考的是当前执行操作的用户对该文件所在目录是否具有读权限,而不依赖于对该文件对自己的权限,即便自己不是文件的拥有者,依旧可以删除该文件。

正是由于该种情况的存在,导致了一些问题隐患:
例如,在公司时,一定是存在需要几个人或者几十个人一起共同为了维护一个项目而成立的团队,而每个团队或许会有一个公共使用的目录,为了使团队各成员能够在该目录下进行正常工作,那么就需要对团队成员都开放该目录的读写执行权限。根据示例三,我们如果不需要让除了自己的其他人查看自己的文件,甚至修改自己的文件,我们可以将文件所对应的角色的权限清除,以达到该目的。但是!又根据上述所提及的,删除一个文件参考的并不是该用户对文件是否具有读权限,只要该用户对文件所在目录具有读权限,那么就能够删除该目录中的所有文件!所以……这不就扯淡了吗???

大家都在一个目录下共事,我可以阻止其他人查看或者修改我的文件,但是,我无法阻止其他人删除我的文件!

而上述这种情况,在 linux 系统中也有具体的体现。

在这里插入图片描述
在系统的根目录中,存在一个tmp目录,该目录即为linux中的所有用户共享。

对于多用户在同一个目录环境下共事且各用户都具有对该目录的读写执行权限的情况下,为了解决其他人能够删除自己的文件的问题,如果我们将该目录的读权限去除掉,那么确实解决了其他人无法删除自己文件这个问题。但是!同时其它人,包括自己,都无法在这个目录下创建以及修改文件,那么如何达到共事的目的呢?

所以,为了很好的解决这个问题,在 Linux 中,就有了粘滞位的存在。粘滞位通俗来讲,就是使所有用户均有在该目录读写执行的权限,但无法删除其它用户所创建的文件!


对目录添加粘滞位:

chmod +t 目录名
//这里不需要指定u或者g,直接 +t 即可

粘滞位的效果演示:

在这里插入图片描述

但是这里需要注意的是:粘滞位只能给目录设置!
同时,粘滞位的添加或删除,都只能由创建该目录的用户执行,也即拥有者,而一般情况下,需要创建具有粘滞位的目录,通常为 root 用户。


结语

关于 Linux 中常见的权限问题全部讲完,如果该文章能给你带来一定的帮助,或者是收获,我很开心。
同时,觉得对你有帮助的伙伴们,也可以 点赞👍 + 收藏⭐️ + 关注➕ 支持一下!
感谢各位观看!!

相关文章:

Linux中常见的权限问题

目录 前言1. 目录权限2. umask3. 粘滞位结语 前言 在了解完上一篇文章 Linux权限的理解与操作 之后,还有一些比较常见的权限问题需要我们去了解。其中包括目录的权限,umask 以及 粘滞位的使用。 1. 目录权限 问题一:进入一个目录&#xff0…...

【技术分享】RK356X Ubuntu 推流USB摄像头

本文适用与触觉智能所有RK356X ubuntu系统的主板。 IDO-SBC3566基于瑞芯微RK3566研发的一款高性能低功耗的智能主板,采用四核A55,主频高达1.8GHz,专为个人移动互联网设备和AIOT设备而设计,内置了多种功能强大的嵌入式硬件引擎,为…...

介绍一下rabbitMq应用场景

任务队列:RabbitMQ可以将待处理的任务放入队列中,再由多个工作进程异步地执行这些任务。 日志处理:RabbitMQ可以通过发布-订阅模式将日志消息分发到多个消费者,并可以灵活地控制消息的优先级和过滤条件。 实时消息处理&#xff…...

IoT 物联网共享充电桩场景中设备资产定位和地理围栏开发实践

基于经纬度的设备资产定位和地理围栏在物联网场景中应用广泛 01 物联网 GEO 场景架构方案 首先,IoT 终端设备通过卫星定位模块获取当前经纬度;然后,将坐标信息实时上报到物联网平台;最后,存储到 Redis GEO 数据库中。 …...

【Qt进阶之自定义控件】使用QListWidget实现自定义Item效果

目的 Q:如何在Qt库的基础上,实现自定义控件呢? A:根据官方文档回答,就是继承需实现的控件,然后实现自定义功能。 以下是实现QListWidget控件的自定义item。 先看下最终效果是如何: listItem 主…...

【iOS】UITableView总结(Cell的复用原理、自定义Cell、UITableViewCell协议方法)

UITableView 列表的特点: 数据量大样式较为统一通常需要分组垂直滚动通常可视区只有一个 -> 视图的复用 UITableViewDataSource UITableView作为视图,只负责展示,协助管理,不管理数据 需要开发者为UITableView提供展示所需…...

shell之常见网络命令介绍

shell之常见网络命令介绍 1)ifconfig 用于配置网络接口。可以用于开启、关闭和设置网络接口的参数,如IP地址、子网掩码、MAC地址等。 ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up上述命令将设置eth0网络接口的IP地址为192.168.1.1,子…...

Android屏幕刷新机制

基础知识 CPU运行在Android设备上的中央处理器(Central Processing Unit)是Android设备的核心组件之一,负责执行计算和控制设备的各种操作。 Android设备上的CPU通常采用ARM架构,如ARM Cortex-A系列处理器。这些处理器具有高性能…...

Python学习第3天-第一个Python程序

文章目录 前言一、创建项目二、创建程序总结 前言 下面给大家展示下经典的Hello World! 一、创建项目 二、创建程序 print("Hello World!")总结 回到顶部 学习网站 欢迎来到Python的世界!...

Golang网络

golang游戏服务器框架 在Go语言中,有许多优秀的游戏服务器框架,以下是一些比较流行的框架: Leaf:一个轻量级的游戏服务器框架,支持多进程、分布式、热更新等特性。它提供了一些常用的组件,如网络层、定时器、数据库等等,可以帮助开发者快速构建游戏服务器。go-ethereum…...

[swift刷题模板] 树状数组(BIT/FenwickTree)

[TOC]([swift刷题模板] 树状数组(BIT/FenwickTree) ) 一、 算法&数据结构 1. 描述 [python刷题模板] 树状数组 二、 模板代码 1. 单点赋值(增加),区间求和(PURQ) 例题: 307. 区域和检索 - 数组可修改 class BIT {var c: [Int]var n: Int init(_ n: Int){c…...

​CUDA学习笔记(三)CUDA简介

本篇博文转载于https://www.cnblogs.com/1024incn/tag/CUDA/,仅用于学习。 前言 线程的组织形式对程序的性能影响是至关重要的,本篇博文主要以下面一种情况来介绍线程组织形式: 2D grid 2D block 线程索引 矩阵在memory中是row-major线性…...

RK3568笔记三:基于ResNet18的Cifar-10分类识别训练部署

若该文为原创文章,转载请注明原文出处。 本篇文章参考的是野火-lubancat的rk3568教程,本篇记录了在正点原子的ATK-DLK3568部署。 一、介绍 ResNet18 是一种卷积神经网络,它有 18 层深度,其中包括带有权重的卷积层和全连接层。它…...

块状数据结构学习笔记

分块 分块的思想和珂朵莉树很类似,就是把原序列分成若干个块,对块进行操作的奇妙思想。复杂度通常带根号。分块的块长也有讲究,通常对于大小为 n n n 的数组,取距离 n \sqrt n n ​ 最近的 2 2 2 的幂数或直接取 n \sqrt n n…...

DOM4J解析.XML文件

<?xml version"1.0" encoding"utf-8" ?> <books><book id"SN123123413241"><name>java编程思想</name><author>华仔</author><price>9.9</price></book><book id"SN1234…...

黑豹程序员-架构师学习路线图-百科:MVC的演变终点SpringMVC

MVC发展史 在我们开发小型项目时&#xff0c;我们代码是混杂在一起的&#xff0c;术语称为紧耦合。 如最终写ASP、PHP。里面既包括服务器端代码&#xff0c;数据库操作的代码&#xff0c;又包括前端页面代码、HTML展现的代码、CSS美化的代码、JS交互的代码。可以看到早期编程就…...

二、BurpSuite Intruder暴力破解

一、介绍 解释&#xff1a; Burp Suite Intruder是一款功能强大的网络安全测试工具&#xff0c;它用于执行暴力破解攻击。它是Burp Suite套件的一部分&#xff0c;具有高度可定制的功能&#xff0c;能够自动化和批量化执行各种攻击&#xff0c;如密码破解、参数枚举和身份验证…...

solidworks 2024新功能之-让您的工作更加高效

您可以创建杰出的设计&#xff0c;并将这些杰出的设计将融入产品体验中。为了帮您简化和加快由概念到成品的产品开发流程&#xff0c;SOLIDWORKS 2024 涵盖全新的用户驱动型增强功能&#xff0c;致力于帮您实现更智能、更快速地与您的团队和外部合作伙伴协同工作。 SOLIDWORKS…...

华为eNSP配置专题-VRRP的配置

文章目录 华为eNSP配置专题-VRRP的配置0、参考文档1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接 2.VRRP的配置2.1、PC1的配置2.2、接入交换机acsw的配置2.3、核心交换机coresw1的配置2.4、核心交换机coresw2的配置2.5、配置VRRP2.6、配置出口…...

LuatOS-SOC接口文档(air780E)--lcd - lcd驱动模块

常量 常量 类型 解释 lcd.font_opposansm8 font 8号字体 lcd.font_unifont_t_symbols font 符号字体 lcd.font_open_iconic_weather_6x_t font 天气字体 lcd.font_opposansm10 font 10号字体 lcd.font_opposansm12 font 12号字体 lcd.font_opposansm16 font…...

基本数据结构的定义要自己会手写1(二叉树)

&#xff08;C版本&#xff09;struct TreeNode {int val;TreeNode *left;TreeNode *right;// 写三个构造函数&#xff0c;提供多种创建节点的方式// 1、无参构造TreeNode() : val(0),left(nullptr),right(nullptr){}// 2、单参构造TreeNode(int x) : val(x),left(nullptr),rig…...

从TensorFlow 1到2:BigEarthNet-MM数据集官方划分代码的现代化改造与避坑指南

1. 从TensorFlow 1到2的迁移挑战 BigEarthNet-MM数据集是遥感图像分析领域的重要资源&#xff0c;但官方提供的19类划分代码基于TensorFlow 1.x版本编写。随着TensorFlow 2.x的普及&#xff0c;许多开发者在使用这些代码时遇到了兼容性问题。我最近在实际项目中完成了这个迁移…...

从Navicat到IDEA:一个JavaEE小白的数据库连接可视化调试全记录(MySQL 5.7 + JDBC)

从Navicat到IDEA&#xff1a;JavaEE新手数据库可视化调试实战指南 记得第一次接触JavaEE项目时&#xff0c;面对黑漆漆的命令行和密密麻麻的SQL语句&#xff0c;那种手足无措的感觉至今难忘。直到发现Navicat和IDEA这对黄金组合&#xff0c;才真正把抽象的数据库操作变成了看得…...

ComfyUI ControlNet Aux完整指南:30+预处理器一键配置与高效AI绘画控制方案

ComfyUI ControlNet Aux完整指南&#xff1a;30预处理器一键配置与高效AI绘画控制方案 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 还在为AI绘画中的细…...

告别多个Keil图标!教你合并MDK/C51/C251开发环境(Windows版)

告别多个Keil图标&#xff01;三合一开发环境整合实战指南 每次打开电脑看到桌面上排排站的uVision图标&#xff0c;是不是觉得既占空间又影响效率&#xff1f;作为嵌入式开发者&#xff0c;我们经常需要同时处理51单片机、ARM核MCU和251架构项目&#xff0c;但Keil官方默认安装…...

U-Boot调试实战:不用JTAG,如何用mmc read/write命令快速定位和修复eMMC数据损坏?

U-Boot调试实战&#xff1a;不用JTAG&#xff0c;如何用mmc read/write命令快速定位和修复eMMC数据损坏&#xff1f; 当嵌入式设备在现场出现无法启动的故障时&#xff0c;工程师往往面临一个棘手的问题&#xff1a;如何在不依赖JTAG等专业调试工具的情况下&#xff0c;快速诊断…...

快狐KIHU|连锁门店条形屏RK3566芯片品牌展示效率提升

在当今竞争激烈的零售市场中&#xff0c;连锁门店的品牌展示效率至关重要。[KIHU快狐]凭借其先进的条形屏解决方案&#xff0c;搭载RK3566芯片&#xff0c;为连锁门店提供了高效、稳定的品牌展示方案。RK3566芯片的技术优势[KIHU快狐]的条形屏采用RK3566芯片&#xff0c;这款芯…...

Qwerty Learner:掌握英语输入肌肉记忆的终极训练神器

Qwerty Learner&#xff1a;掌握英语输入肌肉记忆的终极训练神器 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https://gitc…...

从课堂实验到实际项目:用MATLAB的哈夫曼编码处理简单数据集(如图像颜色统计)

MATLAB实战&#xff1a;用哈夫曼编码优化图像颜色存储方案 引言&#xff1a;从理论到实践的跨越 第一次接触哈夫曼编码时&#xff0c;我盯着课本上那些抽象的符号和概率表格&#xff0c;总觉得这算法美则美矣&#xff0c;却不知如何落地。直到某次处理一批植物标本图像时&…...

Rockchip RK3588无线模块深度解析:AIC8800与AP6275P实战配置指南

Rockchip RK3588无线模块深度解析&#xff1a;AIC8800与AP6275P实战配置指南 【免费下载链接】ubuntu-rockchip Ubuntu for Rockchip RK35XX Devices 项目地址: https://gitcode.com/gh_mirrors/ub/ubuntu-rockchip 在嵌入式Linux系统开发中&#xff0c;Rockchip RK3588…...