了解Linux —— 理解其中的权限
前言
在了解Linux权限之前,先来探讨我们使用的
shell命令它到底是什么?
Linux 是一个操作系统,我们称其为内核(kernel) ,正常情况下,我们一般用户操作并不是去直接使用内核,而是通过kernel 的外壳程序,也就是shell 与kernel 进行沟通。
Shell的简单定义:命令行解释器:
- 将使用者的命令翻译给和内核处理。
- 将核心的处理结果翻译给使用者。
对于Windows ,我们使用图形化界面,这并不是直接操作Windows内核,而是通过图形接口,点击,然后完成我们的操作。
而Shell对于Linux 有相同的作用,Shell主要对我们的指令进行解析,解析指令传给Linux内核,再根据内核运行出结果,解析给用户。
这里打个比方:
你是一名比较内向的学生,你暗恋这同班的一名女同学,你不好意思向她表达爱意,然后你就通过她的闺蜜(或者朋友)向她含蓄的表达自己对她的喜欢,她闺蜜就将你的意思传达给她;然后她闺蜜再将她的意思传达给你。
这里你就是一名普通用户,你暗恋的女同学就好比操作系统内核,而她的闺蜜就相当于
Shell。
一、什么是权限
什么是权限,这个就字面意思,哈哈。
在Linux下,有两种用户:一是超级用户(root)、二是普通用户。
超级用户(
root): 可以再Linux系统下做任何事情,不受限制普通用户: 在
Linux下受到权限的限制,只能做部分事情
超级用户的命令提示符是#,普通用户的命令提示符是$

root用户下创建普通用户
root 就是Linux 下的超级用户,它可以创建和删除普通用户,修改普通用户密码等等。
创建用户:
useradd 用户名

也可能显示如下图所示,(原因是家目录中已经有用户lian的目录)。

修改用户密码:
passwd 用户名

删除用户:
userdel 用户名

用户的切换
知道了如何创建用户,现在来看用户之间的切换。
su 用户名

二、Linux权限管理
1. 文件访问者的分类(人/用户)
- 文件/目录的拥有者:u — User
- 文件/目录的所属组:g — Group
- 其他用户:o — Other
知道了文件访问者分为三种,那有什么用呢?接着来看。
2. 文件类型和访问权限
文件属性:
我们知道,ll 是可以查看文件属性,现在来看一下:

一眼看去,烟花缭乱的;文件属性有很多,首先文件大小、文件最新修改时间和文件名这些就不用多说了,(连接数后面再讲解)
现在来看文件类型、文件权限和文件拥有者和所属组这写内容。
文件类型:
首先,文件类型对应文件属性中的开头,(例如:以d 开头的文件是目录/文件夹;以-开头的文件就是普通文件)
d:文件夹/目录
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
文件权限:
文件权限就三种,分别是r(可读) 、 w(可写) 和 x (可执行)。
r:对于文件来说,具有读取文件内容的权限;对于目录,具有浏览目录信息的权限。
w:对于文件来说,具有修改文件内容的权限;对于目录,具有创建、删除和移动目录中文件的权限。
x:对于文件来说,具有可执行文件的权限;对于目录来说,具有进入目录的权限。
-:表示不具有该部分权限。
再回头看,文件权限,它对应的是9个字符啊;这就涉及到文件权限中文件拥有者、文件所属组和其他用户这部分概念了。

以这个为例,看以权限:
首先,以
d开头表明这是一个目录;其次的三个字符
rwx: 这是文件拥有者的三个权限再后面三个字符
rwx: 这是文件所属组的三个权限最后的三个字符
r-x: 这是其他用户的三个权限
权限的表示方法:
| Linux表示 | 权限说明 |
|---|---|
--- | 没有任何权限 |
r-- | 只读 |
-w- | 只写 |
--x | 仅可执行 |
rw- | 可读可写 |
r-x | 可读可执行 |
-wx | 可写可执行 |
rwx | 可读可写可执行 |
除了上图所示表示方式,还有一种表示方式(8进制表示)
我们将每一个访问者的三个权限看作一个二进制数(其中
-表示0,其余表示1);这样我们就得到了一个<=7并且>=0的二进制数(比如rwx就是111对应的数是7,---就是000对应的数是0)。这样我们就能将权限(9个字符)转化成一个8进制数(比如:
rw-rw-rw-就是666,rwxrwxrwx就是777)。
| 权限符号 | 8进制 | 2进制 |
|---|---|---|
r-- | 4 | 100 |
-w- | 2 | 010 |
--x | 1 | 001 |
rw- | 6 | 110 |
r-x | 5 | 101 |
-wx | 3 | 011 |
rwx | 7 | 111 |
--- | 0 | 000 |
文件访问权限的相关设置方法
说了这么多,那我们能不能自己设置这些权限?当然可以,接着往下看
chmod修改文件权限
首先,我们应该明白一点,只有文件所有者和
root可以修改权限
使用格式
chmod [参数] 权限 文件名

