【Linux取经之路】用户权限管理

news2024/11/24 18:33:08

目录

shell命令以及运行原理

Linux权限的概念

1、用户的概念

2、切换用户

Linux权限管理

 1、文件访问者的分类

2、文件类型和访问权限

3、文件访问权限的修改

4、文件所有权的修改

5、设置权限掩码

6、用户提权

7、目录的权限

 8、粘滞位


shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为「核心」(kernel),但是我们用户一般不能直接使用kernel,而是通过kernel的「外壳程序」,即通过shell与kernel进行沟通。首先我们明确一点,内核是看不懂我们输入的指令的,就像adduser zhangsan这条指令,内核就是看不懂,这条指令需要被翻译成内核可识别的指令后,内核才理解我们到底要干嘛。举个例子,当你在外服对国外游戏玩家一顿「国粹」输出时,他是听不懂的,他需要借助翻译软件翻译成他们的语言才能理解你说了什么。至于Shell,从技术角度讲,Shell的最简单定义就是:命令行解释器,也就是扮演一个翻译官的角色。它主要有以下功能:

        ● 将使用者的命令翻译给核心kernel处理。

        ● 同时,将核心处理的结果翻译给使用者。

以我们熟悉的Windows为例,我们操作Windows并不是直接操作其内核,而是通过Windows GUI(图形化界面)提供的接口来操作。例如双击打开一个桌面程序,最大化,最小化等。

Shell对于Linux,就相当于Windows GUI对于Windows内核。Shell主要是对我们的指令进行解析,解析成Linux内核可以看得懂的命令,并将Linux内核处理的结果翻译成我们可以看得懂得语句。

与此同时,Shell还在默默地保护操作系统。Shell会对我们用户输入的指令进行解析,当它解析到非法指令时就直接报错,并不会将我们输入的非法指令传递给操作系统。同时,它为了防止自身在解析指令时,遇到非法指令而崩溃,Shell本身并不直接执行我们输入的指令,而是派生出子进程来执行。

Linux权限的概念

1、用户的概念

        Linux下有两种用户:超级用户(root)和普通用户。

                ● 超级用户:可以在Linux下做任何事情,不受限制。

                ● 普通用户:在Linux下受权限的限制。

                ● 超级用户的命令行提示符是「#」,普通用户的命令行提示符是「$」。

2、切换用户

        命令:su 「username」

        功能:切换用户

下面进行演示:

从超级用户切换到普通用户,直接切换,不需要额外操作。

从普通用户切换到超级用户,需要输入超级用户的密码,密码不会回显。

Linux权限管理

在Linux系统中,每个文件和目录都具有访问权限,这些访问权限决定了谁能访问以及如何访问。

 1、文件访问者的分类

                ● 文件和文件目录的所有者:u → user

                ● 文件和文件目录的所有者所在的组:g → group

                ● 其他用户:o → others

2、文件类型和访问权限

第2-10位,三三为一组,且每一组的权限都依次为读、写、可执行。 

文件类型:

        d: 文件夹

        -: 普通文件

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

        b: 块设备文件(例如硬盘)

        p: 管道文件

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

        s: 套接口文件

访问权限:

        读(r),对文件而言,具有读取文件内容的权限;对目录而言,具有浏览该目录信息的权限。

        写(w),对文件而言,具有修改文件内容的权限;对目录而言,具有删除和移动目录内文件的权限。

        可执行(x),对文件而言,具有执行文件的权限;对目录而言,具有进入目录的权限。 

       「-」,表示不具有该项权限。

权限除了可以用字母rwx表示,还可以用8进制表示。

 

 上面抛出了一堆概念性的东西,下面我们来举个例子理解文件的权限。

首先,我创建了一个名为test的文件,我们可以看到,test的所有者和所属组为pcz,所有者对应的权限为rw-,可读可写不可执行,所属组对应的权限为rw-,可读可写不可执行。其他用户other对应的权限为r--,只能读,不可写不可执行。可以看到,我在把文件创建好后,并未对其权限方面做任何修改。我想说的是,当创建一个文件时,系统会自动赋予文件所有者读和写的权限,这样可以允许所有者显示文件内容和修改文件。前面提到,权限不仅可以用字母表示,还可以用数字表示,下面举例说明。 

