Ubuntu的文件权限介绍

Linux系统是一个多用户系统,每个用户都会创建自己的文件。为了防止其他人擅自改动他人的文件,需要拥有一套完善的文件保护机制。在Linux系统中,这种保护机制就是文件的访问权限。文件的访问权限决定了谁可以访问和如何访问特定的文件。

为了便于读者理解后面的内容,下面首先介绍一些基础知识。

Linux的文件权限分为基本权限和特殊权限,下面分别介绍。

1. 基本权限

Linux系统将文件的基本权限分为3个权限组,分别为文件所有者、文件所属组以及其他用户。所谓文件所有者,一般是指文件的创建者,谁创建了文件,谁就默认成为该文件的所有者。通常情况下,文件所有者对该文件拥有全部权限。文件所属组是指某个用户组对该文件拥有的访问权限。同理,其他用户是指除文件所有者和所属组之外的系统中的其他用户对于该文件的访问权限。这3个权限组分别用u、g和o表示。另外,还要加上一个所有用户,用a表示。

对于每个文件或者目录,都有3种基本权限类型,分别为读、写和执行。所谓读权限,是指用户能够读取文件的内容。写权限是指用户能够写入或修改文件或目录的内容。执行权限是指用户能够执行该文件或者进入某个目录。这3种基本权限分别用字母r、w和x表示。如果没有这种权限,则用连字符-表示。除这种字母表示方法外,Linux还支持一种二进制数字表示法,即分别用二进制100、010和001表示读、写和执行权限,转换成十进制就是4、2和1。

2. 特殊权限

Linux的权限设置非常灵活,除基本权限外,还有3种特殊权限,分别是setuid、setgid和粘滞位。前面两种都是为了使得某个程序在执行时能够得到权限提升而设置的,而后者则是为了保护文件或者目录不被他人删除而设置的。

setuid和setgid分别允许用户以文件所有者和文件所属组的身份执行某个文件。这两种权限适用于某个任务所需的权限高于运行者所拥有的权限,而为了运行这个任务,允许用户暂时提高权限。

首先介绍一下setuid和setgid。setuid的全称是set user ID upon execution,也就是在程序执行时设置其用户ID。那么到底是设置成谁的用户ID呢?当然是程序所有者的用户ID。这意味着无论是哪个用户,只要有执行该程序的权限,那么在该程序执行时,都相当于该程序的所有者在执行。程序所有者所拥有的权限,程序执行者在程序执行的时候也拥有。setgid的全称是set group ID upon execution,其中组ID指的是文件所在组的ID。也就是说,在执行该程序时,只要有执行的权限,那么在程序执行的时候,程序所在组所拥有的权限,执行者同样拥有。

这两种权限通常用在执行某个特殊任务时,需要任务执行者的权限得到临时提升。例如,在Linux系统中,/etc/passwd和/etc/shadow是两个非常关键的文件。前者用来存储账号信息,后者用来存储密码。这两个文件的所有者为root用户,并且只有root用户才有写入权限。但是,我们知道,Linux系统中的每个用户都可以通过passwd命令修改自己的密码,有些非root用户可以在Linux系统中增加或者删除账号。而无论是修改密码还是增删账号都会修改/etc/shadow和/etc/passwd,那么这个功能是如何实现的呢?

实际上,这要归功于setuid权限,Linux系统为passwd命令设置了该权限,并且将passwd命令的所有者设置为root,而系统中其他的有效用户都可以执行passwd命令。这样,在其他用户执行passwd命令的时候,就会拥有root用户的权限,因此就可以修改这两个文件了。

注意:除setuid和setgid外,Linux还提供了其他的安全机制,包括普通用户不能修改其他用户的密码等。

setuid和setgid这两种特殊权限用字符s表示,其中,setuid占用所有者权限的第3个字符,即x所在的位置。setgid占用文件所在组权限的第3个字符,同样是x所在的位置。如果setuid或者setgid和x权限同时拥有,则会两种权限叠加,用小写字符s表示。如果只设置了setuid或者setgid,而没有x权限,则用大写字符S表示。

