【Linux】在Linux操作系统下对于权限的理解

news2024/11/24 14:21:55

目录

❤️前言

正文

Linux下的不同用户

Linux的权限管理

文件访问者的分类

文件类型和访问权限

文件访问权限的修改方法

默认权限

目录权限

粘滞位

 🍀结语


❤️前言

        大家好!今天这篇文章主要是关于Linux操作系统下对于各种权限的理解问题,从这篇文章开始,小狮子算是正式进入关于Linux操作系统的学习啦!

正文

Linux下的不同用户

        首先,让我们一起来了解Linux下的不同用户和他们对应的特征。

        Linux下共有两种不同的用户,分别是超级用户(root)和普通用户。超级用户在Linux操作系统下几乎可以做任何的事情,不受大部分约束;而普通用户在Linux下只能做一些有限的事。除此之外,超级用户的命令提示符是'#',普通用户的命令提示符是‘$’。

        在这两个用户之间有一条相关的指令 su 可以实现用户之间的相互切换。su的用法是 su 用户名,只要我们有对应的口令(密码),我们就能由root用户变成普通用户,由普通用户变成root用户,或是由一个普通用户登录到不同的普通用户。

        除此之外,如果我们要以普通用户的身份对某条指令进行权限提高的话,也可以使用sudo指令,具体的使用方式就是 sudo command ,这种方式需要我们将这个普通用户加入到系统的信任白名单中。

Linux的权限管理

        在日常生活中,我们也会使用权限这个词来表示某个访问者能做某件事情的程度大小。我们以一个人来代表这个访问者,这个人的权限会与很多东西有关,例如权限会与这个人的具体属性有关,他是谁?他的身份地位是怎样的?

        在Linux中就是这样,如果我们要对Linux下的各种文件目录进行不同的操作,就需要各种不同类型和级别的权限。

        而首先我们对访问者的属性与权限的关系进行研究,在Linux中区分一个具体的人主要是与这个人的用户名有关,也许他是root用户,也或许他是一个普通用户。之前我们就有说过,普通用户与root用户天生具有不同级别的权限。普通用户受到各种权限问题的限制,而root用户几乎不受到限制。

文件访问者的分类

        除了用户的基础属性之外,权限还与他的身份角色有关。举个例子,在现实生活中,我是一名学生,这代表了我的身份能做与学习相关的事情,这层身份下,我不能去代替教师对其他学生进行授课,而我们的老师作为教师有这样的权限和能力去做上课相关的事情。

        那么在Linux中,用户的身份角色则是主要区分于此用户与某个具体文件的关系,分别是 owner(拥有者)、group(所属组)、other(其他人),不同的身份具有不同的权限。(当然,root用户是可以无视身份带来的不同权限的)

文件类型和访问权限

        我们如何使用某种东西不仅与人的属性有关,也与事物本身的性质有关,映射到权限管理中就是说权限也与文件类型和文件规定的访问权限有关。

       在Linux中,我们可以使用 ls 指令对文件进行查看,其中查看文件的具体属性需要用 ls 指令的 -l 选项。如果我们用ls指令显示出文件属性将会是如下的形式:

         对应的信息类型是这样的:

         现在我们对文件的各个属性进行分别介绍:

文件类型

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件

        在Linux操作系统中文件类型没有直接的意义,而是看用户有何需求,从而将文件分为各种不同的文件类型,并让它们拥有对应的功能。

基本权限

  1. 读(r):read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
  2. 写(w):write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
  3. 执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
  4. - 表示不具有该项权限。

        在执行 ls -l 指令后所展示的文件信息中,2-10位表示权限,每三位表示一种访问者的权限,由左到右分别代表所有者(owner)、所属组(group)、其他人(other)拥有的权限。三位权限的表示方式相同,从左到右分别关于读、写、执行三个权限,可以标上对应的字母,也可以使用 - 表示没有这种权限。(例如: rwx 表示拥有全部的权限,r-x表示有读和执行的权限,没有写的权限)

        除此之外,文件权限值还可以用数字进行表示,对应读、写、执行的顺序,二进制以 0 表示无此权限,以 1 表示有此权限。(例如:111 表示拥有所有权限,000 表示没有权限) 八进制以一个数字表示对应的权限,其值就是以二进制转换而来,7 表示拥有所有权限,6 表示有读写权限。

        如果我们想要对文件进行某种操作却没有对应的权限时,会发生如下的现象(例如我没有读文件的权限却想要读此文件):

