在 Linux 系统中,文件和目录的权限控制是基于访问控制列表(ACL)的基础上进行管理的,每个文件和目录都有一组权限设置,决定了不同用户如何访问和操作文件。文件权限通过 10 个字符表示,其中包含文件类型以及不同用户(所有者、组、其他用户)的权限。
文件权限表示格式
Linux 文件权限通常通过 ls -l 命令显示,结果类似以下格式:
-rwxr-xr-x 1 user group 4096 Nov 6 14:30 examplefile
这行输出表示文件 examplefile 的权限和其他信息。它的详细解释如下:
-rwxr-xr-x 1 user group 4096 Nov 6 14:30 examplefile
第1个字符(文件类型):
-:普通文件
d:目录
l:符号链接
c:字符设备文件
b:块设备文件
s:套接字文件
p:命名管道文件(FIFO)
第2至10个字符(权限信息):这部分被分成三组,每组三个字符,分别代表文件的 所有者、所属组 和 其他用户 的权限。
权限字符含义:
每个权限由三个字符组成:
r(read):读取权限,允许查看文件内容或列出目录中的文件。
w(write):写入权限,允许修改文件内容或在目录中创建、删除文件。
x(execute):执行权限,允许执行文件(如果是可执行文件),或进入该目录。
如果某个权限没有被授予,则用 - 替代:
rwx:完全权限(可读、可写、可执行)
r-x:只读和可执行
rw-:可读和可写
r--:只读
---:无任何权限
示例:
假设你看到以下输出:
-rwxr-xr-x 1 user group 4096 Nov 6 14:30 examplefile
所有者权限(rwx):
r(read):文件所有者可以读取文件。
w(write):文件所有者可以修改文件。
x(execute):文件所有者可以执行该文件。
组权限(r-x):
r(read):所属组的用户可以读取文件。
-(没有写权限):所属组的用户不能修改文件。
x(execute):所属组的用户可以执行文件。
其他用户权限(r-x):
r(read):其他所有用户可以读取文件。
-(没有写权限):其他用户不能修改文件。
x(execute):其他用户可以执行文件。
数字权限表示法(八进制表示法)
Linux 还支持使用数字来表示权限。每个权限可以被映射为一个数字:
r = 4
w = 2
x = 1
- = 0
每组三个字符的权限可以通过将它们的数值相加来表示。例如:
rwx = 4 + 2 + 1 = 7
rw- = 4 + 2 + 0 = 6
r-x = 4 + 0 + 1 = 5
r-- = 4 + 0 + 0 = 4
因此,rwxr-xr-x 会被表示为 755,而 rw-r--r-- 会被表示为 644。
示例数字表示:
chmod 755 examplefile
这个命令给文件 examplefile 设置权限 rwxr-xr-x(即所有者有读、写、执行权限,组和其他用户只有读和执行权限)。
用户类别:
文件权限是基于三个不同的用户类别来设置的:
1. 所有者(Owner):文件的所有者。一般是文件的创建者,或者在文件所有权转移时指定的用户。
2. 组(Group):与文件关联的用户组。文件的所属组的成员有一组特定的权限。
3. 其他用户(Others):除所有者和组之外的所有用户。
常用的权限操作命令:
1. 查看文件权限:
ls -l filename
2. 修改文件权限: 使用 chmod 命令来更改文件或目录的权限。
使用数字表示法:
chmod 755 filename # 所有者可读写执行,组和其他用户可读和执行
使用符号表示法:
chmod u+x filename # 给文件所有者添加执行权限
chmod go-w filename # 从组和其他用户移除写权限
3. 修改文件所有者和组: 使用 chown 命令来修改文件的所有者和用户组。
chown user:group filename # 将文件的所有者更改为 user,所属组更改为 group
4. 设置特殊权限:
Setuid(s):使程序以文件所有者的权限执行。
Setgid(s):使程序以文件所属组的权限执行,或者在目录中设置,创建的新文件将继承该目录的组。
Sticky bit(t):仅允许文件所有者删除文件,通常用于目录(如 /tmp)。
权限的特殊设置:
Setuid(Set User ID): 当一个可执行文件设置了 setuid 权限时,执行该文件的用户将暂时获得文件所有者的权限。例如,/bin/passwd 设置了 setuid,普通用户可以修改自己的密码,但文件是由 root 所有,执行时以 root 权限运行。
Setgid(Set Group ID):
对于文件,设置 setgid 权限会使该文件以文件所属组的身份执行。
对于目录,设置 setgid 会使该目录中新创建的文件和目录继承该目录的组,而不是创建者的组。
Sticky Bit: 通常用于目录,如 /tmp 目录。设置了 Sticky Bit 的目录,文件只能由文件所有者、目录所有者或 root 删除。这防止了其他用户删除或修改他们不拥有的文件。
总结:
Linux 文件权限系统为用户提供了灵活的访问控制机制,通过设置不同的权限组合,用户可以精确控制文件和目录的访问权限。了解和合理配置文件权限对于系统安全至关重要。
文件权限表示格式
Linux 文件权限通常通过 ls -l 命令显示,结果类似以下格式:
-rwxr-xr-x 1 user group 4096 Nov 6 14:30 examplefile
这行输出表示文件 examplefile 的权限和其他信息。它的详细解释如下:
-rwxr-xr-x 1 user group 4096 Nov 6 14:30 examplefile
第1个字符(文件类型):
-:普通文件
d:目录
l:符号链接
c:字符设备文件
b:块设备文件
s:套接字文件
p:命名管道文件(FIFO)
第2至10个字符(权限信息):这部分被分成三组,每组三个字符,分别代表文件的 所有者、所属组 和 其他用户 的权限。
权限字符含义:
每个权限由三个字符组成:
r(read):读取权限,允许查看文件内容或列出目录中的文件。
w(write):写入权限,允许修改文件内容或在目录中创建、删除文件。
x(execute):执行权限,允许执行文件(如果是可执行文件),或进入该目录。
如果某个权限没有被授予,则用 - 替代:
rwx:完全权限(可读、可写、可执行)
r-x:只读和可执行
rw-:可读和可写
r--:只读
---:无任何权限
示例:
假设你看到以下输出:
-rwxr-xr-x 1 user group 4096 Nov 6 14:30 examplefile
所有者权限(rwx):
r(read):文件所有者可以读取文件。
w(write):文件所有者可以修改文件。
x(execute):文件所有者可以执行该文件。
组权限(r-x):
r(read):所属组的用户可以读取文件。
-(没有写权限):所属组的用户不能修改文件。
x(execute):所属组的用户可以执行文件。
其他用户权限(r-x):
r(read):其他所有用户可以读取文件。
-(没有写权限):其他用户不能修改文件。
x(execute):其他用户可以执行文件。
数字权限表示法(八进制表示法)
Linux 还支持使用数字来表示权限。每个权限可以被映射为一个数字:
r = 4
w = 2
x = 1
- = 0
每组三个字符的权限可以通过将它们的数值相加来表示。例如:
rwx = 4 + 2 + 1 = 7
rw- = 4 + 2 + 0 = 6
r-x = 4 + 0 + 1 = 5
r-- = 4 + 0 + 0 = 4
因此,rwxr-xr-x 会被表示为 755,而 rw-r--r-- 会被表示为 644。
示例数字表示:
chmod 755 examplefile
这个命令给文件 examplefile 设置权限 rwxr-xr-x(即所有者有读、写、执行权限,组和其他用户只有读和执行权限)。
用户类别:
文件权限是基于三个不同的用户类别来设置的:
1. 所有者(Owner):文件的所有者。一般是文件的创建者,或者在文件所有权转移时指定的用户。
2. 组(Group):与文件关联的用户组。文件的所属组的成员有一组特定的权限。
3. 其他用户(Others):除所有者和组之外的所有用户。
常用的权限操作命令:
1. 查看文件权限:
ls -l filename
2. 修改文件权限: 使用 chmod 命令来更改文件或目录的权限。
使用数字表示法:
chmod 755 filename # 所有者可读写执行,组和其他用户可读和执行
使用符号表示法:
chmod u+x filename # 给文件所有者添加执行权限
chmod go-w filename # 从组和其他用户移除写权限
3. 修改文件所有者和组: 使用 chown 命令来修改文件的所有者和用户组。
chown user:group filename # 将文件的所有者更改为 user,所属组更改为 group
4. 设置特殊权限:
Setuid(s):使程序以文件所有者的权限执行。
Setgid(s):使程序以文件所属组的权限执行,或者在目录中设置,创建的新文件将继承该目录的组。
Sticky bit(t):仅允许文件所有者删除文件,通常用于目录(如 /tmp)。
权限的特殊设置:
Setuid(Set User ID): 当一个可执行文件设置了 setuid 权限时,执行该文件的用户将暂时获得文件所有者的权限。例如,/bin/passwd 设置了 setuid,普通用户可以修改自己的密码,但文件是由 root 所有,执行时以 root 权限运行。
Setgid(Set Group ID):
对于文件,设置 setgid 权限会使该文件以文件所属组的身份执行。
对于目录,设置 setgid 会使该目录中新创建的文件和目录继承该目录的组,而不是创建者的组。
Sticky Bit: 通常用于目录,如 /tmp 目录。设置了 Sticky Bit 的目录,文件只能由文件所有者、目录所有者或 root 删除。这防止了其他用户删除或修改他们不拥有的文件。
总结:
Linux 文件权限系统为用户提供了灵活的访问控制机制,通过设置不同的权限组合,用户可以精确控制文件和目录的访问权限。了解和合理配置文件权限对于系统安全至关重要。