• chmod,rwx Linux文件属性笔记221107


    Linux的文件属性包含文件类型和文件权限
    文件类型

    • -表示文件
    • d表示文件夹
    • l表示软链接

    文件权限

    • r 读权限
    • w 写权限
    • x 执行权限

    文件所属

    • u代表所属用户
    • g代表所属组
    • o代表其它用户

    在这里插入图片描述

    chmod 命令可以修改用户权限

    • 可以通过 r w x 字母修改
    • 也可以用 3位0到7 的数字修改
    chmod 用 r w x 字母符号 修改:设置,添加,移除 文件权限

    chmod用字母符号可以 设置,添加,修改权限, 用数字的话,只能设置,相当于等号=,不能新增和移除

    添加加+,移除减-,设置等=

    • + 加号是增加指定权限
    • - 减号是移除指定权限
    • = 等号是设置权限

    u属主 , g属组 , o其它 , a所有

    • u 代表属主, 所属用户, user
    • g 代表属组, 所属组, group
    • o 代表其它用户, other
    • a 的代表所有, 即是ugo

    ,逗号分隔

    • , 逗号可以分隔多组权限,不能有空格, 例如 u=rwx,g=r,g+wx,g-w,o=rwx,o-w,o-x,o-r,o+r

    例子
    给文件 text01.txt 添加所有用户的读取权限 r

    sudo chmod ugo+r text01.txt
    等效
    sudo chmod a+r text01.txt
    
    • 1
    • 2
    • 3

    移除所有用户的可执行权限

    sudo chmod ugo-x text01.txt
    等效
    sudo chmod a-x text01.txt
    
    • 1
    • 2
    • 3

    移除其它用户的写(修改)权限

    sudo chmod o-w text01.txt
    
    • 1

    用等号设置权限

    sudo chmod a=rwx text01.txt
    等效
    sudo chmod ugo=rwx text01.txt
    等效
    sudo chmod 777 text01.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    可以用,逗号分隔多个权限设置, 不能有空格

    例如

    sudo chmod u=rwx,g=rw,o=r text01.txt
    
    • 1
    sudo chmod u=rwx,g=rx,o=r text01.txt
    等效
    sudo chmod u=rwx,g=r,g+wx,g-w,o=rwx,o-w,o-x,o-r,o+r text01.txt
    
    • 1
    • 2
    • 3

    chmod 用 三位0到7的数字 修改文件权限

    chmod用字母符号可以 设置,添加,修改权限, 用数字的话,只能设置,相当于等号=,不能新增和移除
    十进制0到7的二进制为 000111 , 刚好3位, 可表示 ---rwx

    十进制二进制rwx权限
    7111rwx读 + 写 + 执行
    6110rw-读 + 写
    5101r-x读 + 执行
    4100r--只读
    311-wx写 + 执行
    210-w-只写
    11--x只执行
    00---

    所以

    • 只读 是 4
    • 可读可执行不可写 是 5
    • 可读写不可执行 是 6 可用于文件夹
    • 可读写可执行是 7

    例子

    root@ud224:/home/z/test# touch text01.txt
    root@ud224:/home/z/test# ls -l
    总用量 0
    -rw-r--r-- 1 root root 0 117 17:33 text01.txt
    root@ud224:/home/z/test# chmod 777 text01.txt
    root@ud224:/home/z/test# ls -l
    总用量 0
    -rwxrwxrwx 1 root root 0 117 17:33 text01.txt
    root@ud224:/home/z/test# chmod 765 text01.txt
    root@ud224:/home/z/test# ls -l
    总用量 0
    -rwxrw-r-x 1 root root 0 117 17:33 text01.txt
    root@ud224:/home/z/test# chmod 654 text01.txt
    root@ud224:/home/z/test# ls -l
    总用量 0
    -rw-r-xr-- 1 root root 0 117 17:33 text01.txt
    root@ud224:/home/z/test# chmod 1777 text01.txt
    root@ud224:/home/z/test# ls -l
    总用量 0
    -rwxrwxrwt 1 root root 0 117 17:33 text01.txt
    root@ud224:/home/z/test#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    chmod用字母符号可以 设置,添加,修改权限, 用数字的话,只能设置,相当于等号=,不能新增和移除

    例如:

    sudo chmod 777 text01.txt
    等效
    sudo chmod a=rwx text01.txt
    等效
    sudo chmod a=wxr text01.txt
    等效
    sudo chmod ugo=rwx text01.txt
    等效
    sudo chmod augo=rwx text01.txt
    等效
    sudo chmod uago=xrw text01.txt
    无视符号顺序
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12




    t 粘贴位 , Sticky Bit

    安装Ubuntu22.04时, 发现 /tmp , /var/tmp 等文件夹的属性是 drwxrwxrwt
    又发现 CentOS7 的 /tmpdrwxrwxrwt.

    在这里插入图片描述
    在这里插入图片描述

    经查
    drwxrwxrwt含义是:

    • 任何人都可以在此目录拥有写权限,但是不能删除别人拥有的文件
    • t是Sticky bit (粘贴位) 是Unix文件系统权限的一个旗标

    可以用 chmod 1777 设为 drwxrwxrwt

    chmod 1777 file
    
    • 1

    Sticky Bit

    Sticky Bit是Linux或Unix系统下的一种特殊的权限标识位,它可以赋予文件或者目录。而被赋予此权限位的文件或者目录可以实现只有Owner或者root才可以进行移动、删除或者重命名操作。

    Sticky Bit的起源
    Sticky Bit并不是一个新的概念,而事实上早在1974年它就被引入了Unix操作系统中了,而当时引入的目的则是不同的,是用于降低每次应用程序执行时的时间延迟,程序在执行时,首先要加载至内存之中,在用户使用之前会需要一些时间,Sticky Bit为了对此进行改善而引入,操作系统会检测是否设定了Sticky Bit,如果设定了,会将可执行程序的text段数据保存在交换空间(swap)中,通过swap的使用降低了反复使用情况下的时间延迟。而当下Sticky Bit主要应用在是否允许其他用户来删除Owner创建的文件或者目录。

    不同操作系统的实现
    可以看到本文示例的Linux操作系统下对于文件的Sticky Bit是无视的,而事实上不同的操作系统动作可能是不同的,一部分操作系统关于Sticky Bit的实现如下图所示:

  • 相关阅读:
    LigaAI X 猴子无限 | AIGC 火了,专业设计者的福音来了!
    牛客网刷题——JAVA
    Linux下程序(C语言)实现对文件的复制
    BioVendor sRAGE抗体解决方案
    Codeforces Round #811 A~F
    Maixll-Dock 数字识别
    测试开发基础——测试用例的设计
    设计模式之桥接模式
    为什么浏览器控制台(Console)运行JavaScript代码有时会出现“undefined”?
    【论文研读】-Defining the Ethereum Virtual Machine for Interactive Theorem Provers
  • 原文地址:https://blog.csdn.net/kfepiza/article/details/127734631