一、chmod 简介
chmod
命令是 Linux 系统中一个非常重要的命令,允许用户精确控制文件和目录的访问权限,保护系统安全和数据机密性。
二、chmod 基本语法
chmod [选项] mode file
-
mode
:权限模式,用数字或符号表示。 -
file
:要改变权限的文件或目录。
数字模式:rwx 分别对应数字 421
- 7 表示 rwx。
- 777 表示 rwxrwxrwx,也就是所有人可读、可写、可执行。
符号模式:
-
u
:所有者(user)。 -
g
:所属组(group)。 -
o
:其他用户(others)。 -
a
:所有用户(all)。 -
+
:添加权限。 -
-
:移除权限。 -
=
:设置权限。
一些常用的 chmod
命令选项包括:
- -R:递归地更改文件或目录的权限。
- --reference=referencefile:根据
referencefile
的权限来设置指定文件的权限。
三、chmod 用法示例
示例 1. 给文件所有者增加执行权限
chmod u+x file.txt
示例 2. 给文件所属组增加写权限
chmod g+w file.txt
示例 3. 移除其他用户的读权限
chmod o-r file.txt
示例 4. 给所有用户设置读权限
chmod a+r file.txt
示例 5
设置文件权限为只有所有者有读、写、执行权限
chmod 700 file.txt
示例 6
设置文件权限为所有者有读、写、执行权限,所属组和其他用户有读和执行权限
chmod 755 file.txt
示例 7
设置文件权限为所有者有读、写权限,所属组和其他用户没有任何权限
chmod 640 file.txt
示例 8
设置目录权限,使得所有者有完全权限,所属组和其他用户只能进入目录(不能列出目录内容或创建文件)
chmod 711 directory
四、chmod 修改文件的特殊权限
文件权限
查看文件权限
soulio@ubuntu:~/实验/chmod$ ls -l
total 8
-rwsrwSr-T 1 soulio soulio 29 Sep 12 05:41 hello.sh*
drwxrwxr-x 2 soulio soulio 4096 Sep 12 05:48 文件夹/
权限标志位:
- 第 1 位是文件类型:l 表示链接,d 表示文件,-表示普通文件。
- 第 234 位:表示属主的读、写、执行权限。
- 第 456 位:表示属组的读、写、执行权限。
- 第 789 位:表示 other 的读、写、执行权限。
普通权限的标志:
- r 可读
- w 可写
- x 可执行
特殊权限的标志:例如 passwd 程序
-rwsr-xr-x 1 root root 59976 Feb 6 2024 /bin/passwd*
了解特殊权限
Setuid (SUID) :
- 概念:SUID 允许用户以文件所有者的权限执行文件。
- 标志:所有者执行位显示为
s
(有执行权限)或S
(无执行权限)。 - 用途:用于允许普通用户执行需要超级用户权限的操作,如
passwd
命令。
Setgid (SGID) :
- 概念:SGID 让执行者获得文件所属组的权限,或目录内新文件继承目录组所有权。
- 标志:所属组执行位显示为
s
(有执行权限)或S
(无执行权限)。 - 用途:在可执行文件上,用于共享程序;在目录上,用于确保新文件属于目录的组,便于组内共享。
Sticky Bit:
- 概念:Sticky Bit 限制用户删除或重命名非自有文件,通常用于公共目录。
- 标志:其他用户执行位显示为
t
(有执行权限)或T
(无执行权限)。 - 用途:用于公共可写目录,如
/tmp
,防止用户互相删除对方文件,提高系统安全性。
示例 9. 设置 setuid 权限
文件始终以属主身份运行,经典案例:passwd
chmod u+s executable
示例 10. 设置 setgid 权限
使得在目录中创建的文件继承目录的所属组,而不是创建者的所属组
chmod g+s directory
示例 11. 设置 sticky bit 权限
使得只有文件所有者可以删除或重命名文件,即使其他人有写权限
chmod +t directory
示例 12. 移除所有特殊权限
同时移除 setuid、setgid 和 sticky bit 权限
chmod u-s,g-s,o-t directory
本文共 823 个字数,平均阅读时长 ≈ 3分钟
评论 (0)