前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux文件权限详解

Linux文件权限详解

作者头像
修己xj
发布2023-11-05 13:43:06
3490
发布2023-11-05 13:43:06
举报
文章被收录于专栏:修己xj

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。

比如:

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

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

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

linux.png

常用命令

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

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

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

符号模式:

部分

选项

含义

操作对象

u

文件所有者

操作对象

g

文件所属用户组

操作对象

o

其他用户

操作对象

a

所有用户,系统默认值

操作符号

+

添加摸个权限

操作符号

-

取消某个权限

操作符号

=

赋予给定权限并取消原有权限

权限

r

读取权限,数字4

权限

w

写入权限 数字2

权限

r

执行权限 数组1

数字模式:

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

示例:

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

代码语言:javascript
复制
chmod u+rw,g+r,o+rwx docker-compose.yml

等同于

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

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

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

示例:

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

代码语言:javascript
复制
chown xiuji docker-compose.yml

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

代码语言:javascript
复制
chown :xiuji docker-compose.yml

_20231104225503.jpg

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

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

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

示例:

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

代码语言:javascript
复制
chgrp root docker-compose.yml

_20231104230100.jpg

结语

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 修己xj 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux用户
  • 文件所有者、用户组
  • 文件权限基础知识
  • 常用命令
  • 结语
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档