Linux的文件属性包含文件类型和文件权限
文件类型
-表示文件d表示文件夹l表示软链接文件权限
r 读权限w 写权限x 执行权限文件所属
u代表所属用户g代表所属组o代表其它用户
chmod 命令可以修改用户权限
chmod用字母符号可以 设置,添加,修改权限, 用数字的话,只能设置,相当于等号=,不能新增和移除
添加加+,移除减-,设置等=
+ 加号是增加指定权限- 减号是移除指定权限= 等号是设置权限u属主 , g属组 , o其它 , a所有
u 代表属主, 所属用户, userg 代表属组, 所属组, groupo 代表其它用户, othera 的代表所有, 即是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
移除所有用户的可执行权限
sudo chmod ugo-x text01.txt
等效
sudo chmod a-x text01.txt
移除其它用户的写(修改)权限
sudo chmod o-w text01.txt
用等号设置权限
sudo chmod a=rwx text01.txt
等效
sudo chmod ugo=rwx text01.txt
等效
sudo chmod 777 text01.txt
,逗号分隔多个权限设置, 不能有空格例如
sudo chmod u=rwx,g=rw,o=r text01.txt
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
chmod用字母符号可以 设置,添加,修改权限, 用数字的话,只能设置,相当于等号=,不能新增和移除
十进制0到7的二进制为 000到111 , 刚好3位, 可表示 ---到rwx
| 十进制 | 二进制 | rwx | 权限 |
|---|---|---|---|
| 7 | 111 | rwx | 读 + 写 + 执行 |
| 6 | 110 | rw- | 读 + 写 |
| 5 | 101 | r-x | 读 + 执行 |
| 4 | 100 | r-- | 只读 |
| 3 | 11 | -wx | 写 + 执行 |
| 2 | 10 | -w- | 只写 |
| 1 | 1 | --x | 只执行 |
| 0 | 0 | --- | 无 |
所以
456 可用于文件夹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#
=,不能新增和移除例如:
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
无视符号顺序
t 粘贴位 , Sticky Bit安装Ubuntu22.04时, 发现 /tmp , /var/tmp 等文件夹的属性是 drwxrwxrwt
又发现 CentOS7 的 /tmp 是 drwxrwxrwt.


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