了解Linux —— 理解其中的权限

news2024/12/28 0:39:54

前言

在了解Linux权限之前,先来探讨我们使用的shell 命令它到底是什么?

Linux 是一个操作系统,我们称其为内核(kernel) ,正常情况下,我们一般用户操作并不是去直接使用内核,而是通过kernel 的外壳程序,也就是shellkernel 进行沟通。

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- 就是666rwxrwxrwx就是777)。

权限符号8进制2进制
r--4100
-w-2010
--x1001
rw-6110
r-x5101
-wx3011
rwx7111
---0000

文件访问权限的相关设置方法

​ 说了这么多,那我们能不能自己设置这些权限?当然可以,接着往下看

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无视粘滞位)。

注意: 粘滞位对目录有效,对文件无效。

粘滞位的作用:

粘滞位通常用于多用户环境中的公共目录,以防止用户删除或移动其他用户的文件。设置粘滞位后,目录的其他用户权限位会显示为 tT

设置粘滞位

chmod +t 目录名 //给目录添加粘滞位
chmod -t 目录名 //给目录去掉粘滞位

当一个目录被设置为粘滞位,则该目录下的文件只能由

  1. 超级管理员(root)删除
  2. 该目录的所有者删除
  3. 该文件的所有者删

三、番外篇: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

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

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

相关文章

TYUT设计模式大题

对比简单工厂&#xff0c;工厂方法&#xff0c;抽象工厂模式 比较安全组合模式和透明组合模式 安全组合模式容器节点有管理子部件的方法&#xff0c;而叶子节点没有&#xff0c;防止在用户在叶子节点上调用不适当的方法&#xff0c;保证了的安全性&#xff0c;防止叶子节点暴露…

深入理解 AI 产品的核心价值——《AI产品经理手册》

现在&#xff0c;人们对AI 充满了兴趣和看法。这些年&#xff0c;我亲身经历了对AI 的感受和认识的此起彼伏。我还是学生时&#xff0c;就对AI 以及伴随而来的第四次工业革命感到无比激动和期待。然而&#xff0c;当我开始组织读书会&#xff0c;每月阅读有关AI 的书籍&#xf…

Vue 将推出「无虚拟DOM」版本,又是新的前端框架趋势?

文章目录 背景无虚拟DOM版的Vue3Vue Vapor 在线演练题外话&#xff1a;渲染流程 背景 随着 React 和 Vue 这些前端框架的爆火&#xff0c;他们的渲染方式&#xff0c;虚拟DOM&#xff0c;也跟着火了起来&#xff0c;大家都认为这是一种高性能批量更新DOM的方式但是近一两年有不…

IDEA自定义帆软函数步骤详解

前序&#xff1a; 在帆软里面有很多内置函数可以供我们使用&#xff0c;比如计算总和的SUM()函数, 计算绝对值的ABS()函数等等&#xff0c;但是很多时候随着业务的复杂性&#xff0c;这些函数已经不满足于我们复杂的计算要求&#xff0c;所以我们可以自定义一些函数来满足我们的…

pnpm的menorepo项目配置eslint和prettier

1、使用eslint脚手架安装相关依赖并生成对应配置文件 pnpm dlx eslint/create-config 自动安装了以下几个插件 生成的配置文件如下所示&#xff0c;和csdn其他教程里面不一样&#xff0c;这是因为eslint升级成9.xx版本了 需要node版本20以上 eslint 9.x 升级或使用指南&#xf…

计算机毕业设计Python+卷积神经网络股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

AWS账号提额

Lightsail提额 控制台右上角&#xff0c;用户名点开&#xff0c;选择Service Quotas 在导航栏中AWS服务中找到lightsail点进去 在搜索框搜索instance找到相应的实例类型申请配额 4.根据自己的需求选择要提额的地区 5.根据需求来提升配额数量,提升小额配额等大约1小时生效 Ligh…

Netty的内存池机制怎样设计的?

大家好&#xff0c;我是锋哥。今天分享关于【Netty的内存池机制怎样设计的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Netty的内存池机制怎样设计的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty 的内存池机制设计是为了提高性能&…

bind实验