-rwxr--r--   / / 所有者的权限为7(111),所属组的权限为4(100),其他用户other的权限为4(100)。这两种表示方式任君选择。

3、文件访问权限的修改

一般情况下,只有系统管理员和文件的所有者才可以修改文件的权限。

chmod

 功能:设置文件的访问权限

 格式:chmod 参数 权限 文件名

操作对象

可以是下述字母中的任何一个或者是它们的组合。

 u: 表示文件或目录的所有者

 g: 表示用户组

 o: 表示其他用户

 a: 表示所有用户

操作符

+:添加某个权限

-:取消某个权限

=:赋予给定权限并取消原先权限(如果有的话)

下面举例说明:

书接上回创建的test文件。所属组的权限为rw-,现在我想把所属组的写(w)权限去掉。

现在,我往test里面加一点内容,内容是什么不重要,只要文件大小不为0就好了。

可以看到,test文件的大小已经不为零了。现在,我想给所有用户加上可执行权限x。

好了,可执行权限都已经加上去了,test变色了。接下来我想看看test能否运行。

很不幸,报错了。原本是演示如何修改权限的,现在开始不着边际了,其实我想说的是:文件不是具有可执行权限就可以执行的,还要看文件本身是否可执行,可执行权限和文件可以执行是两码事。举个例子,我们不能在csdn上看电影,原因在于csdn本身就不支持看电影,我们需要到视频网站(b站)等才可以。 

4、文件所有权的修改

文件和目录的创建者就默认具有所有权,他们对该文件和目录具有任何权限,可以进行任何操作。他们也可以将所有权交给其他用户,使别的用户对该文件和目录具有任何操作权限。

chown

功能:更改文件和目录的所有者和所属组。

语法:chown [参数] 用户名 [文件|目录]

选项说明:-R表示,将下级子目录下的所有文件和目录的所有者一起改。

1)将文件test的所有者改为pcz。

2)将文件test的所属组改为pcz。

3)将文件test的所有者和所属组一起改为root。

4)将文件test的所属组改为pcz。

 chgrp

  功能:改变文件或目录的所属组。

  格式:chgrp [参数] 所属组名 文件名

  选项说明:-R表示,将下级子目录下的所有文件和目录的所属组一起改。

​​​​​​​

5、设置权限掩码

为了保护文件和目录,可以使用umask命令,这个命令会取消用户创建的文件和目录的默认权限设置。指定的掩码在登录系统时一直有效,umask对已经存在的文件没有任何作用。默认创建文件的权限是666,即[ -rw-rw-rw- ],默认创建目录的权限是777,即[ drwxrwxrwx ]。但是我们看到的往往不是这个值,原因在于创建文件或目录的时候还有收到umask的影响,实际创建出来的文件的权限是mask & ~mask。

umask

 功能:查看或修改文件掩码。

  # umask / /查看

  # umask  044/ /设置

6、用户提权

sudo

功能:在不共享root密码的情况下授权用户以root的身份运行命令。

当我们以普通用户的身份安装软件包的时,往往权限不够,需要提权。比如 sudo yum install -y gdb。这需要在指令前加上sudo,然后输入当前用户的密码即可。

7、目录的权限

这里我就不卖关子了,直接上结论~

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

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

● 可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。

下面依次演示:

这里我把拥有者的可执行权限去掉了,然后再试图cd进入目录dir,直接报错。有读者可能会疑惑,所属组不是有可执行权限吗?!而且pcz本身也是所属组呀,为什么就进不去呢?其实是这样子的,在匹配时,顺序是所有者 > 所属组 > other,并且一旦匹配,就不会再进行第二次的比对了。

去掉目录的可读权限。

 

去掉目录的可写权限。

 

从上面结论中,我们可以得出这样一个推论:删文件是取决于文件所在目录的权限的。换句话说,就是只要用户具有目录的写权限,该用户就可以删除目录中的文件,而不论这个用户是否具有这个文件的写权限。 下面我们来看一个活生生的例子。

事先,我已经将home目录的权限改为777,也就是说所有用户都具有这个目录的写(w)权限,并且在该目录下,我以root的身份创建了一个名为test的文件,然后我从root切换到普通用户pcz,接着尝试删除root在home目录下创建的文件test,结果还删除的很成功!我pcz居然可以删除root创建的文件!!!这是不是以下犯上了。为了解决这个问题, Linux引入了「粘滞位」。

 8、粘滞位

