chmod高阶用法 | 特殊权限位 | SUID | SGID | Sticky Bit

2024-04-23 16:20

本文主要是介绍chmod高阶用法 | 特殊权限位 | SUID | SGID | Sticky Bit,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、【写在前面】

笔者记得最早开始背八股文的时候,只知道rwx和软连接这种权限设置和查看,也就是最常见的chmod 777,

后来工作的时候看前辈的代码和文档,发现还有一个特殊权限位,分别是SUID | SGID | Sticky Bit写的时候会写 chmod 4755这种,就变成了四个数字。

用ll查看特殊的标志位会占用x的位置,如图

这些权限对文件和目录的行为有重要影响。本篇文章会介绍一下这三个权限的作用和用法。

二、【介绍】

  1. Set User ID (SUID):

    1. 权限位:4

    2. 对于可执行文件,文件在执行时会以文件拥有者的身份而不是执行者的身份来运行。

    3. 例如,passwd命令通常设置SUID位,以允许普通用户更改密码。它允许普通用户更改自己的密码,但是密码文件 /etc/passwd 只能由 root 用户写入,所以 passwd 程序就设置了 SUID 位,这样普通用户在执行 passwd 程序时就能以 root 权限修改密码文件。

    4. 通常用于需要以特殊权限运行的程序,但又不想直接赋予执行者这些权限的情况

  2. Set Group ID (SGID):

    • 权限位:2
    • 对于可执行文件,文件在执行时会以文件拥有者的组身份运行。类似于 SUID,但是它会以文件拥有者的组身份而不是用户身份来运行文件。
    • 对于目录,新创建的文件继承该目录的群组ID。常见用途包括在目录上设置 SGID 位,这样在该目录下创建的文件会继承目录的组属性,这对于共享目录和文件共享非常有用。
  3. Sticky Bit:

    • 权限位:1
    • 主要用于目录,只有文件所有者、目录所有者或 root 用户才能删除该目录下的文件,即使其他用户有写权限也不能删除非自己的文件。
    • 典型应用是/tmp目录,允许所有用户写入,但只允许文件所有者删除自己创建的文件。

三、【总结】

这个东西我看用的比较少,但是还是很实用的功能,可以按照需要选择自己需要的标志位,简单来讲就是chmod 后面可以跟四位数字,其中从左往右数第一位代表特殊权限位,分别是

        4——SUID

        2——SGID

        1——Sticky Bit

但是chmod后面只有三位数字时,例如755 644这种,还是以老一套为准。

这篇关于chmod高阶用法 | 特殊权限位 | SUID | SGID | Sticky Bit的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/929293

相关文章

JavaScript中的Map用法完全指南

《JavaScript中的Map用法完全指南》:本文主要介绍JavaScript中Map用法的相关资料,通过实例讲解了Map的创建、常用方法和迭代方式,还探讨了Map与对象的区别,并通过一个例子展... 目录引言1. 创建 Map2. Map 和对象的对比3. Map 的常用方法3.1 set(key, v

Redis实现RBAC权限管理

《Redis实现RBAC权限管理》本文主要介绍了Redis实现RBAC权限管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 什么是 RBAC?2. 为什么使用 Redis 实现 RBAC?3. 设计 RBAC 数据结构

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

golang panic 函数用法示例详解

《golangpanic函数用法示例详解》在Go语言中,panic用于触发不可恢复的错误,终止函数执行并逐层向上触发defer,最终若未被recover捕获,程序会崩溃,recover用于在def... 目录1. panic 的作用2. 基本用法3. recover 的使用规则4. 错误处理建议5. 常见错

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详