除字符表示法外,还可以使用数字表示这两种特殊权限,其中setuid在权限的最高位上用十进制数字4表示,而setgid在权限的最高位上用十进制数字2表示。

粘滞位的作用恰恰与刚才介绍的两种权限相反。例如,/tmp目录是Linux为所有的应用程序提供的临时目录,这个目录对于所有的用户来说都是可读、可写的。系统中那么多的应用程序,会不会出现某个应用程序修改或者删除其他应用程序的情况呢?如果这种情况发生的话,必然会导致Linux系统中的应用程序执行错乱。

为了防止上面所讲的现象发生,Linux系统为/tmp目录设置了粘滞位。设置了粘滞位之后,只有文件的所有者才可以修改或者删除/tmp目录中的文件。

粘滞位在文件权限中用字符t表示,占用其他用户权限的第3个字符,即x所在的位置。同样,如果同时设置了粘滞位和执行权限,则用小写字母t表示;如果只有粘滞位,而没有执行权限,则用大写字母T表示。如果用数字来表示粘滞位的话,则最高位上用十进制数字1表示。

本文节选自《Ubuntu Linux系统管理与运维实战》,获出版社和作者授权发布。

《Ubuntu Linux系统管理与运维实战(Linux技术丛书)》(张春晓,肖志健)【摘要 书评 试读】- 京东图书 (jd.com)

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

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

