【Linux】权限相关指令

前言:

        上两篇文章我们讲到了,关于Linux中的基础指令。

       【Linux】初见,基础指令-CSDN博客【Linux】初见,基础指令(续)-CSDN博客

        本文我们来讲Linux中关于权限中的一些指令

shell命令 

Linux严格来说是一个操作系统,我们称之为“核心”(kernel)。而作为用户的我们并不能直接与核心交流,这时候就有一个中间人的角色出现:将我们的指令翻译为核心可以看懂的符号,交由核心执行,并将执行结果翻译并返回给我们。

这个中间人就是“包裹”在核心外的“外壳程序”,介于我们和核心之前。我们称之为:shell命令

从技术层面来讲,shell的最简单定义就是:命令解释器。其主要功能就是:

        1.将命令翻译后交给核心执行

        2.将核心执行的结果翻译并返回给我们 

形象理解shell

        假如小y过年回家打算相亲了,打算小y并不擅长与异性交流,这时候就拜托了媒人王姨作为中间人,帮忙小y和异性之前传话。这时候王姨就是“外壳程序”shell。

为什么要有shell?

        1.方便用户使用

        2.作为外壳程序,保护核心

补充

权限概念

Linux中权限分为两种:root账号、普通账号

root账号:为超级权限账号,不受任何权限限制

普通账号:受到权限限制,在Linux中只能做有限的事

su 
命令:su  用户名

功能:切换账号

hyc@hcss-ecs-4ce7:/$ whoami
hyc#切换root账号执行su即可
hyc@hcss-ecs-4ce7:/$ su
#输入root账号密码
Password: 
root@hcss-ecs-4ce7:/# whoami
root#切换普通账号:su 用户名(不需要密码)
root@hcss-ecs-4ce7:/# su hyc
hyc@hcss-ecs-4ce7:/$ whoami
hyc

补充:普通用户 -> root账号,除了su可以实现,su -也可以实现。但是区别是?

hyc@hcss-ecs-4ce7:/$ pwd
/
hyc@hcss-ecs-4ce7:/$ su
Password: 
root@hcss-ecs-4ce7:/# whoami
root
root@hcss-ecs-4ce7:/# pwd
/hyc@hcss-ecs-4ce7:/$ pwd
/
hyc@hcss-ecs-4ce7:/$ su -
Password: 
root@hcss-ecs-4ce7:~# whoami
root
root@hcss-ecs-4ce7:~# pwd
/root#我们可以看到su、su-,都成功的切换到了root。
#不同的是su切换账号并不会改变之前所处路径,既su不会改变位置
#而su-会改变位置,之前是/下,切换之后在/root下

sudo:短暂的指令提权

        如果我们需要使用root权限来执行一些指令,但是却没有root密码怎么办?

        在指令最前面加上sudo,就可以使用root权限执行命令

hyc@hcss-ecs-4ce7:~$ sudo ls
[sudo] password for hyc: 

         这样确实方便,但是有一个问题:那岂不是人人都可以使用root权限了?这不乱套了?

        Linux设计者当然考虑到了这个问题,普通用户如果想要使用sudo进行指令提权。必须要root账号给予普通账号提权权限才行。所以并不是什么普通账号都可以进行提权

没有提权权限的账户,就会显示以下报错

hyc@hcss-ecs-4ce7:~$ sudo ls
[sudo] password for hyc: 
hyc is not in the sudoers file.  This incident will be reported.

总结:

普通 -> root:su(不会改变位置)

                      su-(会改变位置:默认切换至家目录)

root -> 普通:su  用户名

sodu : 指令提权

权限管理

权限的本质是:能做或者不能做什么事情(控制用户行为,防止错误操作)

理解:

        1.权限限制的是

        2.权限要求目标必须具备对应属性:权限:角色+目标属性(权限)

属性

对于Linux中的属性来说主要为三个:读、写、执行

读:r

写:w

执行:x

之前我们说过第一个字母代表文件属性,而后面的一串字符则代表该文件的权限

r:对文件来说,代表可以读取文件内容;对目录来说,代表可以浏览目录内容

w:对文件来说,代表可以修改文件内容;对目录来说,代表可以删除目录中的内容