现在来看一下,修改权限有没有成功

chmod 权限命令值的格式
+: 向权限范围内加权限
-: 向权限范围内减(去掉)权限
=: 向权限范围内赋予代号所表示的权限用户符号
u: 拥有者g: 所属组o: 其他用户a: 所有用户选项
-R: 递归修改文件权限
chmod o+w code.c
chmod o-w code.c
设置权限还可以直接使用8进制数来设置

chmod 777 code.c
chmod 666 code.c
chown
现在,我是文件的所有者,但是我不想要了,我想把文件所有者设置成别人;
chown 就是用来修改文件所有者的(有个前提,需要root权限)
选项:
-R: 递归修改文件所有者
chown [参数] 用户名 文件名

chgrp修改文件所属组
现在我们指定如何修改文件所有者了,那如何修改文件所属组呢?
chgrp用来修改文件所属组(这个前提也是,需要root权限)
chgrp [参数] 用户组名 文件名

umask 查看修改文件掩码
现在我们新建的文件,默认权限是664(
rw-rw-r--);新建的目录,默认权限是775(rwxrwxr-x);这个能不能修改呢?
usmak用来查看和修改文件掩码
在看这个之前,先来看文件权限又什么影响的:
文件权限 = 默认权限 &(
~umask)
默认权限
- 新建文件夹默认权限=0666
- 新建目录默认权限=0777
umask 权限掩码
可以直接用
umask查询和修改
umask //查看
umask 044 //修改权限掩码
举例:

我们也可以设置权限掩码:

3、粘滞位
在Linux系统中,粘滞位 是一种特殊权限位,主要用于控制对特定目录中文件的删除操作。设置粘滞位后,只有文件的所有者或 root 用户才能删除或移动该文件,而其他用户即使有写权限也不能删除或移动这些文件
简单来说就是,有了粘滞位限制,普通用户只能删除和移动自己的文件(
root无视粘滞位)。注意: 粘滞位对目录有效,对文件无效。
粘滞位的作用:
粘滞位通常用于多用户环境中的公共目录,以防止用户删除或移动其他用户的文件。设置粘滞位后,目录的其他用户权限位会显示为
t或T。
设置粘滞位
chmod +t 目录名 //给目录添加粘滞位
chmod -t 目录名 //给目录去掉粘滞位
当一个目录被设置为粘滞位,则该目录下的文件只能由
- 超级管理员(
root)删除- 该目录的所有者删除
- 该文件的所有者删
三、番外篇:sudo提权
这里来了解一下
sudo提权,它可以让执行的只有拥有root权限。
但是,我们现在使用sudo提权显示失败:

这里提示大概意思就是,用户lxb不在sudoers这个文件里,(sudoers文件就好似系统里的白名单)。
sudoers这个文件在/etc/sudoers路径下,我们只需要去这个文件里进行修改即可;
我们需要在这个文件中添加这样一行内容:
[用户名] ALL=(ALL:ALL) ALL
在文件中大致在100行作用 (CentOs下),(ubantu大致在20行)
创建完成之后我们就能够让普通用户进sudo提权了。