相关文章

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 字符串筛选排序(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…

比特币的共识协议

目录 前言 一、铸币交易 1.铸币权 2.铸币交易(coinbase tx) 3.输入和输出 二、小型的区块链 1.见下图所示 2.哈希指针 3.双花攻击 三、块头块身,全节点轻节点 1.块头(block head) 2.块身 3.全节点full node(fully validating node…

小孟再接盲盒小程序,3天开发完!

大家好,我是程序员小孟。 前面开发了很多的商业的单子,私活联盟的小伙伴慢慢的逐渐搞自己的产品。 前面的话,开发了盲盒小程序,最近又接了一款盲盒小程序。因为前面有开发过,所以我们的成本也少了很多。 盲盒小程序…

【一】【QT开发应用】QT开发环境配置,安装QT应用

下载QT软件 点击网址链接,QT下载网址 下载vsaddin插件 点击网址链接,QT下载网址 根据自己的vs版本下载对应的文件. 安装QT 用命令行打开安装程序 找到直接路径, D:\Software\QT\qt-unified-windows-x86-4.3.0-1-online.exe 利用WindowsPowe…

Docker的基本操作 及 容器与外部机互相通讯(持续更新中)

Docker入门: Docker 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)docker入门,这一篇就够了。-CSDN博客Docker 容器使用 | 菜鸟教程 (runoob.com)Docker自定义网络和运行时指定IP_docker run ip-CSDN博客 基本命令 链接:docker入门&#…

鸿蒙: 基础认证

先贴鸿蒙认证 官网10个类别总结如下 https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398 10节课学习完考试 考试 90分合格 3次机会 1个小时 不能切屏 运行hello world hvigorfile.ts是工程级编译构建任务脚本 build-profile.json5是工程…

你还不会选ProfiNET和EtherCAT网线?

在现代工业自动化领域,ProfiNET和EtherCAT是两种非常流行的通信协议。选择合适的网线对于确保通信的稳定性和效率至关重要。 ProfiNET是什么? ProfiNET是一种基于以太网的通信协议,由德国西门子公司开发。它支持实时通信,广泛应用…

【启明智显方案分享】ESP32-S3与GPT AI融合的智能问答嵌入式设备应用解决方案

一、引言 随着物联网(IoT)和人工智能(AI)技术的飞速发展,嵌入式设备正逐渐变得智能化。本解决方案是启明智显通过结合ESP32-S3的低功耗、高性能特性和GPT(Generative Pre-trained Transformer)…

【第10章】如何获取免费“工作流”?(国内外网站推荐/下载/使用)ComfyUI基础入门教程

使用ComfyUI的一个重点,就是可以快速使用别人分享的工作流,来完成特定的图像生成任务,从而提升工作效率。 那么,去哪儿可以找到别人分享的工作流呢? 这节课我们了解下,比较知名的工作流网站有哪些?以及如何下载? 备注:下节课再讲如何使用。 🎆“老牌” workflow网…

基于QT5.12.7的VTK8.2下的VS2015 X64源码编译以及测试

有一段时间没更新博客了,最近在考虑使用VTK作为软件的后处理显示,相比于OSG,VTK在后处理上集成了很多优秀的算法,使用起来比较方便,而且后处理一般不需要太多的交互,所以VTK是一个不错的选择。 之前对VTK了…

数据仓库与数据挖掘(期末复习)

数据仓库与数据挖掘(期末复习) ETL的含义Extract 、 Transformation、Load。 ODS的全称Operational Data Store。 DW全称 Data Warehourse DM全称是Data Mart 数据仓库数据抽取时所用到技术是增量、全量、定时、调度 STAGE层作用是提供业务系统数据…

HTML初体验

可参考jd.com官网&#xff0c;ctrlu查看当前页面源代码 找到你的项目&#xff0c;在项目中创建html类型的网页文件 标准的HTML正确书写格式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title&…

牛客热题:最长回文子串

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;最长回文子串题目链接方法一&am…

大模型Claude 3产品调研

一、公司与产品介绍 Anthropic公司&#xff0c;由前OpenAI高级成员达里奥阿莫代&#xff08;Dario Amodei&#xff09;和丹妮拉阿莫代&#xff08;Daniela Amodei&#xff09;兄妹于2021年创立&#xff0c;致力于开发先进的人工智能技术。作为公司的旗舰产品&#xff0c;Claud…

JavaEE进阶----SpringBoot快速入门

文章目录 前言一、了解Maven1.1 Maven功能- 项⽬构建- 管理依赖 1.2Maven仓库 二、第一个SpringBoot项目总结 前言 Spring Boot是一个用于构建快速、简单和可扩展的生产级应用程序的框架。它基于Spring框架&#xff0c;提供了开发微服务和独立的应用程序所需的一切。 一、了解…

学生党打工人救星,GPT一句话生成精美PPT

学生党打工人救星&#xff0c;GPT一句话生成精美PPT 介绍 在这个快节奏的现代社会&#xff0c;效率是关键。无论是工作会议、学术报告&#xff0c;还是产品展示&#xff0c;一个精美而结构合理的 PPT 都是成功的关键。然而&#xff0c;制作一个高质量的 PPT 往往需要耗费大量…

气体传感器的工作原理探究

气体传感器的工作原理主要基于其内部的感应元件与目标气体之间的相互作用。不同的气体传感器可能采用不同的工作原理&#xff0c;但其核心目的都是将气体的浓度或成分转化为可测量和处理的电信号。 PID气体传感器 以常见的电化学式气体传感器为例&#xff0c;其工作原理涉及气体…

Euro Efficiency(POJ, Open judge)

题目链接: 1252 -- Euro Efficiency 题目描述: 思路: 题面的大概意思就是给你一组基本面值的钱币&#xff0c;问你要凑出指定的面值最少需要多少个钱币的参与&#xff0c;钱币的参与可以是加法也可以是减法。 分析一下&#xff0c;由于答案与钱币参与的顺序无关&#xff0c;…

【C++入门(3)】函数重载、引用

一、函数重载 1、函数重载概念 函数重载是指在同一作用域中&#xff0c;具有不同形参列表&#xff08;参数的 个数 或 类型 或类型顺序 不同&#xff09;的同名函数。 C语言中不允许同名函数的存在&#xff0c;如果一个程序中有两个函数的函数名完全相同&#xff0c;就会报错…

轻松4步!格式工厂怎么转换mp3教会你

在数字化时代&#xff0c;音频文件格式转换变得越发重要&#xff0c;而格式工厂作为一款强大而多功能的工具&#xff0c;为我们提供了便捷的音频转换解决方案。特别是在将音频文件转换为MP3的需求上&#xff0c;格式工厂以其简便易用的特点备受欢迎。格式工厂怎么转换mp3&#…