首页 > 系统相关 >Linux文件权限详解

Linux文件权限详解

时间:2023-11-04 23:32:13浏览次数:36  
标签:文件 用户组 用户 所有者 详解 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。

比如:

-rw-rw-r-- 1 xiuji xiuji 165 Oct 26 21:39 docker-compose.yml

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

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

linux.png

常用命令

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

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

chmod [选项] 模式 文件名
  • 选项: chmod命令可以与不同的选项一起使用,常见的选项包括递归修改权限(-R)。

  • 模式: 模式用于指定要授予或撤销的权限。可以使用符号模式(如u+r,g-w,o+x)或数字模式(如777,644)来表示权限。

  • 文件名: 文件名是您想要更改权限的文件或目录的名称。

符号模式:

部分 选项 含义
操作对象 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
  1. chown:更改文件或目录所有者和用户组

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

chown [选项] 新所有者 文件名
  • 选项: chown命令可以与不同的选项一起使用,常见的选项包括递归地更改所有文件的所有者(-R))。

  • 新所有者: 新所有者是您想要指定为文件或目录所有者的用户或用户组。

  • 文件名: 文件名是您想要更改所有者的文件或目录的名称。

示例:

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

chown xiuji docker-compose.yml

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

chown :xiuji docker-compose.yml

_20231104225503.jpg

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

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

chgrp [选项] 新用户组 文件名
  • 选项: chgrp命令可以与不同的选项一起使用,常见的选项包括递归地更改所有文件的用户组(-R)以及在更改前显示变更信息(-v)。

  • 新用户组: 新用户组是您想要指定为文件或目录所属组的用户组。

  • 文件名: 文件名是您想要更改用户组的文件或目录的名称。

示例:

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

chgrp root docker-compose.yml

_20231104230100.jpg

结语

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

标签:文件,用户组,用户,所有者,详解,Linux,权限,目录
From: https://blog.51cto.com/xiuji/8186221

相关文章

  • linux下快速创建文件占用磁盘
    在测试中有时间需要创造一些场景,比如服务器或主机中莫磁盘空间不足的情况,目前磁盘空间都很大,一般已T为单位,想要短时间把磁盘空间耗尽也不是件容易的事,想象下你需要耗尽10T空间的资源,需要多长时间?实践中我尝试了多种方式:tee创建文件占用空间catusr1.txt|tee2022.1.9{1…1000}.t......
  • 如何通过一条命令让Linux系统崩溃
    如何一条命令让 Linux 系统崩溃,如何一条命令让系统不可用,如何一条命令清除所有数据。这个对于要离职的人来讲,是必须要学会的。即将离职的程序员,如果比较负责任的话,应该在离开前,将自己不再使用的电脑清理干净,如何一条命令清理硬盘,且看如下示例,用随机数擦除存储 sda中的数据:dd......
  • 如何进行Linux中RedHat 7.6 安装
    今天就跟大家聊聊有关如何进行Linux中RedHat7.6安装,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。开始安装为了日后排查问题时,不出现乱码,所以此处选择英文配置安装选项选择需要安装的包单击“SOFTWARES......
  • Oracle 19c Linux平台启动时出现ORA-00800错误浅析
    这里简单介绍一下如何处理解决Linux平台下Oracle19c启动时,告警日志出现ORA-00800错误的问题,详情介绍请见下面内容:环境描述:操作系统:RedHatEnterpriseLinuxrelease8.8(Ootpa)数据库:19.16.0.0.0企业版问题描述:在Oracle19c启动时,在Oracle的告警日志中会出现下面这样一......
  • 升级linux下的python版本
    以centos7为例将python升级到3.10.111、安装必备软件包:##第一步基础包yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-devellibpcap-develxz-develgcc##第二步安装db4-devel,必先安装epel-releaseyumi......
  • 《Unix/Linux系统编程》第五章学习笔记
    《Unix/Linux系统编程》第五章学习笔记第五章定时器及时钟服务本章讨论了定时器和定时器服务;介绍了硬件定时器的原理和基于Intelx86的PC中的硬件定时器;讲解了CPU操作和中断处理;描述了Linux中与定时器相关的系统调用、库函数和定时器服务命令;探讨了进程间隔定时器、定......
  • 【django框架】共4大模块50页md学习文档 第3篇:django路由和网络请求使用详解
    当你考虑开发现代化、高效且可扩展的网站和Web应用时,Django是一个强大的选择。Django是一个流行的开源PythonWeb框架,它提供了一个坚实的基础,帮助开发者快速构建功能丰富且高度定制的Web应用全套Django笔记直接地址:请移步这里共10章,31子模块,总计2w余字路由配置学习目......
  • 【python进阶】14大模块200页知识体系md笔记,第4篇:linux命令进阶(2)
    本文从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、html+css、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。完整版笔记直接地址:请移步这里共14......
  • 手记系列之七 ----- 分享Linux使用经验
    前言本篇文章主要介绍的关于本人在使用Linux记录笔记的一些使用方法和经验,温馨提示,本文有点长,约1.7w字,几十张图片,建议收藏查看。一、Linux基础使用1,服务器查看及时日志tail-500fcatalina.out2,如何退出logs日志ctrl+c或kill-9pid3,设置快捷键临时快捷键设置:......
  • Linux docker 常用命令
    容器命令dockerexec-itnacos2/bin/bashdockerlogs-fnacos日志:语法:dockerlogs[OPTIONS]CONTAINEROptions:--details显示更多的信息-f,--follow跟踪实时日志--sincestring显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)--tailstring从日志末尾显示......