有了
sudo提权以后,我们就可以使用普通用户,必要时使用sudo提权,而不需要切换账号了。
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2oul0hvapjsws
相关文章:
了解Linux —— 理解其中的权限
前言 在了解Linux权限之前,先来探讨我们使用的shell 命令它到底是什么? Linux 是一个操作系统,我们称其为内核(kernel) ,正常情况下,我们一般用户操作并不是去直接使用内核,而是通过kernel 的外壳程序&…...
知识图谱嵌入与因果推理的结合
知识图谱通过节点(实体)和边(关系)来表示现实世界中的信息,但如何将这些信息转化为可进行推理和决策的形式,仍然是一个挑战。 另一方面,因果推理(Causal Inference)作为…...
STM32 PWM波形详细图解
目录 前言 一 PWM介绍 1.1 PWM简介 1.2 STM32F103 PWM介绍 1.3 时钟周期与占空比 二.引脚映像关系 2.1引脚映像与寄存器 2.2 复用功能映像 三. PWM 配置步骤 3.1相关原理图 3.2配置流程 3.2.1 步骤一二: 3.2.2 步骤三: 3.2.3 步骤四五六七: …...
Python Web 开发 FastAPI 入门:从基础架构到框架比较
Python Web 开发 FastAPI 入门:从基础架构到框架比较 目录 🖥️ Web 服务器概述(如 Nginx、Apache)🔗 前后端分离架构详解🔄 HTTP 路由和请求处理机制🧰 Web 框架概述:Django、Fla…...
基于STM32的智能仓库管理系统设计
目录 引言环境准备 硬件准备软件准备智能仓库管理系统基础 控制系统架构功能描述代码实现:实现智能仓库管理系统 4.1 RFID标签读取模块4.2 库存管理模块4.3 数据显示与监控模块4.4 无线通信模块应用场景:智能仓库管理系统优化问题解决方案与优化收尾与总…...
排序算法--堆排序【图文详解】
“留在码头的船才最安全” “但亲爱的,那不是造船的目的。 堆--插入heapInsert 原来有一个大根堆,如图: 现在要新插入一个数字50,进行插入 流程:和父亲相比,如果比父亲大,和父亲交换ÿ…...
FCBP 认证考试要点摘要
理论知识 数据处理与分析:包括数据的收集、清洗、转换、存储等基础操作,以及数据分析方法,如描述性统计分析、相关性分析、数据挖掘算法等的理解和应用 。数据可视化:涉及图表类型的选择与应用,如柱状图、折线图、饼图…...
鸿蒙生态崛起的机遇有什么
鸿蒙生态系统的崛起为各个领域带来了多个机遇,主要体现在以下几个方面: 智能设备的互联互通:鸿蒙系统旨在实现不同设备之间的无缝连接,为物联网(IoT)设备的发展提供了良好的基础。这将推动智能家居、智慧城…...
基础(函数、枚举)错题汇总
枚举默认从0开始,指定后会按顺序赋值 而这个枚举变量X,如果在全局(函数外部)定义,那默认为0,如果在函数内部(局部变量),那就是随机值,必须初始化。 枚举变量…...
【Spark源码分析】规则框架- `analysis`分析阶段使用的规则
analysis分析阶段使用的规则 规则批策略规则说明SubstitutionfixedPointOptimizeUpdateFields该规则优化了 UpdateFields 表达式链,因此看起来更像优化规则。但是,在处理深嵌套模式时,UpdateFields 表达式树可能会非常复杂,导致分…...
mysql--二进制安装编译安装yum安装
二进制安装 创建用户和组 [rootlocalhost ~]# groupadd -r -g 306 mysql [rootlocalhost ~]# useradd -r -g 306 -u 306 -d /data/mysql mysql 创建文件夹并添加所属文件用户和组 [rootlocalhost ~]# mkdir -p /data/mysql [rootlocalhost ~]# chown mysql:mysql /data/mysql …...
《Django 5 By Example》阅读笔记:p339-p358
《Django 5 By Example》学习第12天,p339-p358总结,总计20页。 一、技术总结 1.项目(购物网站) django-admin startproject myshop 虽然这里只是示例,但我觉得这种命名为 myxxx 的习惯非常不好,因为在实际应用中,是…...
鸿蒙修饰符
文章目录 一、引言1.1 什么是修饰符1.2 修饰符在鸿蒙开发中的重要性1.3 修饰符的作用机制 二、UI装饰类修饰符2.1 Styles修饰符2.1.1 基本概念和使用场景2.1.2 使用示例2.1.3 最佳实践 2.2 Extend修饰符2.2.1 基本概念2.2.2 使用示例2.2.3 Extend vs Styles 对比2.2.4 使用建议…...
springboot359智慧草莓基地管理系统(论文+源码)_kaic
毕 业 设 计(论 文) 题目:智慧草莓基地管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本智慧草莓基地管理系统就…...
单片机位数对性能会产生什么影响?!
单片机的位数是指其处理器核心的位宽,通常以比特(bit)为单位。常见的位数有8位、16位、32位和64位等。 单片机位数越高,处理器能够处理的数据量越大,性能也相应提高。 以下是对单片机位数对性能影响的详细分析&#…...
stm32内部高速晶振打开作为主时钟
首先建议你别这么干,因为内部晶振特别容易受温度等外界影响,很容易卡死或堵死程序 我是因为没画外部晶振电路,所以只能开内部晶振来作为时钟 适用于stm32f103系列 把下面的代码换掉源文件里的时钟源配置 /* 开启HSI 即内部晶振时钟 */RCC…...
【分页查询】.NET开源 ORM 框架 SqlSugar 系列
.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...
【CSS in Depth 2 精译_061】9.4 CSS 中的模式库 + 9.5 本章小结
当前内容所在位置(可进入专栏查看其他译好的章节内容) 【第九章 CSS 的模块化与作用域】 ✔️ 9.1 模块的定义 9.1.1 模块和全局样式9.1.2 一个简单的 CSS 模块9.1.3 模块的变体9.1.4 多元素模块 9.2 将模块组合为更大的结构 9.2.1 模块中多个职责的拆分…...
惠普电脑切换默认F1至F12快捷键,FN切换
发现新买的惠普电脑,按F1至F12发现是快捷功能键,而按fnF1至F12才是windows的功能键和正常我自己使用的电脑刚好相反,实在太不方便了。 解决办法需要进入biso里面去把功能键模式选中给关掉,才能恢复回来...
计算机的错误计算(一百七十)
摘要 回复一中学生来信,探讨 MATLAB 关于算式 的计算问题。 在计算机的错误计算(一百三十二)中,我们探讨了手持式计算器关于算式 的计算问题。一中学生来信询问该算式在数学软件中是否会出错。 例1. 在 MATLAB 中计算 . 首…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
