【Linux】Linux基础之权限

目录

  • 一、Linux中的用户
    • 1.1 用户之间的身份切换
    • 1.2 指令提权
  • 二、权限管理
    • 2.1 文件权限
    • 2.2 权限操作
    • 2.3 chown和chgrp
  • 三、文件类型
  • 四、目录文件的权限操作
  • 五、权限掩码
  • 六、粘滞位

一、Linux中的用户

Linux中主要有两种用户:

  • root,超级用户
  • 非root,普通用户(xxx)

一般情况下root只有一个,但是可以有多个普通用户
在这里插入图片描述

1.1 用户之间的身份切换

指令1:su -

在这里插入图片描述

指令2:su

普通用户,切换成超级用户:
在这里插入图片描述
输入密码时,密码不显示。

超级用户切换成普通用户:
在这里插入图片描述

普通用户切换为另一个普通用户:
在这里插入图片描述
用户的身份切换后,可以用两种方式返回到原来切换前的用户:

  • 输入exit
  • ctrl + d

在这里插入图片描述
在这里插入图片描述

1.2 指令提权

当要执行一条指令,必须是超级用户的身份才行,但是又不想切换成超级用户,还是普通用户的身份,只是可以拥有超级用户的权限去执行这条指令,使用指令:

sudo + 操作指令

比如我想以超级用户的权限去执行一条指令:
在这里插入图片描述
如何添加配置文件:

vim /etc/sudoers

配置完普通用户可以使用sudo
在这里插入图片描述
第一次需要普通用户的密码,后面再使用sudo不需要密码。

二、权限管理

2.1 文件权限

Linux下一切皆是文件,文件权限主要分为群体和操作对象的属性。权限的出现是用来限制用户的,这里的用户可以是root超级用户、普通用户。Linux中的群体更多代表的是角色,有——拥有者、所属组、other。用户是否受权限的限制在于这个用户的角色是否有相应的文件权限属性,文件权限属性有——r(读)、w(写)、x(执行)。比如小明是某小学的校长,那么他就有管理这个学校的权限,换句话说小明可以管理这个学校,是因为他叫小明,还是因为他是这个学校的校长呢?很明显,因为小明是这个学校的校长,所以他才能管理整个学校,但是他没有管理其他学校的权限。

在这里插入图片描述

有r代表可读,有w代表可写,有x代表可执行,是横线说明没有该权限

2.2 权限操作

权限的属性是可以修改的:

  • 指令:chmod
  • 拥有者——user——u
  • 所属组——group——g
  • 其他用户——other——o

具体操作如下:
在这里插入图片描述

+代表可以增加权限,-代表可以去掉权限

如果一个一个操作太麻烦了,可以使用a+或者a-来操作,a代表所有角色
在这里插入图片描述

除此之外,还可以使用二进制的形式来操作,每个角色都有三种权限,有是1,没有是0。有3个1转换成八进制是7,只有读的权限转换成八进制是4,只有写的权限转换成八进制是2,只有执行的权限转换成八进制是1。可输入3个数,这3个数字分为是拥有者、所属组、other的权限。

在这里插入图片描述

有对应的权限才能有对应的操作
在这里插入图片描述
增加上读写的权限
在这里插入图片描述

读写的权限我们已经知道了,现在看看执行权限是怎么回事
在这里插入图片描述
file.txt有执行权限,但是不能被执行,因为Linux的文件可执行必须有两个条件,缺一不可:

  • 有可执行的权限(x)
  • 必须是一个可执行的程序

file.txt文件虽然有可执行的权限但是它不是可执行的程序,所以不能运行。看可以被运行的:
在这里插入图片描述

特殊的情况:
普通用户查看一个文本文件,该拥有者必须要有 r 读的权限
在这里插入图片描述
如果把拥有者的读权限去掉,会发生什么:
在这里插入图片描述
操作不被允许,但是我们发现它的所属组有 r 的权限,为什么不行呢?因为系统只识别拥有者是否有可读权限,也就是说,这个文件是yss创建的,同时目前的身份是yss,那么它就只看yss拥有者是否有可读的权限,只以第一次的识别为标准,后面的所属组是否有 r 它就不看了。