服务端 查看域名 [rootclient yum.repos.d]# hostname client 设置域名 [rootclient yum.repos.d]# hostnamectl set-hostname dns1.openlab.edu [rootclient yum.repos.d]# cd [rootclient ~]# hostname dns1.openlab.edu 安装bind包 [rootclient ~]# yum install bind -y…

STM32 使用ARM Compiler V6 编译裸机 LWIP协议栈报错的解决方法

在lwip 的cc.h 中使用以下宏定义&#xff0c;来兼容 V5 和 V6编译器 #if defined (__ARMCC_VERSION) && (__ARMCC_VERSION > 6010050) /* ARM Compiler V6 */ #define __CC_ARM /* when use v6 compiler define this */ #endifV6编译的速度确实比V5块了好多倍。 …

鸿蒙开发-HMS Kit能力集(应用内支付、推送服务)

1 应用内支付 开发步骤 步骤一&#xff1a;判断当前登录的华为账号所在服务地是否支持应用内支付 在使用应用内支付之前&#xff0c;您的应用需要向IAP Kit发送queryEnvironmentStatus请求&#xff0c;以此判断用户当前登录的华为帐号所在的服务地是否在IAP Kit支持结算的国…

VBA代码解决方案第二十讲:EXCEL工作表的添加与删除

《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程&#xff0c;目前已经是第三版修订了。这套教程定位于入门后的提高&#xff0c;在学习这套教程过程中&#xff0c;侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码…

LeetCode-315. Count of Smaller Numbers After Self

目录 题目描述 解题思路 【C】 【Java】 复杂度分析 LeetCode-315. Count of Smaller Numbers After Selfhttps://leetcode.com/problems/count-of-smaller-numbers-after-self/description/ 题目描述 Given an integer array nums, return an integer array counts whe…

用c语言完成俄罗斯方块小游戏

用c语言完成俄罗斯方块小游戏 这估计是你在编程学习过程中的第一个小游戏开发&#xff0c;怎么说呢&#xff0c;在这里只针对刚学程序设计的学生&#xff0c;就是说刚接触C语言没多久&#xff0c;有一点功底的学生看看&#xff0c;简陋的代码&#xff0c;简陋的实现&#xff0…

23种设计模式-原型(Prototype)设计模式

文章目录 一.什么是原型设计模式&#xff1f;二.原型模式的特点三.原型模式的结构四.原型模式的优缺点五.原型模式的 C 实现六.原型模式的 Java 实现七. 代码解析八.总结 类图&#xff1a; 原型设计模式类图 一.什么是原型设计模式&#xff1f; 原型模式&#xff08;Prototype…

基于大数据python 房屋价格数据分析预测可视化系统(源码+LW+部署讲解+数据库+ppt)

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度&#xff08;部分学校只有一次答辩机会 没弄好就延迟…

使用Grafana K6来测测你的系统负载能力

背景 近期我们有个号称会有很高很高并发的系统要上线&#xff0c;为了测试一下自己开发的系统的负载能力&#xff0c;准备了点海克斯科技&#xff0c;来看看抗不抗的住。 之前笔者写过用Apache JMeter进行压力测试的文章&#xff08;传送门&#x1f449;&#xff1a;https://…

Java 上机实践10(常用实用类)

&#xff08;大家好&#xff0c;今天分享的是Java的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 Plug&#xff1a;程序实现方法一&#xff08;记事本&#xff09; 方法二&#xff08;IDEA&#xff09; 实验一&…

28.UE5实现对话系统

目录 1.对话结构的设计&#xff08;重点&#xff09; 2.NPC对话接口的实现 2.1创建类型为pawn的蓝图 2.2创建对话接口 3.对话组件的创建 4.对话的UI设计 4.1UI_对话内容 4.2UI_对话选项 4.3UI_对话选项框 5.对话组件的逻辑实现 通过组件蓝图&#xff0c;也就是下图中的…

混沌工程/混沌测试/云原生测试/云平台测试

背景 私有云/公有云/混合云等具有复杂&#xff0c;分布式&#xff0c;环境多样性等特点&#xff0c;许多特殊场景引发的线上问题很难被有效发现。所以需要引入混沌工程&#xff0c;建立对系统抵御生产环境中失控条件的能力以及信心&#xff0c;提高系统面对未知风险得能力。 …