chmod,rwx Linux文件属性笔记221107

300 阅读3分钟

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

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

文件权限

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

文件所属

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

在这里插入图片描述

chmod 命令可以修改用户权限

  • 可以通过 r w x 字母修改
  • 也可以用 3位0到7 的数字修改

chmod 用 r w x 字母修改文件权限

  • + 加号是增加指定权限
  • - 减号是移除指定权限
  • = 等号是设置权限
  • u 代表属主
  • g 代表属组
  • o 代表其它用户
  • a 的代表所有, 即是ugo

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

sudo chmod ugo+r text01.txt
等效
sudo chmod a+r text01.txt

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

sudo chmod ugo-x text01.txt
等效
sudo chmod a-x text01.txt

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

sudo chmod o-w text01.txt

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

十进制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 11月  7 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 11月  7 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 11月  7 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 11月  7 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 11月  7 17:33 text01.txt
root@ud224:/home/z/test#




t 粘贴位 , Sticky Bit

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

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

经查 drwxrwxrwt含义是:

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

可以用 chmod 1777 设为 drwxrwxrwt

chmod 1777 file

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的实现如下图所示: