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

文章目录

  • Linux 文件权限基础
    • 1. 引言
      • 1.1 什么是文件权限
      • 1.2 文件权限的重要性
    • 2. Linux 文件权限基础
      • 2.1 Linux 文件系统简介
      • 2.2 文件和目录的属性
      • 2.3 权限类型:读、写和执行
      • 2.4 所有者、组和其他用户
      • 2.5 权限符号表示法:r、w、x 和 -
      • 2.6 使用 ls -l 命令查看文件权限
    • 3. 修改文件权限
      • 3.1 使用 chmod 命令修改权限
      • 3.2 数字权限表示法:对应不同权限的数字值
      • 3.3 修改单个权限和多个权限
      • 3.4 递归修改目录权限
    • 4. 理解文件权限模式
      • 4.1 文件的三种权限模式
      • 4.2 默认权限和 umask
      • 4.3 设置默认权限
    • 5. 特殊文件权限
      • 5.1 SUID 权限
      • 5.2 SGID 权限
      • 5.3 Sticky 位
    • 6. 文件权限的最佳实践
      • 6.1 了解最小权限原则
      • 6.2 保护重要文件和目录
      • 6.3 持续审查和更新权限
      • 6.4 用户和组管理
    • 7. 常见问题和故障排除
      • 7.1 无法访问文件的常见原因
      • 7.2 解决文件权限问题的步骤
    • 总结
  • python精品专栏推荐
    • python基础知识(0基础入门)
    • python爬虫知识

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.爬虫知识点总结复习

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

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

相关文章

47个Docker常见故障的原因和解决方式

本文针对Docker容器部署、维护过程中,产生的问题和故障,做出有针对性的说明和解决方案,希望可以帮助到大家去快速定位和解决类似问题故障。 Docker是一种相对使用较简单的容器,我们可以通过以下几种方式获取信息: 1、…

2023华为杯E题:出血性脑卒中临床智能诊疗建模(不断更新)

文章目录 一、 背景介绍二、 数据集介绍及建模目标第一题:血肿扩张风险相关因素探索建模。第一问要求第一问解题思路第二问第二问解体思路 第二题:血肿周围水肿的发生及进展建模,并探索治疗干预和水肿进展的关联关系第一问第一问思路第二问第…

LeetCode 847. Shortest Path Visiting All Nodes【状态压缩,BFS;动态规划,最短路】2200

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

【Android知识笔记】进程通信(三)

在上一篇探索Binder通信原理时,提到了内存映射的概念,其核心是通过mmap函数,将一块 Linux 内核缓存区映射到一块物理内存(匿名文件),这块物理内存其实是作为Binder开辟的数据接收缓存区。这里有两个概念,需要理解清楚,那就是操作系统中的虚拟内存和物理内存,理解了这两…

零基础学前端(五)HTML+CSS实战:模仿百度网站首页

1. 该篇适用于从零基础学习前端的小白 2. 初学者不懂代码得含义也要坚持模仿逐行敲代码,以身体感悟带动头脑去理解新知识 一、实战:将百度网站首页补全 上一篇零基础学前端(三)重点讲解 HTML-CSDN博客我们已经将顶部两侧内容已经…

无聊的一篇博客(如何通过路由器登陆页对固定机器进行网速干扰,如何帮熊孩子戒网瘾)

1. 路由器登陆页面,按钮解析,获取按钮。 2. JavaScript与上传的脚本。 // 获取要点击的按钮A和按钮B元素var isRunning true; // 初始状态为false// 定义一个函数来模拟点击按钮A和按钮B function clickButtons() {if (isRunning) {// 随机生成一个延时…

03.Qt信号槽使用及其原理

