Linux 文件权限基础:文件和目录权限管理指南

2023-09-22 09:31:52

Linux 文件权限基础

1. 引言

1.1 什么是文件权限

Linux 是一种多用户、多任务的操作系统,为了防止用户之间的干扰和保护系统的安全,在文件系统中对文件和目录设置了不同的权限。

1.2 文件权限的重要性

文件权限控制着用户对文件或目录是否可以读取、写入或执行某个文件。正确的管理文件权限可以保证系统的安全性和文件的完整性。

2. Linux 文件权限基础

2.1 Linux 文件系统简介

在 Linux 操作系统中,所有的文件都保存在文件系统中,文件系统的根目录是 /。Linux 中的文件系统可以分为两种类型:磁盘文件系统和虚拟文件系统。

2.2 文件和目录的属性

每个文件或目录都有三种属性:所有者、组和其他。

所有者是文件或目录的创建者,可以对其进行任意操作。

组是指一组用户,共享对某些文件的访问权限。所有者可以将自己的文件或目录的组权限分配给其他组。

其他是指没有被列入所有者或组中的用户。

2.3 权限类型:读、写和执行

在 Linux 中,文件和目录的权限被分为三种类型:读、写和执行。

读权限表示可以查看文件或目录的内容。

写权限表示可以修改文件或目录的内容。

执行权限表示可以运行文件或进入目录。

2.4 所有者、组和其他用户

在 Linux 中,每个文件或目录都有一个所有者和一个属于某个组。权限分别为所属用户所拥有的权限、该用户所在组的权限以及其他用户对文件或目录的权限。

2.5 权限符号表示法:r、w、x 和 -

在 Linux 中,文件和目录的权限被用 r(read)、w(write)、x(execute) 和 - (no access) 表示。

2.6 使用 ls -l 命令查看文件权限

使用命令 ls -l 可以查看文件和目录的详细信息,包括其权限、所有者、所属组、创建日期、大小等信息。

$ ls -l
-rw-r--r-- 1 user group 0 9月 21 09:45 file.txt
drwxr-xr-x 2 user group 4096 9月 21 09:45 dir/

3. 修改文件权限

3.1 使用 chmod 命令修改权限

使用命令 chmod 可以修改文件和目录的权限。

$ chmod [选项] [权限模式] 文件名

3.2 数字权限表示法:对应不同权限的数字值

在 Linux 中,也可以使用数字来表示权限。

  • r = 4
  • w = 2
  • x = 1

例如:

  • rwx = 4+2+1 = 7
  • rw- = 4+2 = 6
  • r-x = 4+1 = 5

3.3 修改单个权限和多个权限

使用 chmod 命令可以修改单个权限或多个权限。

$ chmod u+w file.txt  # 将所有者的写权限加上
$ chmod go-r file.txt  # 将组和其他用户的读权限去掉
$ chmod 644 file.txt  # 设置文件的权限为 rw-r--r--

3.4 递归修改目录权限

如果需要递归地修改目录及其子目录下所有文件的权限,可以使用命令:

$ chmod -R [权限模式] 目录名

例如,将 dir/ 目录及其子目录下所有文件的权限设置为 rw-r--r--

$ chmod -R 644 dir/

4. 理解文件权限模式

4.1 文件的三种权限模式

在 Linux 中,文件和目录的权限被分为三种模式:文本形式、数字形式和符号形式。

文本形式是 rwxr-xr-x 这种形式。

数字形式是 755644 这种形式。

符号形式是 +x-w 这种形式。

4.2 默认权限和 umask

umask 数值取反就是创建文件或目录的默认权限。例如,umask 值为 027,则创建文件的权限是 640 (666 取反 027 等于 640)。

4.3 设置默认权限

可以通过修改 /etc/profile 文件来设置系统级别的 umask 值,或者修改用户家目录下的 .bashrc 文件来设置个人级别的 umask 值。

5. 特殊文件权限

5.1 SUID 权限

SUID 是一种特殊的权限设置,可以让用户获得文件所有者的权限。比如说,/usr/bin/passwd 程序就需要拥有 SUID 权限。

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54272 6月  28 2021 /usr/bin/passwd

5.2 SGID 权限

SGID 是一种特殊的权限设置,可以让用户所有进程拥有组的权限。

$ ls -l /usr/bin/mail
-rwsr-sr-x 1 root mail 68304 6月  29 2021 /usr/bin/mail

5.3 Sticky 位

Sticky 位常用于目录,它表示只有所有者才能删除在该目录中创建的文件或子目录。

$ ls -ld /tmp
drwxrwxrwt 22 root root 4096 9月 20 23:47 /tmp

6. 文件权限的最佳实践

6.1 了解最小权限原则

最小权限原则指一个对象只能具有执行所需的最小权限,为了减少安全上的风险,我们应遵循这一原则。

