一、权限体系
1、文件操作权限
- 读权限(r、4):允许用户读取文件内容,查看目录中的文件列表。
- 写权限(w、2):允许用户修改文件内容,在目录中创建、删除或重命名文件。
- 执行权限(x、1):允许用户执行该文件,或允许用户进入该目录。
2、文件用户属性
- 所属者(u):文件或目录的创建者,拥有对文件或目录的最高权限。
- 所属组(g):文件或目录所在的用户组,组内所有用户都会集成该组对文件或目录的权限。
- 其他用户(o):既不是文件所有者,也不是所属组成员的其他所有用户。
3、权限描述
字符表示 | 八进制表示 | 说明 |
--- | 0 | 无任何权限 |
--x | 1 | 可执行 |
-w- | 2 | 可写 |
-wx | 3 | 可写可执行 |
r-- | 4 | 可读 |
r-x | 5 | 可读可执行 |
rw- | 6 | 可读可写 |
rwx | 7 | 可读可写可执行 |
rw-r----- | 640 | 属主可读写,属组可读,其他无任何权限 |
rw-r--r-- | 644 | 属主可读写,属组可读,其他用户可读 |
rwx-r-xr-x | 755 | 属主可读写可执行,属组可读可执行,其他用户可读可执行 |
二、文件权限操作
1、chmod文件权限修改
- chmod 750 1.txt:设置文件权限为755(属主可读可写可执行,组内其他用户可读可执行,组外其他用户不可读不可写不可执行)
- chmod u+x 1.txt:给文件属主添加可执行权限
- chmod -R 755 dir1:递归修改dir1(包含其中的所有文件)权限为755
常用操作动作:+(增加权限)、-(删除权限)、=(覆盖保留权限)
- u+r:属组增加读权限
- g-x:属组取消执行权限
- ug=rx:属主和属组设置为可读可执行
- o=:其他用户无任何权限
- a=rwx:所有用户可读可写可执行
- u+r,g-x:同时指定相关权限
2、chown文件属性修改
- chown user1:group1 1.txt:修改文件的属主为user1,属组为group1
- chown -R user1:group1 dir1:递归修改dir1(包含其中的所有文件)的属主为user1,属组为group1
- chown user1 1.txt:修改文件的属主为user1
- chown aaa 1.txt:修改文件的属主和属组均为aaa
- chown 1001 1.txt:修改文件的属主为用户id是1001的用户
3、umask默认权限
umask是用户文件创建掩码,它是一个八进制的数值,决定了在创建文件或者目录时哪些权限位将被屏蔽(即为不允许)。通过umask可设置默认权限。
Linux系统中,文件和目录的默认权限为:
- 文件:-rw-rw-rw-(即666、任何用户都可读可写不可执行)
- 目录:drwxrwxrwx(即777,任何用户可读可写可执行)
umask通常为022,其意味着:
- 新创建的文件权限:666-022=644(属主可读可写,属组及其他用户只可读)
- 新创建的目录权限:777-022=755(属主可读可写可执行,属组及其他用户可读可执行)
修改方式:umask 123
4、特殊权限
SUID(用户身份临时提权):设置在可执行文件上,临时获得该文件所有者权限。文件所有者权限位的x被替代成s(小写),若文件本身没有可执行权限,则为S(大写),如:-rwsr-xr-x。八进制表示为4,放在普通权限数字前,如:4755。
SGID(组身份临时继承):设置在可执行文件上,临时获得该文件所属组权限。设置在目录上,在该目录下新建目录或文件是,会自动继承目录的所属组。文件或目录的所属组权限位的x被替换为s(小写),若文件或目录本身没有可执行权限,则为S(大写),如:-rwxr-sr-x。八进制表示为2,放在普通权限数字前,如:2755。
SBIT(粘滞位):仅对目录生效,限制目录内的文件删除权限,只有文件属主、目录属主及root用户能删除文件。目录其他用户权限为x被替换为t(小写),若目录本身没有可执行权限,则为T(大写),如:drwxrwxrwt。八进制表示为1,放在普通权限数字前,如:1777。
命令 | 说明 |
chmod u+s /usr/bin/test | 给文件添加 SUID(u+s 表示 “所有者 + SUID”) |
chmod g+s /tmp/share | 给目录添加 SGID(g+s 表示 “所属组 + SGID”) |
chmod o+t /tmp | 给目录添加 SBIT(o+t 表示 “其他用户 + SBIT”) |
chmod 4755 /usr/bin/test | 4(SUID)+ 755(普通权限)= 4755 |
chmod 2755 /tmp/share | 2(SGID)+ 755(普通权限)= 2755 |
chmod 1777 /tmp | 1(SBIT)+ 777(普通权限)= 1777 |
5、特殊属性
除了SUID/SGID/SBIT,Linux还支持通过chattr配置 文件属性权限,这类权限优先级高于普通权限,常用于保护核心文件(如系统配置文件)
- a:只允许追加内容,不能删除或修改
- i:设置文件为不可修改,无法删除、重命名、修改内容
- u:当文件被删除时,其内容仍保留在磁盘上,可通过工具恢复,直到空间被其他文件覆盖
- 查看属性:lsattr /etc/shadow
- 添加属性:chattr +i /etc/1.txt(需 root 权限)
- 取消属性:chattr -i /etc/1.txt(需 root 权限)