chmod +t 目录

下面演示一下:

 

给home目录加上粘滞位后,用户pcz已经无法删除root创建的文件test了。总结一下:

当一个目录被设置为粘滞位(chmod +t)后,该目录下的文件只能由

● 超级管理员root删除

● 该目录的所有者删除

● 该文件的所有者删除


本文到此就结束啦~感谢支持! 

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

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

相关文章

D - 88888888

设N有K位 则&#xff1a; p998244353&#xff0c;是质数&#xff0c;vn%p只需要求一下分母的逆元即可。 分母于p互质&#xff0c;满足飞马小定理&#xff0c;故可以用其求逆元。 再用一下这个结论就OK了 #include<bits/stdc.h> using namespace std; #define int long…

《JavaEE进阶》----16.<Mybatis简介、操作步骤、相关配置>

本篇博客讲记录&#xff1a; 1.回顾MySQL的JDBC操作 2..Mybatis简介、Mybatis操作数据库的步骤 3.Mybatis 相关日志的配置&#xff08;日志的配置、驼峰自动转换的配置&#xff09; 前言 之前学习应用分层时我们知道Web应用程序一般分为三层&#xff0c;Controller、Service、D…

使用Python从头开始创建PowerPoint演示文稿

目录 一、环境搭建与基础知识 1.1 环境搭建 1.2 基础知识 二、创建演示文稿对象 三、添加幻灯片 3.1 选择幻灯片布局 3.2 设置幻灯片内容 3.2.1 设置标题和副标题 3.2.2 添加文本内容 3.2.3 插入图片 3.2.4 插入图表 四、高级应用&#xff1a;批量生成演示文稿 4.…

太惨了!许家印前妻每个月只能花18万

文&#xff5c;琥珀食酒社 作者 | 积溪 许家印前妻被判了 我跟你说啊她真是太惨了 一个月只能取18万啊 你说这日子怎么过啊 买个包包都不够啊&#xff01; 大家都知道许皮带爆雷&#xff08;BL&#xff09;后 丁玉梅虽然和许皮带战略性离婚&#xff0c;逃到了英国 还把…

【计算机组成原理】浮点数的表示及IEEE 754规格化

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

软件工程测试

1. 软件测试概述 通俗地说&#xff0c;软件测试是为了发现错误而执行程序的过程。 软件测试&#xff1a;根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例&#xff08;即输入数据及其预期的输出结果&#xff09;&#xff0c;并利用这些测试用例去运行程序…

深度学习:基础知识

深度学习是机器学习的一个领域 神经网络构造 一个神经元有n个输入&#xff0c;每一个输入对应一个权值w&#xff0c;神经元内会对输入与权重做乘法后求和。 感知器 由两层神经元组成的神经网络--“感知器”&#xff08;Perceptron&#xff09;,感知器只能线性划分数据。 公式…

Netty笔记03-组件Channel

文章目录 Channel概述Channel 的概念Channel 的主要功能Channel 的生命周期Channel 的状态Channel 的类型channel 的主要方法 ChannelFutureCloseFuture&#x1f4a1; netty异步提升的是什么要点总结 Channel概述 Channel 的概念 在 Netty 中&#xff0c;Channel 是一个非常重…

c++题目_洛谷 / 题目详情 P1012 [NOIP1998 提高组] 拼数

# [NOIP1998 提高组] 拼数 ## 题目描述 设有 $n$ 个正整数 $a_1 \dots a_n$&#xff0c;将它们联接成一排&#xff0c;相邻数字首尾相接&#xff0c;组成一个最大的整数。 ## 输入格式 第一行有一个整数&#xff0c;表示数字个数 $n$。 第二行有 $n$ 个整数&#xff0c;表…

Linux学习笔记(黑马程序员,前四章节)

第一章 快照 虚拟机快照&#xff1a; 通俗来说&#xff0c;在学习阶段我们无法避免的可能损坏Linux操作系统&#xff0c;如果损坏的话&#xff0c;重新安装一个Linux操作系统就会十分麻烦。VMware虚拟机支持为虚拟机制作快照。通过快照将当前虚拟机的状态保存下来&#xff0c;…