例如,对于一般用户上传的网页文件,可以将其权限设置为 644,只给予读权限,而无需赋予写或执行权限。

6.2 保护重要文件和目录

保护重要文件和目录,设置的权限要比普通文件和目录高。

例如,对于包含用户密码等敏感信息的配置文件,可以将其权限设置为 600,只允许所有者进行读写操作。

6.3 持续审查和更新权限

定期审查当前文件和目录的权限,并对其进行更改。尤其是当有新人员加入时应该及时更新相关权限。

6.4 用户和组管理

合理地管理用户和用户所在的组,可以避免不必要的安全问题。

例如,将一些敏感文件的所有者设置为专门的管理员帐户,并将其他用户添加到普通组中,以限制对敏感文件的访问。

7. 常见问题和故障排除

7.1 无法访问文件的常见原因

  • 文件或目录不存在。
  • 权限不足。
  • 文件或目录被锁定。
  • 硬盘故障。

7.2 解决文件权限问题的步骤

  • 确认文件或目录存在。
  • 检查权限是否正确。
  • 故障排除或恢复备份。

例如,如果无法访问某个文件,可以先检查文件是否存在,然后使用 ls -l 命令确认权限是否正确,如果权限不足,可以使用 chmod 命令修改权限,如果问题仍然存在,需要进一步进行故障排除或从备份中恢复文件。

总结

文件权限是 Linux 操作系统中保护文件和目录安全的重要机制。每个文件和目录都有所有者、组和其他用户的权限,分别表示文件的读、写和执行权限。通过使用命令 ls -l 可以查看文件的详细权限信息。

使用命令 chmod 可以修改文件和目录的权限,可以使用文本形式、数字形式或符号形式来表示权限。同时,也可以使用特殊权限如 SUID、SGID 和 Sticky 位来实现更灵活的权限控制。

在设置文件权限时,应遵循最小权限原则,给予用户所需的最小权限;对于重要文件和目录,应设置高权限以保护其安全性;定期审查和更新权限,并合理管理用户和组。

当出现文件权限问题时,需要确认文件是否存在,检查权限是否正确,进行故障排除或恢复备份以解决问题。

正确管理文件权限可以增加系统的安全性和数据的完整性,提高系统的稳定性和可靠性。


python精品专栏推荐


python基础知识(0基础入门)

【python基础知识】0.print()函数
【python基础知识】1.数据类型、数据应用、数据转换
【python基础知识】2.if条件判断与条件嵌套
【python基础知识】3.input()函数
【python基础知识】4.列表和字典
【python基础知识】5.for循环和while循环
【python基础知识】6.布尔值和四种语句(break、continue、pass、else)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(一)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(二)
【python基础知识】8.编程思维:如何解决问题-思维篇
【python基础知识】9.函数的定义和调用
【python基础知识】10.用函数编写程序 - 实操篇
【python基础知识】10.用Python实现石头剪刀布小游戏-函数实操篇
【python基础知识】11.如何debug -常见报错原因及排查思路 - 思维篇
【python基础知识】12.类与对象(一)
【python基础知识】12.类与对象(二)
【python基础知识】13.类与对象(三)
【python基础知识】13.类与对象(四)
【python基础知识】14.图书管理系统的搭建(类与对象实操)
【python基础知识】15.编码基础知识
【python基础知识】16.文件读写基础及操作
【python基础知识】16.“古诗默写题”的python实现(文件读写和编码-实操篇)
【python基础知识】17.模块的概念以及如何引入
【python基础知识】18.实操-使用python自动群发邮件
【python基础知识】19.产品思维以及流程图的使用 - 思维篇
【python基础知识】20.“午饭吃什么”的python实现(产品思维-实操篇)
【python基础知识】21.高效偷懒的正确打开方式-毕业篇
【python文件处理】CSV文件的读取、处理、写入
【python文件处理】Excel自动处理(使用 openpyxl)
【python文件处理】-excel格式处理


python爬虫知识

【python爬虫】1.爬虫基础知识
【python爬虫】2.网页基础知识
【python爬虫】3.爬虫初体验(BeautifulSoup解析)
【python爬虫】4.爬虫实操(菜品爬取)
【python爬虫】5.爬虫实操(歌词爬取)
【python爬虫】6.爬虫实操(带参数请求数据)
【python爬虫】7.爬到的数据存到哪里?
【python爬虫】8.温故而知新
【python爬虫】9.带着小饼干登录(cookies)
【python爬虫】10.指挥浏览器自动工作(selenium)
【python爬虫】11.让爬虫按时向你汇报
【python爬虫】12.建立你的爬虫大军
【python爬虫】13.吃什么不会胖(爬虫实操练习)
【python爬虫】14.Scrapy框架讲解
【python爬虫】15.Scrapy框架实战(热门职位爬取)
【python爬虫】16.爬虫知识点总结复习

更多推荐

前端开发学习指南

