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的二进制为 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 | --- | 无 |
所以
- 只读 是
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 的 /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的实现如下图所示: