在 Linux 中,文件和目录权限是控制对其访问和操作的重要机制。每个文件和目录都有一组权限,用于定义不同用户对其执行读取、写入和执行等操作的权限级别。以下是对 Linux 文件和目录权限的详细讲解,并举例说明:
1. 文件权限:
- 文件权限包括读取(r)、写入(w)和执行(x)三种权限。
- 读取权限(r)允许用户查看文件的内容。
- 写入权限(w)允许用户修改文件的内容或在文件中创建新内容。
- 执行权限(x)允许用户以可执行文件的方式运行文件。
2. 目录权限:
- 目录权限的含义略有不同。读取权限(r)允许用户查看目录中的文件列表。写入权限(w)允许用户在目录中创建、删除或重命名文件。执行权限(x)允许用户进入目录。
3. 权限表示方式:
- 权限通过三个字符表示,每个字符表示一组权限:所有者权限、所属组权限和其他用户权限。
- 'r' 表示读取权限,'w' 表示写入权限,'x' 表示执行权限。
- '-' 表示没有相应的权限。
4. 更改文件和目录权限:
- 使用 chmod 命令可以更改文件和目录的权限。
- 使用数字表示法:每个权限字符分别对应一个数字,r=4,w=2,x=1。例如,权限为 rwxr-xr-- 可以用数字表示为 754。
- 使用符号表示法:+ 表示添加权限,- 表示移除权限,= 表示设置权限。例如,chmod u+x file.txt 表示给文件 file.txt 的所有者添加执行权限。
以下是一些具体的示例:
1. 更改文件权限示例:
- 给文件添加可执行权限:chmod +x script.sh
- 移除其他用户的写入权限:chmod o-w file.txt
- 设置文件权限为读取和执行,而其他权限为空:chmod u+rx,g=,o= file.txt
2. 更改目录权限示例:
- 给目录添加读取和执行权限:chmod +rx directory
- 移除所属组的写入权限:chmod g-w directory
- 设置目录权限为只有所有者有完全权限,其他用户无任何权限:chmod u=rwx,g=,o= directory (u
表示文件的所有者(user)。它用来指定对文件所有者的权限进行修改。)
5.查看文件和目录权限:
使用 ls 命令可以查看文件和目录的权限。
通过 ls -l 命令可以以长格式显示文件和目录的详细信息,其中包括权限、所有者、所属组等信息。
6.文件所有者和所属组:
每个文件和目录都有一个所有者和一个所属组。
所有者是创建文件或目录的用户,而所属组是与所有者相关联的用户组。
使用 chown 命令可以更改文件和目录的所有者,使用 chgrp 命令可以更改所属组。
7.特殊权限:
除了基本的读取、写入和执行权限,还有一些特殊权限。
SUID(Set User ID)权限:允许用户以文件所有者的权限执行文件,常用于特定程序的执行。
SGID(Set Group ID)权限:允许用户以文件所属组的权限执行文件,常用于共享文件夹。
S位(Sticky Bit)权限:用于目录,使得只有文件所有者可以删除或移动自己的文件。
示例说明:
- 更改文件的权限为只有所有者可读写,其他用户无权限:chmod 600 file.txt
- 更改目录的权限为所有用户可读,但只有所有者和所属组可写:chmod 775 directory
- 更改文件所有者为 user1:chown user1 file.txt
- 更改目录所属组为 group1:chgrp group1 directory
8.文件和目录权限的数字表示法:
- 文件和目录权限也可以使用数字表示法来设置和查看。
- 每个权限对应一个数字:r(读取)= 4,w(写入)= 2,x(执行)= 1。
- 将所有者、所属组和其他用户的权限数字相加,即可得到对应的数字表示权限。
9.默认权限和掩码:
- Linux 中,新创建的文件和目录会自动继承默认权限。
- 默认权限由系统的掩码(umask)确定,它指定了新文件和目录的默认权限。
- 可以使用 umask 命令查看和更改默认权限。
10.ACL(Access Control List)访问控制列表:
- ACL 是一种扩展权限机制,允许更细粒度地控制文件和目录的访问权限。
- 使用 ACL,可以给除所有者和所属组之外的其他用户分配特定权限。
- setfacl 和 getfacl 是用于设置和获取 ACL 的命令。
示例说明:
-
- 将文件的权限设置为读取和执行权限,且所有者有写入权限,使用数字表示法:chmod 754 file.txt
- 将目录的权限设置为读取和执行权限,所有者和所属组有写入权限,其他用户无权限,使用数字表示法:chmod 770 directory
- 查看文件和目录的详细权限信息,使用长格式显示:ls -l file.txt
- 查看默认权限掩码:umask
- 设置默认权限掩码为 022:umask 022
- 添加 ACL 权限,允许用户 bob 读取和写入文件:setfacl -m u:bob:rw file.txt