一、QT信号槽概念原理讲解 信号槽 类似windows的消息机制信号函数,只发送不需要知道接收者槽函数(普通函数),只接收不管通信QObject来绑定 Qt信号槽原理 绑定信号函数和槽函数调用信号函数(将信号写入队列&#xf…

理解Nginx反向代理详解

什么是Nginx反向代理? Nginx是一个高性能的开源Web服务器,但它也可以用作反向代理服务器。反向代理是一种服务器配置,它允许Nginx接收客户端请求,然后将这些请求转发到后端服务器,最终将响应返回给客户端。这种配置对于…

CSS 模糊效果 CSS 黑白效果 CSS调整亮度 对比度 饱和度 模糊效果 黑白效果反转颜色

CSS 模糊效果 CSS 黑白效果 CSS调整亮度 饱和度 模糊效果 黑白效果 实现 调整亮度 饱和度 模糊效果 黑白效果 使用 filter1、模糊2、亮度3、对比度4、饱和度5、黑白效果6、反转颜色7、组合使用8、 filer 完整参数 实现 调整亮度 饱和度 模糊效果 黑白效果 使用 filter 1、模糊…

C语言每日一题(7):获得月份天数

文章主题:获得月份天数🔥所属专栏:C语言每日一题📗作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶个人主页:[₽]的个人主页🏄&…

学会这篇文章分享的知识,你就超过了90%的测试人

♥ 前 言 jmeter 可以做性能测试,这个很多人都知道,那你知道,jmeter 可以在启动运行时,指定线程数和运行时间,自定义性能场景吗? jmeter 性能测试,动态设定性能场景 平时,我们使…

【验证码逆向专栏】螺丝帽人机验证逆向分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未…

工作应当有挑战

有挑战 才能有所成长 正所谓人到山前必有路 是挑战 一般就会有未知 未知往往伴随着困难 有困难 并不可怕,也不必自我抱怨,自我抱怨只会陷入无尽的精神内耗 我们只要做好自己 困难就会迎刃而解 如果自己的获得 没有达到自己的期望 其实那也不必气馁 再…

【ICCV 2023】FocalFormer3D : Focusing on Hard Instance for 3D Object Detection

原文链接:https://arxiv.org/abs/2308.04556 1. 引言 目前的3D目标检测方法没有显式地去考虑漏检问题。   本文提出了困难实例探测(HIP)。受目标检测的级联解码头启发,HIP逐步探测误检样本,极大提高召回率。在每个阶…

UDP 的报文结构

1.UDP特点2.UDP协议报文结构 1.UDP特点 UDP特点分为: 无连接:知道对端的IP和端口号就可以进行传输,即通信时不需要创建连接(发送数据结束时也没有连接可以释放)所以减小了开销和发送数据前的时延;比如&am…

nginx部署多个项目

前言 实现在一台服务器上使用nginx部署多个项目的方法 查看并修改nginx安装的默认配置文件 在 Linux 操作系统中,Nginx 在编译安装时默认的配置文件路径是 /usr/local/nginx/conf/nginx.conf。 如果是通过发行版的包管理器安装,则默认的配置文件路径可能…

基于数据驱动的成本洞察,趣丸科技的FinOps进阶之路~

今年以来,我们注意到越来越多的单位开始积极实践FinOps,而随着FinOps的发展,大家对于其落地过程的关注也更加具体和深入,涉及了账单波动、FinOps的边际效应、成本模型、依赖工具等多个关键问题。 本月「UGeek大咖说」线上直播活动…

vscode + conda+ ffmpeg + numpy 的安装方式

Windows 搭建 环境 遇到的错误点: 解决,使用conda init conda activate myenv usage: conda-script.py [-h] [–no-plugins] [-V] COMMAND … conda-script.py: error: argument COMMAND: invalid choice: ‘activate’ (choose from ‘clean’, ‘comp…

EasyCode整合mybatis-plus的配置

文章目录 entitymapper.javamapper.xmlserviceserviceImplcontroller 这篇文章不教你如何安装和使用EasyCode,只是贴出可以使用的配置。 具体EasyCode的使用可以查看其它的文章。 entity ##导入宏定义 $!{define.vm}##保存文件(宏定义) #sa…

【c语言】贪吃蛇

当我们不想学习新知识的时候,并且特别无聊,就会突然先看看别人怎么写游戏的,今天给大家分享的是贪吃蛇,所需要的知识有结构体,枚举,以及easy-x图形库的一些基本函数就完全够用了,本来我想插入游…