Leetcode 移动零

要求将数组中的所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。下面是该题的 C 解决方案&#xff1a; class Solution { public:void moveZeroes(vector<int>& nums) {int nonZeroPos 0; // 记录非零元素应该放置的位置// 遍历数组&#xff0c;…

镭速如何高效使用SQLite数据库高速传输结构化数据文件传输

SQLite数据库因其小巧、跨平台和无需配置的特性&#xff0c;在众多关系型数据库中独树一帜。与传统的服务器/客户端架构数据库&#xff0c;例如MySQL不同&#xff0c;SQLite通常被嵌入到应用程序中作为一个库。它不仅支持创建索引&#xff0c;还严格遵循ACID原则&#xff0c;非…

先攒一波硬件,过几年再给电脑升级,靠谱吗?想啥呢?

前言 最近有小伙伴发来消息&#xff1a;我可以今年先买电脑的部分硬件&#xff0c;明年再买电脑的另一部分硬件&#xff0c;再组装起来不就是一台电脑了吗&#xff1f; 这确实是一个很好的办法。 我还记得大学有个室友&#xff0c;从大一每个月省吃俭用&#xff0c;攒下的钱…

全球AI应用市场洞察:市场快速崛起,“陪伴式AI”、“图像AI”应用爆款频出!

自2023年 GPT4 的问世以来&#xff0c;得益于这股新的技术变量&#xff0c;各类 AI 应用在市场上遍地开花。在这轮热潮之下&#xff0c;不同市场和细分赛道有何机遇和挑战&#xff1f;以下根据 Sensor Tower 最新报告分析&#xff0c;帮助移动开发者、广告主洞察全球AI应用市场…

Linux系统:chgrp命令

1、命令详解&#xff1a; chgrp命令是Linux操作系统中用于修改文件或目录的所属组的命令。chgrp命令还可以修改链接文件的所属组&#xff0c;而不是链接所指向的文件的所属组。默认情况下&#xff0c;只有文件的所有者和超级用户才能修改文件的所属组&#xff0c;但如果用户是一…

JavaWeb【day08】--(MySQL-Mybatis入门)

数据库开发-MySQL 1. 多表查询 1.1 概述 1.1.1 数据准备 SQL脚本&#xff1a; #建议&#xff1a;创建新的数据库 create database db04; use db04; ​ -- 部门表 create table tb_dept (id int unsigned primary key auto_increment comment 主键ID,name v…

Win32编程:创建属于你的第一个窗口

目录 一、Win32程序的运行过程 二、创建Windows窗口 1、分析 2、完整代码 一、Win32程序的运行过程 Win32编程&#xff0c;也称为Windows编程。运行步骤主要包含&#xff1a;加载程序&#xff08;操作系统加载程序的可执行文件&#xff08;exe格式&#xff09;到内存中,创建…

代码随想录刷题day30丨452. 用最少数量的箭引爆气球, 435. 无重叠区间,763.划分字母区间

代码随想录刷题day30丨452. 用最少数量的箭引爆气球&#xff0c; 435. 无重叠区间&#xff0c;763.划分字母区间 1.题目 1.1用最少数量的箭引爆气球 题目链接&#xff1a;452. 用最少数量的箭引爆气球 - 力扣&#xff08;LeetCode&#xff09; 视频讲解&#xff1a;贪心算法…

ColorThief的介绍与使用

概述 colorThief是一个 Javascript 插件&#xff0c;支持在浏览器端或 Node 环境中使用。Thief的中文意思是偷窃、小偷。colorThief的作用就是通过算法去获取图片的色源。 API 介绍与示例 colorThief提供两个方法&#xff0c;getColor和getPalette&#xff0c;这两个方法在 …

类和对象(c++)

欢迎来到本期频道&#xff01; 类和对象 类定义&#xff1a;格式&#xff1a;类域&#xff1a;访问限定符友元内部类this指针静态与非静态成员关系类型转换六大默认成员函数&#xff08;C98&#xff09;1️⃣构造函数2️⃣拷贝构造函数浅拷贝与深拷贝 3️⃣赋值重载拷贝函数4️…