x:对文件来说,代表可以执行该文件;对目录来说,代表可以进入该目录

但是为什么这里有多个wrx呢?这就涉及到角色的问题。

角色

上面我们说了权限=角色+对应属性

属性代表相应的角色拥有什么权限,那么我们是如何分辨角色呢?如何知道角色对应所拥有的权限呢?

首先我们可以通过命令行得知我们当前的角色、或者使用whoami指令

然后根据当前用户,来判断其说拥有的权限

解释:

        我们当前用户是root,对于第一个目录来说,我们就是其拥有者。所对应拥有的权限则是rwx

而什么是所属组?什么是other呢?

        所属组就是当前角色不是拥有者,但是与拥有者在同一个队伍中。这时候就会匹配所属组权限,这时候这个角色就是所属者。

        所属组的存在是为了更精细化的权限管理。举例:a组和b组都在同一台Linux机器上开发项目,a组项目代码需要公开出来让a组全体成员都能看见,但是不希望b组看见。这时候就只需要将a组全体成员纳入所属组中,然后将other权限关闭,就可以实现。(现在很少用到了,了解即可)

        other就是既不属于拥有者,也不属于所属者的角色。这时候就会匹配other权限。

如何描述文件权限信息?

-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt

          对于new.txt这个文件来说权限的描述应该为:拥有者权限为rw,所属组权限为r,other权限为r。

文件权限表示方法

1.字符表示法

        3个字母为一组,分别为:r、w、x,如没有对应权限则用 " - "表示。其顺序是固定的不可交换

2.8进制表示法 

   

chmod指令

语法:chmod  参数  权限  文件名

功能:改变文件权限(只有root或者文件拥有者才有资格修改权限)

选项:

-R:递归的将目录下的文件权限全部修改

参数:

u:拥有者

g:所属组

o:other

a:有所用户

实际操作展示 :

root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#关闭u的w权限
root@hcss-ecs-4ce7:~# chmod u-w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-r--r--r-- 1 root root 22902 May 18 11:51 new.txt#开放u的w权限
root@hcss-ecs-4ce7:~# chmod u+w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#关闭u的多条权限
root@hcss-ecs-4ce7:~# chmod u-rw new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
----r--r-- 1 root root 22902 May 18 11:51 new.txt#开放u的多条权限
root@hcss-ecs-4ce7:~# chmod u+rw new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#开放g的w权限
root@hcss-ecs-4ce7:~# chmod g+w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-rw-r-- 1 root root 22902 May 18 11:51 new.txt#关闭g的w权限
root@hcss-ecs-4ce7:~# chmod g-w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#以此类推,其他的权限操作类似

另外也可以通过八进制来实现多个用户权限的修改:

root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#通过3个8进制数字实现,对多个用户权限修改
root@hcss-ecs-4ce7:~# chmod 000 new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
---------- 1 root root 22902 May 18 11:51 new.txtroot@hcss-ecs-4ce7:~# chmod 663 new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-rw--wx 1 root root 22902 May 18 11:51 new.txt

修改权限注意事项

1.任何人都可以修改文件权限吗?

        只有root和文件拥有者才能修改权限!

2.如果在进行相应操作时没有权限会怎么样?

        系统会拒绝我们的指令请求

hyc@hcss-ecs-4ce7:~$ ls -l
total 0
-rw-rw-r-- 1 hyc hyc 0 May 24 23:07 new.txthyc@hcss-ecs-4ce7:~$ chmod u-r new.txt
hyc@hcss-ecs-4ce7:~$ ls -l
total 0
--w-rw-r-- 1 hyc hyc 0 May 24 23:07 new.txthyc@hcss-ecs-4ce7:~$ cat new.txt
cat: new.txt: Permission denied

3.确定权限信息时,系统会先确认谁?

        先确认拥有者权限,再确认所属组,最后是other。权限只会确定一次,不会多次确定,第一次匹配上的权限既为我们当前角色所拥有的权限

4.root账号权限?

        拥有最高权限,不受一切权限的限制。所有设定的限制只针对普通账号有用。

