Linux:修改文件权限

简介

在Linux系统中,权限管理是文件和目录安全性的核心。文件权限是非常重要的,它们决定了哪些用户可以读取、写入或执行文件。

文件权限

用户类别

每个文件和目录都与三种类型的权限相关联,分别针对三个不同的用户类别:

  1. 所有者(Owner): 文件或目录的所有者通常是其创建者。
  2. 组(Group): 文件或目录所属的组,可以包含多个用户。
  3. 其他人(Others): 既不是所有者也不是组成员的其他所有用户。

权限类型

对于每种用户类别,都有三种类型的权限:

  1. 读(Read,r): 允许查看文件内容或列出目录内容。
  2. 写(Write,w): 允许修改文件内容或更改目录内容(例如,添加、删除或重命名文件)。
  3. 执行(Execute,x): 允许运行文件或进入目录。

特殊权限

  1. 设置用户ID(Setuid): 当文件被执行时,进程的有效用户ID将设置为文件的所有者ID,而不是执行者ID。
  2. 设置组ID(Setgid): 类似于setuid,但是设置的是进程的有效组ID。
  3. 粘滞位(Sticky Bit): 通常用于目录,只允许文件的所有者删除或重命名文件。

查看权限

ls -l 命令

在Linux系统中,可以使用 ls -l 命令查看文件或目录的权限。例如:

-rw-r--r-- 1 user group 1000 Jan 1 10:00 file.txt

权限部分 rw-r--r-- 的含义如下:

  • 第一个字符 - 表示这是一个文件。如果是 d,则表示是一个目录。
  • 接下来的三个字符 rw- 表示所有者(user)有读和写的权限,但没有执行权限。
  • 中间的三个字符 r-- 表示组(group)有读权限,但没有写或执行权限。
  • 最后三个字符 r-- 表示其他人(others)有读权限,但没有写或执行权限。

修改文件权限

chmod 命令来更改文件或目录的权限,chown 命令来更改所有者和组,以及 umask 命令来设置默认权限掩码。

chmod命令

chmod命令可以通过符号表示法或数字表示法来设置文件权限。

符号表示法

用户类型
  • u 代表所有者(user)
  • g 代表组(group)
  • o 代表其他人(others)
  • a 代表所有人(all)
权限符号
  • + 添加权限
  • - 移除权限
  • = 设置权限,覆盖原有的权限设置
示例
  • 给所有者添加执行权限:
    chmod u+x file.txt
    
  • 给组用户添加写入权限:
    chmod g+w file.txt
    
  • 移除其他人读取权限:
    chmod o-r file.txt
    
  • 设置所有人都有读取、写入和执行权限:
    chmod a=rwx file.txt
    

数字表示法

每种权限类型都有一个数字值:读(4)、写(2)、执行(1)。将这三组权限的数字相加,就可以得到相应的权限设置。

示例
  • 设置所有者有读取、写入和执行权限(7),组用户有读取和写入权限(6),其他人只有读取权限(4):
    chmod 764 file.txt
    
几种常见的Linux文件权限设置及其含义
权限设置所有者其他人rwx表示说明
600读/写-rw-------只有所有者可以读写文件。
644读/写-rw-r--r--所有者可以读写文件,组和其他人只读。
666读/写读/写读/写-rw-rw-rw-所有人都可以读写文件(不建议用于安全敏感文件)。
700读/写/执行-rwx------只有所有者可以读写和执行文件。
711读/写/执行执行-rwx--x--x只有所有者可以读写和执行文件,其他人只能执行。
755读/写/执行读/执行读/执行-rwxr-xr-x所有者可以读写和执行文件,组和其他人只能读和执行。
777读/写/执行读/写/执行读/写/执行-rwxrwxrwx所有人都可以读写和执行文件(不建议用于安全敏感文件)。
4755设置用户ID/读/执行读/执行读/执行-rwsr-xr-x所有者可以读写和执行文件,组和其他人只能读和执行。当文件被执行时,设置有效用户ID为文件所有者的ID(setuid)。
6755设置用户ID/读/写/执行读/执行读/执行-rwsr-sr-x所有者可以读写和执行文件,组和其他人只能读和执行。当文件被执行时,设置有效用户ID为文件所有者的ID(setuid)。
7755设置用户ID/读/写/执行设置组ID/读/写/执行读/执行-rwsr-sr-x所有者可以读写和执行文件,组和其他人只能读和执行。当文件被执行时,设置有效用户ID为文件所有者的ID(setuid),设置有效组ID为文件所属组的ID(setgid)。

