[Linux]:权限

embedded/2024/9/20 3:56:54/ 标签: linux, umark, 权限, chmod, 粘滞位, 用户

img

✨✨ 欢迎大家来到贝蒂大讲堂✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

所属专栏:Linux学习

贝蒂的主页:Betty’s blog

1. Linux权限的基本概念

1.1 root与普通用户

Linux系统中,存在两种主要用户类型,即超级用户root与普通用户。超级用户拥有极高的权限,可以在 Linux 统下执行几乎任何操作,其权限几乎不受限制。相比之下,普通用户通常只能在自己的工作目录/home/xxx内进行工作,并且在整个系统上所能进行的操作也较为有限。 换句话说,Linux系统中的权限概念主要是为了对普通用户的行为进行限制,以确保系统的安全性和稳定性。而超级用户由于其强大的权限,在使用时需要格外谨慎,以免误操作对系统造成严重破坏。 在命令提示符方面,超级用户的提示符为#,普通用户的提示符为$。这一区别可以帮助用户在使用命令行时快速区分自己当前所使用的用户身份,从而更好地掌握自己的操作权限范围。

1.2 创建与删除普通用户

实际上,使用root账号是比较危险的,因为root账号的权限太大,可能会因为误操作而造成不可挽回的结果,所以我们最好创建一个普通用户的账号平时使用。接下来我们就来谈一谈如何创建一个普通账户:

  1. 首先在root用户下,输入指令<font style="color:rgb(77, 77, 77);">addser yourid</font>,其中<font style="color:rgb(77, 77, 77);">yourid</font>是你自己创建的用户名。

  1. 然后输入指令passwd yourid来设置你的密码。(其中输入密码并不会显示)

  1. 最后再次确认密码,密码设置就成功。

在知道如何创建新用户之后,我们可以通过我们创建的用户名与密码登录普通用户

然后我们再来谈谈如何删除用户

直接在root用户下,输入指令userdel -r yourid,即可删除。

1.3 普通用户与root的切换

虽然我们平时使用的是普通用户,但是偶尔有些指令就需要在root用户下执行。所以这时候就需要我们切换用户

如果从普通用户切换为root用户,可以使用两种指令:su(su root)su-。其中第一个指令,仅仅是一个用户身份的切换,用户所处的路径不发生改变。而第二个指令则会更改为家目录/root下,其实就是su -就相当于重新登录。

如果是从root用户切换到普通用户,直接输入指令 su user

切换用户后,若想切回上次的用户,可按Ctrl+d实现,也可以输入指令exit

但是有时候我们并不知道root用户的密码,但是又需要root用户去执行某条指令,那么这时就需要输入指令sudo 指令,这条指令就可以提升我们要执行指令的权限,即让root用户执行。但是使用这个指令有一个条件就是root用户将此普通用户添加到可信任白名单中。

如果要将某个用户添加进入可信任白名单中,首先在root用户下,通过指令vim /etc/sudoers对应文件。

然后我们就可以使用sudo 指令来提升指令时的权限

2. Linux权限管理

2.1 用户划分

Linux中,为了方便管理文件,还对我们的用户或者文件访问者进行了分类:

文件和文件目录的拥有者:u—User
文件和文件目录的所属组:g—Group
其它用户(即不是这个文件的拥有者):o—Others

因为other可能存在多个,所以除了文件拥有者和文件所属组之外的都叫other

2.2 文件类型与访问权限

首先是文件类型,在Linux下,可以分为以下几种文件。

  1. -:普通文件(指不包含有文件系统信息的结构信息的文件,是用户所接触到的文件,比如常见的.exe.c.txt,归档文件等在Linux中统称为普通文件)。
  2. d:目录(文件夹)。
  3. l:软链接(类似Windows的快捷方式)文件。
  4. b:块设备文件(例如硬盘、光驱等)。
  5. p:管道文件。
  6. c:字符设备文件(例如屏幕等串口设备)。
  7. s:套接字文件。

然后文件的访问权限也可以分为:可读®、可写(w)可执行(x)

如果仔细观察就可以发现,其一共有十个字符,除开第一个代表文件的类型外,后九个每三个为一组,分别代表拥有者,所属组,其他用户的可读,可写,可执行的权限

字符表示法说明
r - -仅可读
- w -仅可写
- - x仅可执行
r w -可读可写
r - x可读可执行
- w x可写可执行
r w x可读可写可执行
- - -权限

其实除了这种表示方法之外还有一种表示方法那就是**八进制表示法,**如下图:

字符表示法二进制八进制数值表示法说明
r - -1004仅可读
- w -0102仅可写
- - x0011仅可执行
r w -1106可读可写
r - x1015可读可执行
- w x0113可写可执行
r w x1117可读可写可执行
- - -0000权限

2.3 权限的设置

在了解权限的分类之后,我们接下来学习如何更改文件的访问权限

  1. 语法: chmod 选项 权限 文件名或目录名
  2. 功能: 设置文件的访问权限
  3. 常用选项: -R 递归修改目录文件的权限

