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

相关文章

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

oracle中exists和not exists用法举例详解

《oracle中exists和notexists用法举例详解》:本文主要介绍oracle中exists和notexists用法的相关资料,EXISTS用于检测子查询是否返回任何行,而NOTE... 目录基本概念:举例语法pub_name总结 exists (sql 返回结果集为真)not exists (s

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Springboot中Jackson用法详解

《Springboot中Jackson用法详解》Springboot自带默认json解析Jackson,可以在不引入其他json解析包情况下,解析json字段,下面我们就来聊聊Springboot中J... 目录前言Jackson用法将对象解析为json字符串将json解析为对象将json文件转换为json

Perl 特殊变量详解

《Perl特殊变量详解》Perl语言中包含了许多特殊变量,这些变量在Perl程序的执行过程中扮演着重要的角色,:本文主要介绍Perl特殊变量,需要的朋友可以参考下... perl 特殊变量Perl 语言中包含了许多特殊变量,这些变量在 Perl 程序的执行过程中扮演着重要的角色。特殊变量通常用于存储程序的

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规

Linux使用粘滞位 (t-bit)共享文件的方法教程

《Linux使用粘滞位(t-bit)共享文件的方法教程》在Linux系统中,共享文件是日常管理和协作中的常见任务,而粘滞位(StickyBit或t-bit)是实现共享目录安全性的重要工具之一,本文将... 目录文件共享的常见场景基础概念linux 文件权限粘滞位 (Sticky Bit)设置共享目录并配置粘

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string