这篇文章很长,但的确是一篇非常干的干货,讲诉了HTML、JavaScript、CSS、jQuery使用的一些规范与建议,前端的同学可以认真阅读此文,并比较自己平时的一些习惯,看是否有改进的地方……HTML咋地了,DOCTYPE?不定义DOCTYPE是一种可以被判死刑的罪行。以前你可能用的是下面的DOCTYPE,不过你要

提前放电避雷针防雷综合应用方案

放电避雷针是一种利用电离空气提前放电的避雷装置,可以有效地保护建筑物、设备和人员免受雷电的危害。放电避雷针有多种类型,根据其放电机理和结构特点,可以分为以下几类:地凯科技预放电避雷针:这种避雷针利用雷云产生的空间电场强度,预先使周围的空气电离,空气离子在空间电场的作用下加速接近雷云,从而使迎面先导大大提前与雷云的下行先

Raft协议

前言最近在系统的实战springcloud,在学习nacos过程,我们知道nacos的底层用到了Raft协议。在Raft协议之前是一个paxos的协议,但是这个协议有点复杂,于是Stanford的两位教授决定设计一种较简单的一致性算法。参考自Raft动态演示网站我们一起来学习一下Raft协议。Raft前置概念term:

【CSS3】CSS3 3D 转换 ④ ( 3D 旋转 rotate3d | rotate3d 语法 | rotate3d 自定义轴旋转 | 元素旋转方向 - 左手准则 | 代码示例 )

文章目录一、3D旋转rotate3d1、rotate3d语法2、rotate3d自定义轴旋转3、元素旋转方向-左手准则二、代码示例1、代码示例2、执行结果一、3D旋转rotate3d3D旋转指的是在三维空间坐标系中,绕X轴,Y轴,Z轴进行旋转,同时还可以绕自定义轴进行旋转;2D旋转只能以某个点为中心进行旋转,3D旋转可

eSIM简介

翻译自eSIMeSIMeSIM被称为许多不同的名字。有人说嵌入式SIM,有人说电子SIM和其他的说eSIM。在行业标准最终确定并在该地区广泛采用之前,还会有其他名称出现。无论我们称之为什么,此SIM的基本思想是将SIM(UICC)作为用户设备(例如,M2M终端,移动电话等)的不可移除/固定组件分发。设备制造商对SIM卡

可以创业,也可以副业的网上长期挣钱的项目

在这个飞速发展的互联网时代,越来越多的人开始尝试在网上创业或者寻找一份可持续的副业来增加收入。不过在网上赚钱的难度是比较大的,不是轻易就能做到的,所以不付出一番努力,没有悟性和执行力,那么是很难做好的,那么有哪些靠谱的互联网长期赚钱项目呢?分享几个适合互联网创业或者副业的长期挣钱项目,希望能够对大家有所帮助。博客很多人

代码随想录二刷Day 15

102.BinaryTreeLevelOrderTraversalvector<int>()itisbasicallyconstructorofstd::vectorclassandwillcreateanewemptyvector.Youcanalsomentionthesizeofrequiredvectorinb

如何低成本、低门槛开发全屋智能系统?

近期,某个科技通讯巨头豪掷15亿重金,准备成立房地产公司以大力推动全屋智能的发展。从大部分科技公司频频押注全屋智能领域来看,全屋智能已然成为智能家居第一大发展趋势,是资本市场的重头戏。但全屋智能并不好做,不仅在于智能化水平跟不上消费端真实需求,而且连接、交互、生态这三道枷锁(即智能单品连接协议不统一、家庭联动场景互相割

彻底解决ruoyi分页后总数错误的问题

问题描述最近时不时的发现用户列表出来的数据只有24条,但是总记录数却有58条,很奇怪。各种百度查询,都是什么修改查询分页改代码,尝试后发现还是没有效果,经过各种验证发现就是SQL语句错误。如果非要说是SQL语句没有问题,查询出来的数据是正确的,如果基于这个事实去讲那确实没有错,错的是你建表的字段类型不一致,这是本质错误

Linux- dup()系统调用

dup()dup()(duplicate)是一个UNIX系统调用,用于创建一个现有文件描述符的副本。这个新的文件描述符与原始文件描述符在许多方面是相同的:它们共享同一个文件表项,这意味着它们指向相同的文件、套接字或其他I/O通道,并共享相同的文件偏移量、访问权限等。函数原型dup()函数的原型如下:#include<u

花了一周时间,更新了下软考云题库Web版

花了一周时间,更新了下软考云题库Web版,体验地址和体验账户在文章最后。想体验的直接翻到最后。软考云题库的Web版的由来之前,有朋友提出在小程序中刷题不太方便,希望能在电脑上进行题目练习。于是,我们着手开发了软考云题库的Web版,以满足这一需求。在这个项目中,我们采用了一套完整的技术方案,包括了SpringBoot2.

热文推荐