1. 方法一: 用户符号 +/-/= 权限字符

+ :向权限范围增加权限代号所表示的权限
- :向权限范围取消权限代号所表示的权限
= :向权限范围赋予权限代号所表示的权限

用户符号:u:拥有者。g:所属组。o:other。a:所有用户

值得注意的是:如果相同时改变不同种类用户的访问权限,中间需要用逗号隔开。

  1. 方法二: 八进制数字

接下来我们来讨论如何更改文件的拥有者。

  1. 语法: chown 选项 用户名 文件名或目录名
  2. 功能: 修改文件的拥有者。
  3. 常用选项: -R递归修改目录文件的拥有者。

然我们也可以通过以下命令改变文件所属组。

  1. 语法:chgrp 选项 用户名 文件名或目录名
  2. 功能: 修改文件的所属组。
  3. 常用选项: -R 递归修改目录文件的所属组。

其实我们可以使用chown指令同时改变拥有者与所属组,中间用冒号隔开即可。

当然以上指令都需要在root用户下执行。

2.4 文件掩码

实际上,新建文件的默认权限为0666(rw- rw- rw-),新建目录的默认权限为0777(rwx rwx rwx),其中第一位与特殊权限相关,这里我们不需要深究。但是实际上新建文件与目录的默认权限并不如上所说,这是怎么回事呢?

其实这种情况就与我们的文件掩码umask有关,我们设默认权限mask,实际创建出的文件或目录权限mask&umask

我们可以通过这个指令umask 八进制数来修改默认的掩码umask

其中需要注意的是:root用户的默认掩码为0022,而普通用户0002

2.5 权限的作用

对于普通文件来说,可读,可写,可执行这种字面含义就能帮助我们理解其权限的作用,但是对于目录来说,就有所区别了。

  1. 可读权限 如果用户没有该目录的可读权限,则无法通过ls指令查看目录中的文件内容。
  2. 可写权限 如果用户没有该目录的可写权限,则无法通过一系列指令在目录中创建文件或删除文件。
  3. 可执行权限 如果用户没有该目录的可执行权限,则无法通过cd指令进入到目录当中。

但是这种情况就会导致一个非常严重的问题,那就是:拥有可读权限的人可以删除文件,这是不可取的,因为这个文件不一定是你创建的,你不可能去删除别人的文件。

所以了为了解决这个问题就引入了粘滞位的概念。

2.6. 粘滞位

为目录添加粘滞位特别简单只需要输入指令chmod+t 目录名

img

在为目录添加了粘滞位之后,该目录文件就只能由:root用户删除,该目录或文件的拥有者删除。


http://www.ppmy.cn/embedded/108825.html

相关文章

海清智元-设备下发人员信息和人脸

public static final Integer TIMEOUT 10000;//登录private static String getAuth(IotCameraParam camera) {return "Basic " Base64.encode(camera.getUsername() ":" camera.getPassword());}// 拼接登录urlprivate static String getHost(IotCamer…

PostgreSQL技术内幕7:PostgreSQL查询编译

文章目录 0.简介1.整体过程2.查询分析2.1 Lex2.2 Yacc2.3 PG词法分析和语法分析介绍2.4 PG语义分析 4.查询优化4.1 预处理4.1.1 提升子链接和子查询4.1.2 预处理表达式4.1.3 处理HAVING子句 4.2 改进查询树4.2.1 路径生成4.2.2 代价估计 4.3 计划生成 0.简介 一次完整的SQL执行…

浏览器百科:网页存储篇-如何在Chrome中打开Cookie(二)

1.引言 在上一章节《浏览器百科&#xff1a;网页存储篇-Cookie详解&#xff08;一&#xff09;》中&#xff0c;我们深入探讨了 Cookie 的基本概念、组成部分及其在网页存储中的重要作用。理解了 Cookie 的基础知识后&#xff0c;下一步是掌握如何在实际开发过程中管理和调试这…

【408 数据结构】第1章绪论

文章目录 绪论考纲DS 基本概念1. 基本概念2. 数据结构三要素 算法&#xff08;时/空间复杂度计算&#xff09;1. 算法概念2. 算法效率的度量时间复杂度&#xff1a;空间复杂度&#xff1a; 小结 绪论 考纲 计算时间复杂度和空间复杂度&#xff08;重点难点&#xff09; DS …

数学建模强化宝典(8)粒子群算法

前言 粒子群算法&#xff08;Particle Swarm Optimization, PSO&#xff09;是一种基于群体智能的优化算法&#xff0c;它源于对鸟群捕食行为的研究。通过模拟鸟群中的个体相互协作和信息共享来寻找最优解&#xff0c;粒子群算法已被广泛应用于函数优化、神经网络训练、模糊系统…

Arch - 架构安全性_授权(Authorization)

文章目录 OverView授权&#xff08;Authorization&#xff09;RBAC&#xff1a; 概述RBAC&#xff1a;基于角色的访问控制RBAC&#xff1a;主要元素 OAuth2&#xff1a;面向第三方应用的认证授权协议业务场景OAuth2的工作流程OAuth2 四种不同的授权方式授权码模式&#xff08;A…