文件访问权限的修改方法

        作为一个文件的拥有者,我们有时需要根据我们的意愿对文件的访问权限进行管理,这时我们就需要使用到一些指令来完成这个目的。(只有文件的的拥有者和root用户才可以改变文件的权限)

1.chmod:

         chmod 可以设置文件的访问权限,使用方式是 chmod (选项参数) 权限 文件名 ,其中权限有两种表示方法:

(1)用户表示符+ - =权限字符

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
  • u:拥有者
  • g:拥有者同组用户
  • o:其它用户
  • a:所有用户

        具体的使用方式例如:

chmod a+r test.txt // 给所有用户加上读权限
chmod u+x test.txt // 给拥有者加上执行权限

(2)三位8进制数字

        使用三位8进制数字对权限进行设置,三位数字分别指向拥有者、所属组以及其他人,直接覆盖原有的权限,具体的使用方式如下:

chmod 777 test.txt // 给所有类型的访问者设置为全权限

        除此之外,我们还可以改变文件的拥有者身份和所属组,分别使用的是 chown 和 chgrp 这两个指令。(需要root权限)

默认权限

        那么当我们知道了关于权限设置的一些知识,也许你会有这样的疑问:当我们刚刚创建出一个文件时,它们的默认权限为什么会是我们所看到的那样?(为什么普通文件的默认权限是664,而目录文件的默认权限是775?)

        我们可以输入一个 umask 指令,这个指令能告诉我们当前的权限掩码,也可以在其后面加上权限值以改变当前的权限掩码(超级用户默认掩码值为022,普通用 户默认为002)。

        默认权限的生成与umask有关,当我们创建一个文件时,如果是普通文件,它的初始权限是666,而如果它是目录文件,那么它的初始权限是777,这时会发生一次运算,也就是:默认权限 = 初始权限 & (~umask)

目录权限

        现在我们了解了关于普通文件的权限问题,但是目录文件的各种权限意义似乎不太一样,因为我们无法在目录中直接写入具体的信息或是改变一些内容,而是通过创建、改变目录中的文件来完成对于目录的改动。那么目录中的读、写、执行权限分别代表着什么呢?

r 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。

w 可写权限: 如果目录没有可写权限, 则无法在目录中对文件进行创建、删除、重命名。

x 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中。

        我们可以对其进行理解记忆,例如文件的读权限代表我们是否能够读取文件的各种信息,那么对于目录来说,就相当于是否能够读取目录所含文件的信息。而写权限则是代表我们不能改变目录本身包含的关于目录中文件的信息。

        那么也就是说,如果我们拥有一个目录文件的写权限,那么我们就可以不论这个文件的归属就将这个文件删除,这是否有些不合理呢?

粘滞位

        在Linux默认的根目录下会存在一个 tmp文件,这个目录是设置出来给所有用户共享的目录,而它的 other 位置上的访问权限似乎与正常情况不太一样,是一个 t 的符号,这个符号表示这个目录被设置了粘滞位,设置了粘滞位的目录中,相对于文件的 other 和 group 访问者不能删除这个文件。

        也就是说:当一个目录设置了粘滞位,那么该目录下的文件只能由root用户和该文件所有者才能删除。

        粘滞位的设置方式是: chmod +t 目录名

 🍀结语

        谢谢大家的阅读,同时希望大家阅读了这篇文章之后能有所收获。

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

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

相关文章

AI人工智能预处理数据的方法和技术有哪些?

AI人工智能 预处理数据 在人工智能(Artificial Intelligence,简称AI)领域中,数据预处理是非常重要的一环。它是在将数据输入到模型之前对数据进行处理和清洗的过程。数据预处理可以提高模型的准确性、可靠性和可解释性。 本文将…

Springboot +spring security,基于多种方式配置登录用户:memory、jdbc、MyBatis

一.简介 前面章节所有的用户信息(用户名和密码)都是基于配置文件配置的,这篇文章学习基于多种方式配置登录用户,比如: memory(内存)jdbcMyBatis 二.创建项目 如何创建一个SpringSecurity项目,前面文章已…

Python入门【序列、列表简介、列表的创建 、列表元素的增加、列表元素的删除 】(四)-全面详解(学习总结---从入门到深化)

👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…

微服务架构初探

大家好,我是易安!我们今天来谈一谈微服务架构的前世今生。 我们先来看看维基百科是如何定义微服务的。微服务的概念最早是在2014年由Martin Fowler和James Lewis共同提出,他们定义了微服务是由单一应用程序构成的小服务,拥有自己的…

chatgpt赋能Python-pythonfalse

