Linux文件权限详解

Linux是一款功能强大的操作系统,其文件权限系统是确保文件和系统安全的关键组成部分。正确理解和配置文件权限对于维护系统安全至关重要。初次接触Linux时,在公司服务器上处理文件夹或文件时常常碰到Permission denied的提示。为了解决问题,我会直接使用一条简单而粗暴的命令sudo chmod -R 777。后来在另一家公司工作时,所有的服务器操作都经过审计,并且执行命令也需要遵守严格的规范。因此,我逐渐对Linux的文件权限有了更深的了解。本文将分享关于Linux文件权限系统的各个方面,包括权限位和常用命令。

linux-permission.jpg

Linux用户

在Linux系统中,存在两种类型的用户,分别是root用户和普通用户。它们在系统中具有不同的权限和角色,下面是它们的详细解释:

  • root用户: root是Linux系统中的超级用户或管理员。它拥有对系统的完全控制权限,可以执行系统中的所有操作,包括安装软件、修改配置文件、管理用户账户和进行系统维护等。root用户是最高权限的用户,可以访问系统中的所有文件和目录,并且可以对它们进行任何修改和操作。因此,使用root用户需要极高的谨慎性,因为任何误操作都可能导致系统的不可逆损坏。
  • 普通用户: 普通用户是系统中除root用户之外的所有用户。普通用户在系统中拥有受限的权限,通常只能访问自己的文件和一些系统资源。普通用户可以执行系统管理员授予的有限操作,如安装特定的软件、访问特定的目录以及执行特定的命令。普通用户通常无法对系统关键文件进行修改,这是为了确保系统的安全性和稳定性。

在命令行提示中,root用户是#,普通用户是$

_20231104212016.jpg

文件所有者、用户组

在Linux中,每个文件和目录都有一个所有者(user)和一个用户组(group)。当一个用户创建一个文件或目录时,它的所有者默认为创建者本身,而用户组通常是用户的默认用户组。

  • 文件所有者(user): 文件所有者是创建文件或目录的用户。该用户对文件有完全的控制权,可以修改文件内容、更改权限以及删除文件。文件所有者也可以是系统中的其他用户。
  • 用户组(group): 用户组是一组用户的集合,它们共享相同的权限。在Linux中,每个用户都属于一个主要用户组。当用户创建一个新文件或目录时,它的用户组通常会被设置为创建者的默认用户组。这样做的目的是让一组用户可以共享相同的文件访问权限。
  • 默认用户组: 默认用户组是用户在系统中的默认归属用户组。通常情况下,当用户被创建时,系统会自动为其创建一个与用户名相同的用户组,并将其设置为用户的默认用户组。这样,用户在创建文件或目录时,其用户组会自动设置为默认用户组。

文件权限基础知识

在Linux中,每个文件和目录都有与其相关联的权限。权限类型包括读取(Read)、写入(Write)和执行(Execute)。这些权限由一串字符来表示,通常是由10个字符组成,包括一个文件类型标识和9个权限位。权限位分为三组,分别代表文件所有者、同组用户和其他用户的权限。

  • 读取权限(Read):用二进制位表示为 100,对应数字为 4,对应字符为 r。
  • 写入权限(Write):用二进制位表示为 010,对应数字为 2,对应字符为 w。
  • 执行权限(Execute):用二进制位表示为 001,对应数字为 1,对应字符为 x。

比如:

diff 复制代码
-rw-rw-r-- 1 xiuji xiuji 165 Oct 26 21:39 docker-compose.yml

在上面的示例中,第一个字符-表示这是一个文件。接下来的三组rw-、rw-和r--分别代表文件所有者、同组用户和其他用户的权限。这表示文件所有者有读写权限,而同组用户和其他用户只有读取权限。

这些字符的含义如下图所示:

linux.png

常用命令

  1. chmod:更改文件或目录权限

chmod命令允许用户修改文件或目录的权限。它可以接受不同的参数和选项来授予或撤销文件或目录的读取、写入和执行权限。chmod命令的一般格式如下所示:

bash 复制代码
chmod [选项] 模式 文件名
  • 选项: chmod命令可以与不同的选项一起使用,常见的选项包括递归修改权限(-R)。
  • 模式: 模式用于指定要授予或撤销的权限。可以使用符号模式(如u+r,g-w,o+x)或数字模式(如777,644)来表示权限。
  • 文件名: 文件名是您想要更改权限的文件或目录的名称。

符号模式:

部分 选项 含义
操作对象 u 文件所有者
操作对象 g 文件所属用户组
操作对象 o 其他用户
操作对象 a 所有用户,系统默认值
操作符号 + 添加摸个权限
操作符号 - 取消某个权限
操作符号 = 赋予给定权限并取消原有权限
权限 r 读取权限,数字4
权限 w 写入权限 数字2
权限 r 执行权限 数组1

数字模式:

三位权限数字组成,第一位标识文件所有者权限,第二位标识文件所属用户组权限,第三位表示其他用户

示例:

更改docker-compose.yml文件的权限,给文件所有者读取、写入权限,给用户组读取权限,给其他用户读取、写入和执行的权限

bash 复制代码
chmod u+rw,g+r,o+rwx docker-compose.yml

等同于

bash 复制代码
chmod 647 docker-compose.yml
  1. chown:更改文件或目录所有者和用户组

chown命令允许用户改变文件或目录的所有者。它可以接受不同的参数和选项来更改文件或目录的所有者。chown命令的一般格式如下所示:

bash 复制代码
chown [选项] 新所有者 文件名
  • 选项: chown命令可以与不同的选项一起使用,常见的选项包括递归地更改所有文件的所有者(-R))。
  • 新所有者: 新所有者是您想要指定为文件或目录所有者的用户或用户组。
  • 文件名: 文件名是您想要更改所有者的文件或目录的名称。

示例:

将docker-compose.yml 的用户所有者改为xiuji

bash 复制代码
chown xiuji docker-compose.yml

将docker-compose.yml 的用户组改为xiuji

bash 复制代码
chown :xiuji docker-compose.yml

_20231104225503.jpg

  1. chgrp: 更改文件或目录所属组

chgrp命令允许用户更改文件或目录所属的用户组。它可以接受不同的参数和选项来更改文件或目录的用户组。chgrp命令的一般格式如下所示:

bash 复制代码
chgrp [选项] 新用户组 文件名
  • 选项: chgrp命令可以与不同的选项一起使用,常见的选项包括递归地更改所有文件的用户组(-R)以及在更改前显示变更信息(-v)。
  • 新用户组: 新用户组是您想要指定为文件或目录所属组的用户组。
  • 文件名: 文件名是您想要更改用户组的文件或目录的名称。

示例:

将docker-compose.yml 的目录所属组改为root

bash 复制代码
chgrp root docker-compose.yml

_20231104230100.jpg

结语

Linux文件权限系统是保护文件和目录安全的重要工具。了解和正确配置文件权限是维护系统安全性的关键一步。希望本文能够帮助您更好地理解Linux文件权限系统的工作原理。

相关推荐
七夜zippoe5 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy6486 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满6 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠6 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9037 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技8 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀8 小时前
Linux环境变量
linux·运维·服务器
zzzsde8 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º10 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~10 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化