在rwx表示中,r 代表读权限(read),w 代表写权限(write),x 代表执行权限(execute)。- 表示没有相应的权限。对于设置用户ID(setuid)和设置组ID(setgid),s 会出现在原本的 x 位置,如果原本没有执行权限,则显示为 S

递归修改权限

如果要递归地修改目录及其内部所有文件和子目录的权限,可以使用-R选项:

chmod -R 755 directory/

这将设置目录及其内部所有文件和子目录的权限为所有者有读取、写入和执行权限(7),组用户和其他人有读取和执行权限(5)。

chown 命令

chown 命令是Linux和Unix-like操作系统中的常用命令,用于更改文件或目录的所有者和所属组。chown 命令的基本语法如下:

chown [选项] [所有者][:组] 文件或目录...
  • 所有者: 可以是用户名或者用户ID。
  • : 可以是组名或者组ID。如果省略组,则文件或目录的所属组不会改变。
  • 文件或目录: 可以是单个文件或目录,也可以是多个文件或目录,用空格分隔。

常用选项

  • -R: 递归地改变指定目录及其所有子目录和文件的所属关系。
  • --reference=参考文件: 使用参考文件的所属关系来设置目标文件的所属关系。

示例

  1. 更改文件的所有者:
chown newowner file.txt
  1. 更改文件的所有者和组:
chown newowner:newgroup file.txt
  1. 使用用户ID和组ID更改文件的所有者和组:
chown 1001:1002 file.txt
  1. 递归地更改目录及其内容的所有者和组:
chown -R newowner:newgroup directory/
  1. 使用参考文件来设置目标文件的所有者和组:
chown --reference=ref_file target_file

umask 命令

umask 命令在Linux和Unix-like操作系统中用于设置默认的文件权限掩码。文件权限掩码决定了新创建的文件和目录的默认权限。umask 命令的值是三个八进制数字,分别代表对所有人(所有者、组和其他人)的权限设置中要屏蔽的权限。

文件权限掩码的工作原理是,从完整的权限设置中减去掩码所表示的权限,从而得到新文件的默认权限。例如,如果完整的权限是 666(所有人都可以读写),而 umask022,那么新文件的默认权限将是 666 - 022 = 644(所有者读写,组和其他人只读)。

常用语法

umask [模式]
  • 模式: 一个八进制数,用于设置文件权限掩码。

示例

  1. 显示当前的 umask 值:
umask
  1. 设置新的 umask 值:
umask 027

这将设置一个新的掩码,使得新创建的文件默认没有组和其他人的写权限(644),而新创建的目录默认没有其他人的写权限和执行权限(755)。

注意事项

  • umask 的值通常在用户的 .bashrc.profile 文件中设置,以便每次登录时都会应用。
  • umask 的值也可以在系统级别的配置文件中设置,如 /etc/profile/etc/bashrc,以影响所有用户的默认权限。
  • umask 的值不会影响已经存在的文件或目录的权限,只会影响新创建的文件或目录。
    理解 umask 的值对于确保文件和目录的权限设置符合安全性和隐私性的要求非常重要。

请注意