这里先使用一下chown修改拥有者:
在这里插入图片描述
如果把身份改为yyy,是否还能查看呢?
在这里插入图片描述

以上的权限管理只是对于普通用户,root超级用户不受权限控制:
在这里插入图片描述

2.3 chown和chgrp

  • chown——修改拥有者
  • chgrp——修改所属组

注意:使用这两个指令必须是root或者是以root的权限才能操作

在这里插入图片描述

操作一:使用sudo
1️⃣修改拥有者:
在这里插入图片描述

2️⃣修改所属组:
在这里插入图片描述

操作二:切换为root用户
1️⃣修改拥有者:
在这里插入图片描述

2️⃣修改所属组:
在这里插入图片描述
操作三:一次性修改
在这里插入图片描述

三、文件类型

windows下的文件,一般是以后缀来区分的;Linux下文件是以第一个字符来区分:

  • 横线(-)——普通文件(文本、图片、视频等等)
  • d——目录文件
  • b——块设备文件
  • c——字符设备文件
  • l——链接文件
  • p——管道文件

常见的是普通文件和目录文件:
在这里插入图片描述
Linux的文件是可以有后缀的,比如上图的.txt和.c。既然都用第一个字符来识别文件类型,那么有后缀的意义何在呢?这里演示一下:
在这里插入图片描述
说明了一件事,我们在操作的时候,后缀不管是怎样的,系统不会因为后缀名就不做相应的工作。但是,系统里的工具需要识别后缀名是否对应,比如是gcc和g++,使用gcc就要是.c后缀。所以,为了方便操作,以及看得清楚什么文件做什么,文件的后缀名尽量不要乱用。

除了看第一个字符来区分文件类型外,还可以使用一个指令来查看文件类型:

file + 文件名

在这里插入图片描述

四、目录文件的权限操作

前面的权限操作都是对普通文件,目录文件的权限操作又是一回事

1️⃣进入目录文件的权限
拥有者需要x可执行的权限
在这里插入图片描述

2️⃣查看目录文件信息的权限
需要r可读的权限
在这里插入图片描述
在这里插入图片描述

3️⃣在目录文件新建和删除文件的权限
需要w可写的权限
在这里插入图片描述
在这里插入图片描述
以上就是目录文件的权限管理,但还是只针对普通用户,超级用户不受影响。
在这里插入图片描述

五、权限掩码

我们创建一个目录文件或者普通文件时,对应的权限目录文件是775,普通文件是664(有的人可能不同),为什么不是777呢?
在这里插入图片描述
这与权限掩码有关,每个文件都有一个起始权限,普通文件的起始权限是666,目录文件的起始权限是777

指令 :umask——定制一个文件被创建时的默认权限

在这里插入图片描述

计算:起始权限 & (~umask)= 最终权限

在这里插入图片描述
权限掩码是可以修改的
在这里插入图片描述
在这里插入图片描述

六、粘滞位

假如一个超级用户,在一个普通用户的家目录里创建一个文件,这个文件的拥有者和所属组都是root
在这里插入图片描述
此时普通用户是可以读root创建的文件的内容
在这里插入图片描述
如果root不想让别人读文件的内容,去掉该文件的所有权限
在这里插入图片描述
普通用户既读不了,也不能写入
在这里插入图片描述
但是可以删除这个root创建的文件
在这里插入图片描述
root创建的文件的权限没有w,为什么普通用户还能删除呢?因为删除一个文件不在于文件本身,而在于该文件的目录的拥有者是否有w写的权限。很明显,这个文件的所处的目录是普通用户yss的,它的拥有者具有w写的权限,所以可以对它目录下的文件进行删除,不管那个文件是谁的。
在这里插入图片描述
还有一个问题,为什么别人要在我家里创建文件呢?能不能有一个公共区域共享文件,答案是有的。
在这里插入图片描述
tmp目录的权限有一个t,先以root身份把这个t去掉,来验证下公共区域tmp里的文件共享
在这里插入图片描述
再切换为另一个普通用户
在这里插入图片描述
有读的权限,可以看文件的内容

