Linux系统中,每个文件和目录都有三种基本权限: - 读权限(r):查看文件内容或列出目录内容 - 写权限(w):修改文件内容或在目录中创建/删除文件 - 执行权限(x):运行文件或进入目录
权限可以用两种方式表示:
r-- 只读
-w- 只写
--x 只执行
rw- 读写
r-x 读和执行
-wx 写和执行
rwx 读、写和执行
0 (000) 无权限
1 (001) 执行
2 (010) 写
3 (011) 写和执行
4 (100) 读
5 (101) 读和执行
6 (110) 读和写
7 (111) 读、写和执行
每个文件/目录有三组权限,分别对应: 1. 所有者(user):文件/目录的创建者 2. 所属组(group):文件/目录所属的用户组 3. 其他用户(other):系统上的其他所有用户
使用ls -l
命令查看文件权限:
-rw-r--r-- 1 user group 1024 Jan 1 10:00 file.txt
drwxr-xr-x 2 user group 4096 Jan 1 10:00 directory/
第一个字符表示文件类型(-
为普通文件,d
为目录),后面9个字符表示三组权限。
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
读(r) | 查看文件内容 | 列出目录内容(需要同时有执行权限) |
写(w) | 修改文件内容 | 在目录中创建/删除文件(需要同时有执行权限) |
执行(x) | 作为程序执行 | 进入目录(访问目录中的内容) |
字母模式:
chmod u+x file.txt # 给所有者添加执行权限
chmod g-w file.txt # 从组中移除写权限
chmod o=rw file.txt # 设置其他用户的权限为读写
chmod a+x file.txt # 给所有用户添加执行权限
数字模式:
chmod 755 file.txt # 所有者rwx,组和其他r-x
chmod 644 file.txt # 所有者rw-,组和其他r--
chown user:group file.txt # 修改所有者和组
chown user file.txt # 只修改所有者
chgrp group file.txt # 只修改组
除了基本权限外,还有三个特殊权限位: 1. SUID (Set User ID):以文件所有者的身份执行 2. SGID (Set Group ID):以文件所属组的身份执行(对目录:新文件继承目录的组) 3. Sticky Bit:只有文件所有者才能删除/重命名(常用于/tmp目录)
设置特殊权限:
chmod u+s file # 设置SUID
chmod g+s dir # 设置SGID
chmod +t dir # 设置Sticky Bit
umask决定新建文件和目录的默认权限:
umask # 查看当前umask
umask 022 # 设置umask为022
计算方式:默认权限(文件666,目录777)减去umask值。
理解Linux文件权限是系统管理的基础,合理设置权限可以确保系统安全和数据保护。