5.可执行权限?

        我们之前所讲的例子中都没有可执行样例,其实可执行程序是.exe文件。普通文件一般没有x权限,当然即使拥有x权限也无法执行,因为其本身就不是可执行文件。

chown与chgrp指令

语法:chown   用户名   文件名

功能:改变文件或目录的拥有者

选项:-R 递归的修改目录中所有文件的拥有者

语法:chgrp  所属组名   文件名

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

选项:-R递归修改目录中所有文件的所属组

使用chown修改拥有者、chgrp修改所属组出现问题?

hyc@hcss-ecs-4ce7:~$ ls -l
total 0
-rw-rw-rw- 1 hyc hyc 0 May 24 23:07 new.txthyc@hcss-ecs-4ce7:~$ chown root new.txt
chown: changing ownership of 'new.txt': Operation not permittedhyc@hcss-ecs-4ce7:~$ chgrp root new.txt
chgrp: changing group of 'new.txt': Operation not permitted

原因:

        系统并不支持随意的将文件的拥有者或所属组修改,这一操作只有root权限才能被允许。所以在要在这句指令前加上sodu,或者切换为root账号。

下面我切换为root账号作为演示:

root@hcss-ecs-4ce7:~# ls -l
total 24
-rw-rw--wx 1 root root 22902 May 18 11:51 new.txt
root@hcss-ecs-4ce7:~# chown hyc new.txt
root@hcss-ecs-4ce7:~# ls -l
total 24
-rw-rw--wx 1 hyc root 22902 May 18 11:51 new.txt
root@hcss-ecs-4ce7:~# chgrp hyc new.txt
root@hcss-ecs-4ce7:~# ls -l
total 24
-rw-rw--wx 1 hyc hyc 22902 May 18 11:51 new.txt

目录权限问题

1.rwx对于目录来说意味这什么?

没有r权限,无法查看其内容

hyc@hcss-ecs-4ce7:~$ ls -l
total 4
drwxrwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ chmod u-r new
hyc@hcss-ecs-4ce7:~$ ls -l
total 4
d-wxrwxr-x 2 hyc hyc 4096 May 26 15:41 newhyc@hcss-ecs-4ce7:~$ ls new
ls: cannot open directory 'new': Permission denied

没有w权限,无法在其内部创建文件

hyc@hcss-ecs-4ce7:~$ ls -l
total 4
drwxrwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ chmod u-w new
hyc@hcss-ecs-4ce7:~$ ls -l
total 4
dr-xrwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ ls
newhyc@hcss-ecs-4ce7:~$ touch ./new/my.txt
touch: cannot touch './new/my.txt': Permission denied

没有x权限,无法进入目录

hyc@hcss-ecs-4ce7:~$ ls -l
total 4
drw-rwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ cd new
bash: cd: new: Permission denied

rwx这三个权限都与目录的正常使用相关,所以我们创建的目录默认权限这三个都有

2.理解Linux中多用户是如何相互“隔离”的?

root@hcss-ecs-4ce7:~# ls -l /home
total 8
drwxr-x--- 3 hyc hyc 4096 May 26 15:41 hyc
drwxr-x--- 2 ye  ye  4096 May 26 16:03 ye

所有用户的other权限都是全部关闭的,任意用户都无法进入。这就带来了“隔离”

3.缺省权限

对于普通文件:默认起始权限是666

对于目录:默认起始权限是777,带x

但我们看到的默认权限一般都不是我们说所的起始权限 ,这是为什么?

root@hcss-ecs-4ce7:~# ls -l
total 4
drwxr-xr-x 2 root root 4096 May 26 16:59 new
-rw-r--r-- 1 root root    0 May 26 16:40 new.txt

因为Linux中存在一个东西叫做权限掩码(umask)

root用户的权限掩码为:022

普通用户的权限掩码为:002

root@hcss-ecs-4ce7:~# umask
0022
(最前面的0表示八进制)

最终的权限=起始权限&(~umask)

umask的目的是什么?

        凡是出现在umask上的权限,都不会出现在最终的权限上面

umask为什么会出现?

        可以让我们自定义默认权限,是一种灵活满足需求的表现

4.文件的删除由谁决定?

        一个文件是否可以被删除与文件本身无关,而在于目录的w权限。