若该文件的创建者yss把这个文件的所有权限去掉
在这里插入图片描述
既然不让其他用户看到文件的内容,那么其他用户是否可以把这个文件删除?
在这里插入图片描述
确实可以删除,可是回到最开始的问题,既然我(一个普通用户)创建的一个文件放在公共区域里,可以让别人读或者写,也有权利不让别人读或者写,但是防不住别人删了这个文件,该怎么办?所以有一个新的权限可以介绍了——粘滞位(t)

还是yss普通用户在tmp里创建一个文件,同时把tmp的粘滞位加上
在这里插入图片描述
切换为另一个普通用户看是否可以删除该文件
在这里插入图片描述
此时就不行,粘滞位t有x的性质,但同时它又对目录权限进行特殊限定,其他用户不能删除该目录下的文件,只要root超级用户和该文件的的拥有者可以删除。

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

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

相关文章

基于多反应堆的高并发服务器【C/C++/Reactor】(下)重构Channel类

一、C语言 Channel.h #pragma once #include <stdbool.h> // 定义函数指针 typedef int(*handleFunc)(void* arg);// 定义文件描述符的读写事件 enum FDEvent {TimeOut 0x01,ReadEvent 0x02,WriteEvent 0x04 };struct Channel {// 文件描述符int fd;// 事件int even…

Netfilter 是如何工作的(六):连接跟踪信息的入口创建(in)和出口确认(confirm)

Articles (gitee.io) IPtables-朱双印博客 (zsythink.net) 在 Netfilter 是如何工作的(五) 中连接跟踪信息使用的创建-确认机制的 Netfilter在报文进入系统的入口处&#xff0c;将连接跟踪信息记录在报文上&#xff0c;在出口进行confirm.确认后的连接信息 本文以一个本机上送…

【MATLAB】CEEMDAN+FFT+HHT组合算法

代码原理 集成经验模态分解&#xff08;CEEMDAN&#xff09;是一种信号处理方法&#xff0c;旨在将非线性和非平稳信号分解为本质模态函数&#xff08;IMF&#xff09;。这种方法通过对信号进行多轮迭代&#xff0c;结合了噪声干扰的累计退化&#xff0c;从而更好地处理了信号…

关于React你必须知道的3个错误用法。

1. 你知道如何使用“&&”吗? 在React程序中,我经常使用“&&”运算符来决定是否显示内容,如下所示: 我的组长: “你不知道&&运算符的特性吗?当请求还没有成功返回时,会直接渲染“0”。” 我并不信服, 因为我一直都是这样编写代码,从未出过错。为了…

python日志模块,按天自动切换

import logging from logging.handlers import TimedRotatingFileHandlerclass TimedRotatingLogger:def __init__(self, name, log_dir, levellogging.INFO):# 创建一个loggerself.logger logging.getLogger(name)self.logger.setLevel(level)# 创建一个handler&#xff0c;用…

计算机网络技术-2022期末考试解析

【前言】 这是计算机网络技术这门课&#xff0c;感觉和计网还是有不一样的&#xff0c;但也有能做的&#xff0c;把能做的做了。 一、单项选择题&#xff08;每题2分&#xff0c;共20分&#xff09; 1. 用于测试两台计算机连通状况的命令是 。 ( ) A. cmd B. ping C. ipconf…

Java副本的概念

在Java中&#xff0c;"副本"&#xff08;copy&#xff09;一词可以用于描述不同的概念&#xff0c;具体取决于上下文。以下是两个常见的用法&#xff1a; 对象的副本&#xff1a;在Java中&#xff0c;当你创建一个对象并将其赋值给另一个变量时&#xff0c;实际上是创…

配置CentOS系统以支持静态HTTP服务

CentOS是一个流行的Linux发行版&#xff0c;广泛应用于服务器环境。要配置CentOS系统以支持静态HTTP服务&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装Web服务器软件&#xff1a;CentOS自带了Apache HTTP服务器软件&#xff0c;您可以使用以下命令安装它&#xff1…

操作系统期末提纲

操作系统期末提纲 文章目录 操作系统期末提纲第一章 计算机系统概述第二章 操作系统概述第三章 进程描述和控制第四章 线程第五章 并发性: 互斥和同步第六章 并发性:死锁和饥饿第七章 内存管理第八章 虚拟内存第九章 单处理器调度第十一章 I/O管理和磁盘调度第十二章 文件管理 …

Go 知多少?