Python可视化集大成之作 - Seaborn 介绍

我今天要介绍一款让你在数据可视化中游刃有余的利器——Seaborn包。作为Python数据可视化库中的一员&#xff0c;Seaborn不仅美观易用&#xff0c;而且功能丰富&#xff0c;是生物信息学中数据探索的好帮手。 为什么选择Seaborn&#xff1f; 1. 美观简洁 Seaborn的默认主题和颜…

【论文笔记】NDT: Neural Data Transformers (NBDT, 2022)

neural-data-transformers https://github.com/snel-repo/neural-data-transformers DANDI: Neural population dynamics during reachinghttps://dandiarchive.org/dandiset/000070/ Abstract 神经群体活动理论上反映了潜在的动态结构。这种结构可以使用具有显式动力学的状态…

2.2.3 UDP的可靠传输协议QUIC 1

2.2.3 UDP的可靠传输协议QUIC darren老师 这个好多啊2&#xff1a;47 3个小时 这里有课件pdf 看official code 对应职位&#xff1a;比如智能终端 udp可靠传输 ack重传 rtt t2收应答 - t1发时刻序号 tcp本来就有&#xff0c;udp没有&#xff0c;在应用层sendto &#xff08;…

【动手学深度学习】04 数据操作 + 数据预处理(个人向笔记)

数据操作 N维数组是机器学习和神经网络的主要数据结构其中 2-d 矩阵中每一行表示每一行表示一个样本 当维度来到三维的时候则可以表示成一张图片&#xff0c;再加一维就可以变成多张图片&#xff0c;再加一维则可以变成一个视频 访问元素 冒号表示从冒号左边的元素到冒号右…

MAT:一款针对MSSQL服务器的安全检测与审计工具

关于MAT MAT是一款针对MSSQL服务器的安全检测与审计工具&#xff0c;该工具使用C#开发&#xff0c;可以帮助广大研究人员快速识别和发现MSSQL 服务器中的安全问题&#xff0c;并实现安全检测与审计目的。 功能介绍 1、执行自动检查并识别安全问题&#xff1b; 2、允许通过 Win…

什么是云计算?

1.云计算的概念&#xff1f; 现阶段广为人们所接受的是美国国家标准与技术研究院&#xff08;National Institute of Standards and Technology&#xff0c;NIST&#xff09;给出的定义&#xff1a;“云计算”是一种按使用量付费的模式&#xff0c;这种模式提供可用的、便捷的、…

Java网络编程入门

在现代软件开发中&#xff0c;网络编程是一项不可或缺的技能。Java提供了强大的网络编程支持&#xff0c;使得开发者能够轻松地创建网络应用程序。今天将介绍Java中的网络编程基础&#xff0c;重点讲解Socket和ServerSocket类的使用。 什么是Socket&#xff1f; Socket是网络通…

计算机毕业设计选题推荐-酒店预订系统-Java/Python项目实战(亮点:数据备份、库存预警、数据统计)

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

经验笔记:软件许可(License)

软件许可笔记 引言 在当今数字化时代&#xff0c;软件已成为各行各业不可或缺的一部分。无论是个人用户还是企业机构&#xff0c;软件的选择和使用都至关重要。然而&#xff0c;软件的分发和使用并非无序&#xff0c;而是受到各种软件许可的规范。软件许可不仅定义了软件的使…

Linux网络编程IO管理

网络 IO 涉及到两个系统对象&#xff0c;一个是用户空间调用 IO 的进程或者线程&#xff0c;一个是内核空间的内核系统&#xff0c;比如发生 IO 操作 read 时&#xff0c;它会经历两个阶段&#xff1a; 等待内核协议栈的数据准备就绪&#xff1b;将内核中的数据拷贝到用户态的…

从零开始构建大语言模型并进行微调:全面指南

要从0开始搭建并训练一个大语言模型&#xff08;LLM&#xff09;&#xff0c;涉及到多个步骤和资源&#xff0c;包括理论理解、工具使用、数据准备、模型训练与微调。以下是一个从基础到应用的指南&#xff0c;帮助你理解并逐步实现这一目标。 1. 理解基础概念 在开始搭建大语…

线性调频信号脉冲压缩

注意&#xff0c;如果用线性调频信号频谱省略前面常数因子&#xff0c;得到的脉冲压缩信号也会有一个幅度的不同

Golang | Leetcode Golang题解之第389题找不同

题目&#xff1a; 题解&#xff1a; func findTheDifference(s, t string) (diff byte) {for i : range s {diff ^ s[i] ^ t[i]}return diff ^ t[len(t)-1] }

Linux入门攻坚——31、rpc概念及nfs和samba

NFS&#xff1a;Network File System 传统意义上&#xff0c;文件系统在内核中实现 RPC&#xff1a;函数调用&#xff08;远程主机上的函数&#xff09;&#xff0c;Remote Procedure Call protocol 一部分功能由本地程序完成 另一部分功能由远程主机上的 NFS本质…