PythonFalse: Python中的False值 在Python编程语言中,布尔(Boolean)是一种基本数据类型,它只有两个值:True和False。这篇文章将讨论Python中的False值,并提供有关如何使用它的指南。 什么是PythonFalse PythonFalse…

chatgpt赋能Python-pythongil

Python GIL(全局解释器锁)介绍 Python GIL 是全局解释器锁(Global Interpreter Lock)的简称,它是 Python 解释器中的一个重要概念。GIL 的作用是确保任何时间只有一个线程在执行 Python 指令,以防止多个线…

jsonmodels.model.base

欢迎来到猫子酱的学习之旅 jsonmodels.model创建模型用法验证 validate()验证器 Validators自定义验证器(**)默认值转换为Python结构(和JSON)为您的模型创建JSON模式(***) (结合Draft7Validator)结构和对象…

蓝桥杯单片机串口通信学习提升笔记

今日得以继续蓝桥杯国赛备赛之旅: 有道是 “不知何事萦怀抱,醒也无聊,醉也无聊,梦也何曾到谢桥。” 那我们该如何 让这位诗人纳兰 “再听乐府曲 ,畅解相思苦”呢? 那就建立起串口通信吧! 我…

论文阅读_音频表示_W2V-BERT

信息 number headings: auto, first-level 2, max 4, _.1.1 name_en: w2v-BERT: Combining Contrastive Learning and Masked Language Modeling for Self-Supervised Speech Pre-Training name_ch: W2V-BERT:结合对比学习和Mask语言建模进行自监督语音预训练 pape…

Redis实现全局唯一Id

Redis实现全局唯一Id 全局唯一Id简介二、Redis实现全局唯一Id实践2.1添加RedisIdWorker配置类2.2测试类 全局唯一Id简介 系统当中有些场景如果使用数据库自增ID就存在一些问题: id的规律性太明显受单表数据量的限制 场景分析:如果我们的id具有太明显的…

基于UDP和TCP套接字实现简单的回显客户端服务器程序

目录 1. 套接字 2. 基于UDP 套接字实现的简单客户端 服务器程序 3. 基于TCP套接字实现的简单客户端 服务器程序 1. 套接字 之前我们有分享到协议分层这个概念,其中就讲到上层协议调用下层协议,下层协议给上层协议提供支持,这里支持指的是就是socket套接字,它是操作系统给应用…

宁波市天一杯 --- Crypto wp

文章目录 secretrsa secret 题目: p134261118796789547851478407090640074022214132682000430136383795981942884853000826171189906102866323044078348933419038543719361923320694974970600426450755845839235949167391987970330836004768360774676424958554946…

坦克大战进阶--发射子弹

坦克大战进阶–发射子弹 1. 坦克大战0.3 1.1 分析 利用线程基础的知识,把坦克大战再次进阶一下:当我们按下J键,坦克就能够发射一颗子弹。 1.2 思路 当发射一颗子弹后,就相当于启动一个线程Mytank 有子弹的对象,当…

MSP432笔记5——外部中断

所用单片机型号:MSP432P401r 今日继续我的MSP432电赛速通之路。 外部中断是个很有用的配置 STM32几乎每个I/O口都能配置复用为外部中断 但MSP432并不是这样。 我经过查阅数据手册发现支持中断的引脚为: P1^0~ P1^7 P3^0~ P3^7 P5^0~ P5^…

Gateway服务网关入门

Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。…

【网络字节序】

网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送…

【C++】21年精通C++之泛型编程和模板初阶知识

❤️前言 大家好!今天和大家一起学习关于C泛型编程和模板初阶的相关知识。 正文 我们之前已经学习了C中非常重要的一个特性——函数重载,函数重载很好地提高了我们代码的可读性。但是对于适配多种参数的某种函数来说,我们如果使用函数重载就…

感知程序从ros切换到cyber_rt框架下,pcl相关问题

1.在ubuntu20.04下,原感知程序需要的是pcl1.8.1,车上其他程序使用的是pcl.1.10.0或者pcl1.10.0,在编译pcl1.10.0时会编译通不过,而pcl1.10.1可以顺利编译通过,安装pcl1.8.1时遇到的问题可能如下,及对应的修…

CTF必看~ PHP反序列化漏洞6:绝妙_wakeup绕过技巧

作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,在于他所拥有的。可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

iptables防火墙2

iptables防火墙 一:SNAT原理与应用 SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet(私有不能早Internet中正常路由)SNAT原理:修改数据包的源地址。 SNAT转换前提条件: 1.局域网各主机已正确设…