作为一名已接触过其他语言的开发&#xff0c;再去学习一门新语言可比之前轻松不少&#xff0c; 语言之间存在很多相似点&#xff0c;但是新语言也有自己的不同点&#xff0c;通常我会先了解它与其他语言常遇到的不同点有哪些&#xff0c; 使自己先能够上手编写基础程序&#…

pytorch多GPU并行DistributedDataParallel应用和踩坑记录(本节-单机多卡实现)持续补充

一、 前言 说在前面&#xff1a;网上参考链接很多&#xff0c;参考之后可以实现分布式&#xff0c;但是对其原理还是云里雾里&#xff0c;有时间的建议去看一看原理。并且我实现分布式之后还是显示显存不足&#xff0c;不知道为什么。 参考链接&#xff1a;pytorch多GPU并行训…

业务题day01

1-1 请说一下你项目中是如何进行项目管理和发布的 我们项目使用的是Gogs进行代码托管&#xff0c;Jenkins进行项目自动运维发布。 在我们的项目中&#xff0c;我们使用Gogs进行代码托管和版本控制&#xff0c;以确保团队成员可以协同开发和管理代码。 Gogs是一个轻量级的、开…

Java多线程:初识多线程!左手画方,右手画圆

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、线程与进程二、创建线程方法1、继承Thread类2、实现Runnable接口3、两者区别4、举个栗子5、简洁写法Ⅰ、Thread匿名内部类写…

DNS 正/反向解析 主从复制 分离解析

一 DNS概念它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网 每一台 DNS 服务器都只负责管理一个有限范围 根域: 全球根服务器节点只有13个,10个在美国&#xff0c;1个荷兰&#xff0c;1个瑞典&#xff0c;1个日本 一级域名&#xff…

20. 完整的蒙特卡洛强化学习算法

文章目录 1. 回顾2. 约定3. MC强化学习环境对象的表示4.MC强化学习算法的表示5. MC方法的进一步分类 1. 回顾 第16篇给出了强化学习算法框架&#xff0c;随后的第17、18篇给出了该框架下如何进行策略评估以估计出Q ( s , a ) (s,a) (s,a)&#xff0c;第19篇给出了该框架下如何…

Java的四种访问权限修饰符

提示&#xff1a;对访问权限修饰符理解&#xff0c;最好的方法就是写代码进行测试。 Java的四种访问权限修饰符 一、四种访问权限1.对于类来说2.对于类成员来说 二、关于继承的一些规则三、总结 一、四种访问权限 Java 借助 private、protected、public与默认修饰符来控制类和…

【已解决】C语言实现多线程的同步与异步

说真的写了这篇博文时&#xff0c;才知道c语言本身不支持多线程&#xff0c;而是一些windowsapi让c语言拥有多线程的能力&#xff0c;那下面内容就以打开对话框为例&#xff0c;展现如何实现多线程的同步与异步。 文章目录 问题起源c语言多线程同步方案c语言多线程异步方案总结…

Typora使用及Markdow学习笔记1

编程如画&#xff0c;我是panda&#xff01; 最近有在学习Markdown&#xff0c;所以这次分享一下我的Markdown学习笔记 目录 前言 一、标题 二、段落 1.换行 2.分割线 三、文字显示 1.字体 2.上下标 四、列表 1.无序列表 2.有序列表 3.任务列表 五、区块 六、代…

【Linux运维】LVM和RAID学习及实践

LVM和RAID学习及实践 背景LVM简介新加硬盘的操作RAID-磁盘阵列应用场景RAID0RAID1其他结构RAID制作RAID 小结 背景 某台服务器的磁盘管理需要自己动手处理&#xff0c;找了一些资料也踩了一些坑&#xff0c;在这里记录一下&#xff0c;先介绍一下LVM和RAID这两个东西。在计算机…

【天龙八部】攻略day6

关键字&#xff1a; 灵武、寻宝要求、雁门 1】灵武选择 西凉枫林&#xff0c;锦带&#xff0c;短匕 白溪湖&#xff0c;明镜&#xff0c;双刺 竹海&#xff0c;玉钩&#xff0c;锁甲 2】楼兰寻宝需求 等级80级&#xff0c;40级前6本心法 3】雁门奖励 简单35*4元佑碎金 普…