只有文件的所有者(或超级用户)才能更改文件的权限。在修改文件权限时,请确保您了解这些更改可能带来的安全影响,并且只在必要时进行权限修改。更改文件的所有者或组需要相应的权限。通常,只有root用户或文件当前的所有者可以更改文件的所有者。任何用户都可以更改自己拥有的文件的组,但只有root用户可以更改其他用户拥有的文件的组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis | 第二篇】Redis的五种数据类型和相关命令

文章目录 2.Redis的数据类型和相关命令2.1常用数据类型2.2特性和用途2.2.1字符串(String)2.2.2哈希(Hash)2.2.3列表(List)2.2.4集合(Set)2.2.5有序集合(Sorted Set&#…

将组件直接绑定到vue实例上面的写法

怎么将组件直接绑定到vue实例上面? 在实际开发过程中,有多种使用vue组件的方式,有在组件中引入,直接挂载到vue进行全局使用,也有直接挂载到vue实例上面当成vue的一个属性来使用的。下面通过代码来实现将组件直接绑定到…

SwiftUI中stroke属性的使用

在 SwiftUI 中,可以使用 stroke 属性来绘制形状的轮廓线。stroke 属性接受一个 Color 类型的参数,指定轮廓线的颜色。 以下是一个示例代码,演示如何在 SwiftUI 中使用 stroke 属性绘制矩形的轮廓线: import SwiftUIstruct Conte…

linux小记(1)

基本概念:不依靠扩展名来区分文件类型 好处:除了文本文件其他所有windows文件都无法在Linux下运行,包括病毒木马。 坏处:所有的软件都需要对linux单独开发 习惯用后缀来区分文件,方便管理。 -压缩包:*.…

第十五届蓝桥杯软件赛模拟赛第三期(c++,python,java通用)

注:1.填空题用最简单的方式(暴力递归或枚举)得出答案即可。 2.编程题若无思路可用暴力递归或枚举也能拿到不少的分数。 第一题 【问题描述】 请问 2023 有多少个约数?即有多少个正整数,使得 2023 是这个正整数的整数倍…

【ESP32 IDF】UART串口

文章目录 前言一、数据传输的基本概念1.1 串行与并行通信1.2 单工/半双工/全双工通信1.3 同步/异步通信1.4 波特率1.5 UART 四要素 二、串口的使用2.1 配置UART串口2.2 配置UART引脚2.3 安装串口驱动2.4 获取环形缓冲区的数据长度2.5 读取数据2.6 发送数据 总结 前言 UART&…

第十二篇:学习python数据清洗

文章目录 一、啥是数据清洗二、将表格数据导入pandas中1. 准备工作2. 引入csv文件2.1 引入pandas库2.2 读取文件/修改名称3.2 快速浏览数据2.4 修改名字2.5 查找缺失值2.6 删除缺失值 3. 引入Excel文件3.1 引入pandas库3.2 读取Excel文件的人均GDP数据3.3 查看数据类型和non-nu…

Android中的几种定位方式调用详解

目前,移动端大致通过三种方式来进行设备定位:GPS、基站、wifi。本文就详细的讲解一下这几种定位方式和实现方法。 前言 android中我们一般使用LocationManager来获取位置信息,这里面有四中provider: public static final Strin…

怎样获取html网页中<ul >中的数据?

您可以使用Python中的BeautifulSoup库来获取HTML网页中<ul>标签中的数据。以下是一个示例代码&#xff1a; rom bs4 import BeautifulSoup import requests# 发送HTTP请求并获取网页内容 url "http://example.com" # 替换为目标网页的URL response request…

YOLOv8从入门到入土使用教程!(一)训练模型

⭐⭐⭐瞧一瞧看一看&#xff0c;新鲜的YOLOv9魔改专栏来啦&#xff01;⭐⭐⭐ 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、本文介绍 本文将演示如何使用YOLOv8进行训练及预测&#xff01; 二…

线性dp 最长公共子序列(二分版本)

本题由于1e5的数据&#xff0c;n方的做法不再适用&#xff0c;但是简单的一维并不能满足动态转移。这时&#xff0c;我们就可以考虑引入最长上升子序列来处理 用样例来看 5 序列&#xff1a;3 2 1 4 5序号&#xff1a;1 2 3 4 5序列&#xff1a;1 2 3 4 5序号&#xff1a;3 2…

1.1 Java 注解(Annotation)

1.1 注解&#xff08;Annotation&#xff09; 1.1.1 什么是注解 注解的定义&#xff1a;它提供了一种安全的类似注释的机制&#xff0c;用来将任何信息或元数据&#xff08;metadata&#xff09;与程序元素&#xff08;类、方法、成员变量等&#xff09;进行关联。为程序的元…

九型人格测试,2号人格助人型的职业分析

九型人格测试中的助人型&#xff0c;也叫二号人格&#xff0c;解读专业选择和职业选择。 助人型人格&#xff0c;在九型人格中&#xff0c;被视作一种给予者&#xff0c;他们总是喜欢帮助别人&#xff0c;有一个观念&#xff1a;“我不帮助别人&#xff0c;就没有人愿意喜欢我…

透明玻璃屏幕为什么那么贵

透明玻璃屏幕之所以价格较高&#xff0c;主要是由于以下几个方面的原因&#xff1a; 技术研发与创新&#xff1a;透明玻璃屏幕作为一种先进的显示技术&#xff0c;其研发和制造过程涉及到许多复杂的技术。这些技术的研发和创新需要投入大量的资金和时间。此外&#xff0c;透明玻…

鸿蒙应用native开发入门以及运行native项目报错spawn EPERM问题解决以及so包调用

目录 DevEco Studio新建native项目 新建第一个native项目 解决spawn EPERM报错 点击运行 分析流程

无冬之夜:增强版 Neverwinter Nights Mac 激活版

Neverwinter Nights是一款角色扮演游戏。游戏的剧情发生在虚构的城市Neverwinter&#xff0c;玩家扮演一个冒险者&#xff0c;在这个城市中探索并完成各种任务。游戏中有许多不同的职业、种族、技能和法术可供玩家选择。游戏的主要特点包括多人游戏模式、自定义模块和工具包&am…

【Mc生存】插火把

【Mc生存】插火把 题目描述 话说有一天 linyorson 在“我的世界”开了一个 n n n \times n nn 的方阵&#xff0c;现在他有 m m m 个火把和 k k k 个萤石&#xff0c;分别放在 ( x 1 , y 1 ) ∼ ( x m , y m ) (x_1, y_1) \sim (x_m, y_m) (x1​,y1​)∼(xm​,ym​) 和 …

【书生·浦语大模型实战营】第5节 课后作业

LMDeploy 的量化和部署 0. 课程链接1. 课后作业1.1 基础作业1.2 进阶作业&#xff08;可选做&#xff09; 0. 课程链接 链接&#xff1a;https://github.com/InternLM/tutorial/blob/main/lmdeploy/lmdeploy.md 1. 课后作业 1.1 基础作业 使用 LMDeploy 以本地对话、网页Gra…

大模型技术在测试领域应用的方向思考

方向1&#xff1a;利用大模型技术生成测试用例 方向2&#xff1a;利用大模型技术进行测试用例推荐 如何利用大模型技术生成测试用例 大模型技术&#xff0c;如自然语言处理&#xff08;NLP&#xff09;中的大型预训练模型&#xff0c;如BERT、GPT等&#xff0c;已经在许多领…

HTML5:七天学会基础动画网页5

CSS3渐变 (可以给背景颜色设置一个渐变的效果) 线性渐变:Linear Gradients(从直线上向远处见面) 语法: background:linear-gradient(direction&#xff0c;color-stop1&#xff0c;color-stop2…)&#xff1b; direction:方向 to left, to right, 90deg 径向渐变:Radial …