Linux是一款功能强大的操作系统,其文件权限系统是确保文件和系统安全的关键组成部分。正确理解和配置文件权限对于维护系统安全至关重要。初次接触Linux时,在公司服务器上处理文件夹或文件时常常碰到Permission denied
的提示。为了解决问题,我会直接使用一条简单而粗暴的命令sudo chmod -R 777
。后来在另一家公司工作时,所有的服务器操作都经过审计,并且执行命令也需要遵守严格的规范。因此,我逐渐对Linux的文件权限有了更深的了解。本文将分享关于Linux文件权限系统的各个方面,包括权限位和常用命令。
linux-permission.jpg
在Linux系统中,存在两种类型的用户,分别是root用户和普通用户。它们在系统中具有不同的权限和角色,下面是它们的详细解释:
在命令行提示中,root用户是#
,普通用户是$
_20231104212016.jpg
在Linux中,每个文件和目录都有一个所有者(user)和一个用户组(group)。当一个用户创建一个文件或目录时,它的所有者默认为创建者本身,而用户组通常是用户的默认用户组。
在Linux中,每个文件和目录都有与其相关联的权限。权限类型包括读取(Read)、写入(Write)和执行(Execute)。这些权限由一串字符来表示,通常是由10个字符组成,包括一个文件类型标识和9个权限位。权限位分为三组,分别代表文件所有者、同组用户和其他用户的权限。
比如:
-rw-rw-r-- 1 xiuji xiuji 165 Oct 26 21:39 docker-compose.yml
在上面的示例中,第一个字符-表示这是一个文件。接下来的三组rw-、rw-和r--分别代表文件所有者、同组用户和其他用户的权限。这表示文件所有者有读写权限,而同组用户和其他用户只有读取权限。
这些字符的含义如下图所示:
linux.png
chmod命令允许用户修改文件或目录的权限。它可以接受不同的参数和选项来授予或撤销文件或目录的读取、写入和执行权限。chmod命令的一般格式如下所示:
chmod [选项] 模式 文件名
符号模式:
部分 | 选项 | 含义 |
---|---|---|
操作对象 | u | 文件所有者 |
操作对象 | g | 文件所属用户组 |
操作对象 | o | 其他用户 |
操作对象 | a | 所有用户,系统默认值 |
操作符号 | + | 添加摸个权限 |
操作符号 | - | 取消某个权限 |
操作符号 | = | 赋予给定权限并取消原有权限 |
权限 | r | 读取权限,数字4 |
权限 | w | 写入权限 数字2 |
权限 | r | 执行权限 数组1 |
数字模式:
三位权限数字组成,第一位标识文件所有者权限,第二位标识文件所属用户组权限,第三位表示其他用户
示例:
更改docker-compose.yml文件的权限,给文件所有者读取、写入权限,给用户组读取权限,给其他用户读取、写入和执行的权限
chmod u+rw,g+r,o+rwx docker-compose.yml
等同于
chmod 647 docker-compose.yml
chown命令允许用户改变文件或目录的所有者。它可以接受不同的参数和选项来更改文件或目录的所有者。chown命令的一般格式如下所示:
chown [选项] 新所有者 文件名
示例:
将docker-compose.yml 的用户所有者改为xiuji
chown xiuji docker-compose.yml
将docker-compose.yml 的用户组改为xiuji
chown :xiuji docker-compose.yml
_20231104225503.jpg
chgrp命令允许用户更改文件或目录所属的用户组。它可以接受不同的参数和选项来更改文件或目录的用户组。chgrp命令的一般格式如下所示:
chgrp [选项] 新用户组 文件名
示例:
将docker-compose.yml 的目录所属组改为root
chgrp root docker-compose.yml
_20231104230100.jpg
Linux文件权限系统是保护文件和目录安全的重要工具。了解和正确配置文件权限是维护系统安全性的关键一步。希望本文能够帮助您更好地理解Linux文件权限系统的工作原理。