粘滞键

        如果有两个或者多个用户需要在文件层面上的相互合作,那么所创建的文件就不能在私人目录下。将目录创建根目录下,这样所有用户就都可以访问并写入自己的内容。

        但是这里存在一个问题,就是如果在众多用户中存在隔壁公式派来的内鬼(bushi),内鬼可以删除自己的文件也可以删除被人的文件(文件是否可以被删除与自己无关,与文件的w权限有关)!

        这该怎么办??关闭w权限吗?不行,这会影响其他用户的正常使用,那怎么办?

Linux给粘滞键有效的解决这一问题 

chmod +t

给权限加上粘滞位,加上粘滞位的目录有以下效果

1.文件只能被root删除

2.文件只能被其拥有者删除

3.文件只能有该目录的拥有者删除

其实系统已经为我们准备好了这一特殊目录,就是根目录下的temp目录

我们可以看到temp的other权限最后一个字母是t,这就代表粘滞位。 

一般需要文件上的多人合作,都是在temp里进行。

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

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

相关文章

前端学习3--position定位(relative+absolute+sticky)

继上一篇,做下拉菜单的时候,涉及到了position,这篇就来学习下~先看下position在下拉菜单中的应用:一、关键代码回顾:/* 下拉菜单容器 */ .dropdown {position: relative; /* ➊ 关键父级 */ }/* 下拉内容(默…

APP Inventor使用指南

APP Inventor使用指南一、组件介绍二、逻辑设计设计方法:设计实例(参考嘉立创教程)点击跳转 : app inventor(点不开的话需要🪄🪄🪄🪄🪄) 一、组…

SpringAI实现保存聊天记录到redis中

redis相关准备添加依赖我利用redission来实现<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.37.0</version> </dependency>添加配置文件spring:redis:database: 5host: 127.0.0.1…

Unity中使用EzySlice实现模型切割与UV控制完全指南

引言 在Unity中实现3D模型的动态切割是一个常见的需求&#xff0c;无论是用于游戏特效、建筑可视化还是医疗模拟。本文将全面介绍如何使用EzySlice插件实现高效的模型切割&#xff0c;并深入探讨如何通过Shader Graph精确控制切割面的UV映射。 第一部分&#xff1a;EzySlice基…

【c++学习记录】状态模式,实现一个登陆功能

状态模式建议为对象的所有可能状态新建一个类&#xff0c; 然后将所有状态的对应行为抽取到这些类中。 原始对象被称为上下文 &#xff08;context&#xff09;&#xff0c; 它并不会自行实现所有行为&#xff0c; 而是会保存一个指向表示当前状态的状态对象的引用&#xff0c;…

Docker 搭建 Harbor 私有仓库

1 部署 Harbor 注意&#xff1a;docker、docker-compose、Harbor的版本是否适配&#xff0c;这里使用的版本如下表&#xff1a; Docker版本Docker Compose版本Harbor版本v19.09.8v1.29.2v2.8.2 1.1 安装 docker-compose # 下载 docker-compose 1.29.2 版本 curl -L "h…

C++类模板继承部分知识及测试代码

目录 0.前言 1.类模板基本使用 2.类模板继承 2.1类模板继承过程中的模板参数 情况1&#xff1a;父类非模板&#xff0c;子类为模板 情况2&#xff1a;父类模板&#xff0c;子类为非模板 情况3&#xff1a;父类模板&#xff0c;子类为模板 3.STL中的模板类分析 3.1STL中…

Laravel + Python 图片水印系统:实现与调试指南

前言 本系统通过 Laravel 作为前端框架接收用户上传的图片&#xff0c;调用 Python 脚本处理水印添加&#xff0c;最终返回处理后的图片。这种架构充分利用了 Laravel 的便捷性和 Python 图像处理库的强大功能。 一、Python 水印处理脚本 from PIL import Image, ImageEnhance …

【速通RAG实战:企业应用】25、从数智化场景看RAG:是临时方案,还是终局架构?

引言&#xff1a;RAG为何成为数智化场景的"必争之地"&#xff1f; 当ChatGPT在2023年掀起生成式AI浪潮时&#xff0c;一个矛盾逐渐凸显&#xff1a;大语言模型&#xff08;LLM&#xff09;能生成流畅文本&#xff0c;却常陷入"幻觉"&#xff08;虚构事实&a…

[Python] -实用技巧篇1-用一行Python代码搞定日常任务

在日常开发或数据处理过程中,我们常常为了一些简单的小任务写出数行代码。但实际上,Python 提供了大量强大且简洁的语法糖和标准库工具,让你用“一行代码”轻松搞定复杂操作。 本文将通过多个典型场景展示如何用“一行 Python 代码”高效完成常见任务。 一、文件操作:快速…

单细胞入门(1)——介绍

一、单细胞转录组测序流程介绍 单细胞测序能够探索复杂组织中单个细胞的不同生物学特性&#xff0c;帮助我们认识细胞与细胞之间的差异。这些检测方法有助于研究细胞谱系、细胞功能、细胞分化、细胞增殖和细胞应答&#xff0c;提升我们对复杂生物系统的理解&#xff0c;包括肿…

数据结构与算法之美:跳表

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…

从0设计一个短链接服务:如何实现尽可能短、可变长的短网址系统?

从 0 设计一个短链接服务&#xff1a;如何实现尽可能短、可变长的短网址系统&#xff1f; 在日常生活中&#xff0c;我们经常在短信、微博、广告营销中看到“短链接”&#xff0c;如&#xff1a; https://t.cn/EXaQ4xY https://bit.ly/3Yp9zJk相比冗长复杂的原始 URL&#xff0…

Microsoft Word 中 .doc 和 .docx 的区别

Microsoft Word 中 .doc 和 .docx 的区别 解释 Microsoft Word 中 .doc 和 .docx 文件格式的区别。这些格式都是 Word 处理文档的标准&#xff0c;但它们在结构、兼容性和功能上存在显著差异。下面我将详细说明。 1. 基本定义 .doc&#xff1a;这是 Microsoft Word 的旧格式&am…

Springboot aop面向切面编程

aop:面向切面编程&#xff0c;理解在一个流程中插入一个切面&#xff0c;这样切面方法会在指定位置执行能无影响的在某些方法前或者后插入一些动作springboot使用1.引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>sprin…

手机识别数据集,2628张原始图片,支持yolo,coco json,pasical voc xml等格式的标注

本文提供手机识别数据集&#xff0c;2628张原始图片&#xff0c;支持yolo&#xff0c;coco json,pasical voc xml等格式的标注的数据集下载&#xff0c;下载地址在文末手机识别数据集简介手机识别数据集通常用于训练和评估机器学习模型&#xff0c;以识别不同手机品牌、型号或功…

ollama - sqlcoder模型:面向提示词编程(根据用户信息生成sql语句并执行返回结果)

https://ollama.ac.cn/library/sqlcoderhttps://blog.csdn.net/hzether/article/details/143816042import ollama import sqlite3 import json from contextlib import closingdef generate_and_execute_sql(question: str, db_path: str) -> dict:# 1. 生成 SQL 查询语句pr…

C语言,结构体指针案例

案例一&#xff1a; #include <stdio.h> #include <stdbool.h> #include <string.h> // 添加string.h头文件用于strcpy //结构体指针//方式 1 : 先定义结构体 struct Dog {char *name;int age;char weight; };//方式 1 : char *get_dog_info(struct Dog do…

Vue 3 中父子组件双向绑定的 4 种方式

&#x1f501; Vue 3 中父子组件双向绑定的 4 种方式 整理不易&#xff0c;点赞 收藏 关注&#xff0c;助你组件通信不再混乱&#xff01;✅ 场景说明 父组件希望将某个值传递给子组件&#xff0c;同时希望子组件能够修改这个值&#xff08;实现“绑定 反向更新”&#xff0…

阻有形,容无声——STA 签核之RC Corner

RC corner&#xff0c;RC指的是gate跟network的寄生参数&#xff0c;寄生参数抽取工具&#xff08;比如Starrc&#xff09;根据电路的物理信息&#xff0c;抽取出电路的电阻电容值&#xff0c;再以寄生参数文件&#xff08;Spef&#xff09;输入给STA工具&#xff08;PT&#x…