【Linux权限:系统中的数字锁与安全之门】

1.Linux下的用户

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

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

命令:su [用户名]

功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

总结:

  • 普通用户切换成root,需要输入root密码。
  • root回退到普通用户:exit或者ctrl+d(logout)。

  • root账号变成普通,不用认证。

  • 普通用户变成另一个普通用户,需要对方的密码。

su - :以root身份重新登录一次。

su :用户身份切换为root。

如果我们所有人都有root密码,每个人都可以删除用户添加信息,但是总不能排出有新手误删了,此时对数据就会造成不可挽回的影响,所以一般拥有root密码的是Linux管理员。

sudo:对指定的指令进行提权。

普通用户不想切换为root,但是想以root权限执行指令:sudo touch file1.txt,然后输入普通用户的密码。

我们后面再以root权限执行指令:sudo touch file3.txt,我们会发现此次不需要输出普通用户的密码就创建出文件了,这是因为曾经sodu输过密码,并且Linux会短暂的记录用户在一段时间执行过sudo命令,是已经做过认证的,所以后面就不需要再输入密码。

如果我们输入sudo就可以以root的身份执行指定的命令,root的密码是否就毫无意义呢?我们去执行一下sudo ls

如果我们将用户添加到该配置文件中,那用户是否可以执行sudo吗?当然可以,但是该配置文件(白名单)是root文件,我们普通用户无法自己添加该配置文件,要添加该配置文件必须以root的身份添加。所以能够执行sudo的,一定是历史上曾经经过管理员允许的用户,才能执行sudo,我们上面之所以能执行sudo是因为将sudo touch命令添加到该配置文件

2.Linux权限管理

首先了解一个概念,权限一定是限制人的,比如优酷会员,买了会员就可以看一些付费的电视剧。 对应的操作对象,一定要有对应的满足人的需求的属性。比如:优酷就专门看电视剧,csnd专门学习。

01.文件访问者的分类(人)

  • 文件和文件目录的所有者:u---User
  • 文件和文件目录的所有者所在的组的用户:g---Group
  • 其它用户:o---Others 

为什么会存在一个所属组

        假设当张三这个拥有者写了一份非常优秀的代码,他的领导是属于其他普通用户,领导觉得张三的代码非常好,想看一下,于是张三想打开了权限,让其他用户可以看到,但是同为竞争者的李四也是其他普通用户也就能看到,于是张三拥有者就和领导这个普通用户搭建了一个所属组,该组的所属者为张三,将其组内的内容对领导这个普通用户设置可见,只能让领导这个普通用户看到。

02.文件类型和访问权限(事物属性)

a) 文件类型
  • d:文件夹 -:普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件
b)基本权限
  • i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • iv.“—”表示不具有该项权限

03.文件权限值的表示方法

a)字符表示方法
Linux表示说明Linux表示说明
r--只读-w-仅可写
--x仅可执行rw-可读可写
-wx可写可执行r-w可读可执行
rwx可读可写可执行---无权限
b)8进制数值表示方法 
权限符号(读写执行)八进制二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
---0000

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

a)chmod

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

格式:chmod [参数] 权限 文件名

常用选项:

  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限

修改权限:chmod ugoa+=rwx FILE

验证有无权限,对比是什么?

当我们没有权限的时候,就不能以该方式访问该文件,直接被拒绝访问。有对应的权限才能做对应的事。对于可执行来说,不一定拥有可执行的权限就可以执行该文件。

当我们去掉拥有者的可执行权限,whb用户就不能执行文件了,可是我们发现所属组拥有可执行权限,而且所属组的用户还是whb用户,此时whb用户以所属组的身份去执行为什么不能执行此文件呢?

这是因为一个用户在去访问这文件的时候,Linux系统默认当前的用户的身份是拥有者,只会去看拥有者的权限,而且Linux系统的这种匹配只会匹配一次,匹配到了拥有者就不能再次匹配到所属组了。

此时拥有者就切换为了gaobo这个用户,但是此时登录的还是whb,此时Linux系统根据当前的用户whb就去匹配到了所属组,从而也就可以执行这个文件了。

当我们切换到gaobo这个普通用户,此时Linux系统又会再次匹配,此时匹配的就是拥有者,此时就没有可执行的权限。        

我们再切换为whb用户,此时我们对file.txt文件删除所有权限

然后我们切换超级用户root,此时root归属于other,root此时依然没有任何权限

上面图片观察到,尽管root没有权限,但是依然能够访问到该文件,说明权限对超级用户root形同虚设。

同时根据8进制数值表示法,我还可以用8进制进行权限修改。

b)chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

我们修改一个文件的权限,将文件的拥有者权限给别人,需要获取这个人的同意吗?很明显,如果你给别人的是一份非常烂的代码,别人肯定不会成为这个文件的拥有者。但是在Linux下我们不能商量,也没办法得到别人的允许,就算得到了别人的允许,我们也给不了拥有者身份,此时只能通过sudo进行指令提权。

同时我们也可以切换成root身份,进行拥有者身份的变化。

c)chgrp

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

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

该指令和上面的chown用法一样,因为我们当前为root,所以可以直接修改。修改拥有者和所属组的同时other也在改变,所以Linux也有修改other身份的指令。

我们可以同时修改拥有者和所属组,用户之间以:分隔-。

d)umask

解释:定制一个文件被创建的时候的默认权限,从起始权限中去掉(不是减法)在umask中出现的权限!

功能: 查看或修改文件掩码 新建文件夹默认权限=0666 新建目录默认权限=0777 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

格式:umask 权限值

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

验证一下普通用户创建的普通文件权限是664

通过公式:mask & ~umask即可求出实际创建的出来的文件权限

3.file指令

我们可以同时修改拥有者和所属组,用户之间以:分隔-。

第一个字符,表示文件类型。在Windows下,我们同样也具有文件类型,通常是通过后缀名标识,文件类型用来判定文件属于哪一个类别,可以用哪些软件操作。但是Linux的文件类型不通过后缀区分(不代表Linux不用后缀)

我们首先看一下有哪些文件类型

块设备文件 -> 磁盘:支持随机访问

字符设备文件 ->键盘显示器:不支持随机访问

链接文件:类似于Windows下的快捷方式

我们上面删除了链接文件但是可执行程序还在,所以Windows下我们想删除一个软件删除桌面的那个快捷方式不算删除,必须要去删除源文件。

管道文件 -> 传递信息

Linux的文件类型不通过后缀区分。

Linux的文件类型不通过后缀区分,但是不代表Linux指令gcc等其他指令不用后缀。对于Linux文件类型后缀,虽然Linux不通过它识别文件类型,但是我们依然推荐使用后缀去标识文件!因为工具需要,同时后缀也方便用户观看。

功能说明:辨识文件类型。

语法:file [选项] 文件或目录... 

常用选项:

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容。

使用 sudo分配权限

(1)修改/etc/sudoers 文件分配文件

# chmod 740 /etc/sudoers
# vi /etc/sudoer

格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令

(2)使用 sudo 调用授权的命令

$ sudo –u 用户名 命令

实例:

$ sudo -u root /usr/sbin/useradd u2

4.目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件属性内容.
  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
  • 这些权限对于超级用户root是没有限制的.

于是, 问题来了~~

换句话来讲, 就是只要用户whb具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个root用户是否有这个文件的写权限. 这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉?

这就相当于我李四的房子给你张三住,张三要出差一段时间,让李四不要动他东西,李四自己的房子不能动吗?肯定能动,你张三创建的文件在我李四的目录下,我对我自己的目录有写权限,我自己目录下的文件我自己不能删!!!总结:一个文件能否被删除,并不取决于文件本身,而取决于文件所处的目录的拥有者是否具有写权限。

那我们可以去掉other的w权限吗?很明显,不能,虽然w权限不能让别人删除文件,但是我们自己也写不了文件,我们自己也是普通用户,对于root来说,我们也是other。

为了解决这个不科学的问题, Linux引入了粘滞位的概念

5.粘滞位

粘滞位:给目录中的other设置的一个权限位,具有x权限的意义,同时进一步对目录的权限进行特殊限定。

[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作

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

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

6.关于权限的总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
  • 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

本章结束啦!下章见,拜拜。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络实验

计算机网络实验 使用软件PT7.0按照上面的拓扑结构建立网络,进行合理配置,使得所有计算机之间能够互相通信。并且修改各交换机的系统名称为:学号_编号,如你的学号为123,交换机Switch0的编号为0,则系统名称为…

基于Jaccard相似度的推荐算法---示例

目录 数据展示推荐算法的分类基于相似度基于流行度/上下文/社交网络 Jaccard相似度分析数据的特点可以考虑的方法计算方法优缺点计算用户之间的Jaccard相似度获取与给定最相似的10个用户对1713353的用户推荐10本书 数据展示 import pandas as pd import numpy as np# 读取CSV文…

如何处理【SVC】中的样本不均衡问题

样本不均衡是指在一组数据集中,标签的一类天生 占有很大的比例,但我们有着捕捉出某种特定的分类的需求的状况。比如,我们现在要对潜在犯罪者和普通人进行 分类,潜在犯罪者占总人口的比例是相当低的,也许只有2%左右&…

CSS 边框、轮廓线

一、CSS边框: CSS边框属性允许指定一个元素边框的样式和颜色。 1)、边框样式:border-style属性用来定义边框的样式,border-style值: 2)、边框宽度:border-width属性用于指定边框宽度。指定变宽…

Python - Windows下使用Python脚本同步一个文件夹下的所有文件到另一个文件夹下

Python同步文件 在Windows下使用Python脚本同步一个文件夹下的所有文件到另一个文件夹下 示例代码 import logging import os import shutildef sync_files(src_file_path, dst_dir_path, exclude_list):try:if not os.path.exists(src_file_path):os.makedirs(src_file_pat…

RISC Zero ZKP协议中的商多项式

1. 引言 前序博客见: Reed-Solomon Codes及其与RISC Zero zkVM的关系 RISC Zero zkVM主要针对可验证计算,其具有隐私和可扩展属性: Reed-Solomon Codes及其与RISC Zero zkVM的关系博客中指出:RISC Zero中的Reed-Solomon Code…

django+drf+vue 简单系统搭建 (2) - drf 应用

按照本系统设置目的,是为了建立一些工具用来处理简单的文件。 1. 准备djangorestframework 关于drf的说明请参见:Django REST Framework教程 | 大江狗的博客 本系列直接使用drf的序列化等其他功能。 安装 conda install djangorestframework conda i…

Spire.Office for .NET 8.10.2 同步更新-Crk

Spire.Office for .NET是 E-iceblue 提供的企业级 Office .NET API 的组合。它包括Spire.Doc、Spire.XLS、Spire.Spreadsheet、Spire.Presentation、Spire.PDF、Spire.DataExport、Spire.OfficeViewer、Spire.PDFViewer、Spire.DocViewer、Spire.Barcode和Spire.Email。Spire.O…

OceanBase 如何通过日志观测冻结转储流程?

本文旨在通过日志解析 OceanBase 的冻结转储流程,以其冻结检查线程为切入点,以租户(1002)的线程名为例。 作者:陈慧明,爱可生测试工程师,主要参与 DMP 和 DBLE 自动化测试项目。 爱可生开源社区…

在MacBook上实现免费的PDF文件编辑

之前我想对PDF文件进行简单处理(比如删页面、添空白页、调整页面顺序),要么是开wps会员【花钱贵】,下载(盗版)Adobe Acrobat【macOS不好下载】,要么用福昕阅览器登陆学生账号(学校买…

MySQL的存储过程

存储过程:是一组为了完成特定功能的sql语句的集合,类似于函数 写好一个存储过程之后,我们可以像函数一样随时可以调用sql的集合 复杂的,需要很多sql语句联合执行完成的任务 存储过程在执行上比sql语句执行速度快,效率…

错误未找到concrt140.dll最详细的解决方法与修复教程

作为一名长期活跃电脑计算机上的用户,我非常理解找不到concrt140.dll导致无法继续执行代码的困扰。这个问题可能会影响到许多软件的工作进度,甚至影响到项目的完成。在这里,我将分享我对于这个问题的理解和修复方法,希望能对大家有…

劳务派遣公司如何通过网盘与境外用户共享文件数据

中外企业合作、跨国公司已成为趋势,相应的文件数据共享问题应运而生。数据作为现代全球经济的命脉,如果文件数据无法高效流转,就会成为了企业发展的桎梏。 而传统常用的文件协作方式一般是邮件沟通,不过在日常使用过程中&#xf…

jenkins原理篇——成员权限管理

大家好,我是蓝胖子,前面几节我讲述了jenkins的语法以及我是如何使用jenkins对测试和正式环境进行发布的。但正式环境使用jenkins还有一点很重要,那就是权限管理。正式环境的权限往往不能对所有人开放,以及要做到每次发布都是谁在操…

什么是数据可视化,为什么数据可视化很重要?

数据可视化是数据的图形表示,可以帮助人们更轻松地理解和解释复杂的信息。它涉及创建数据的视觉表示,例如图表、图形、地图和其他视觉元素,以传达数据中的见解、模式和趋势。数据可视化是将原始数据转化为可操作知识的关键工具。 以下是数据…

【数据结构】树与二叉树(三):二叉树的定义、特点、性质及相关证明

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语5.1.4 树的表示 5.2 二叉树5.2.1 二叉树1. 定义2. 特点3. 性质引理5.1:二叉树中层数为i的结点至多有 2 i 2^i 2i个,其中 i ≥ 0 i \geq 0 i≥0。引理5.2:高度为k的二叉…

【机芯智能】智能公元(语音模块)

语音模块配置 进入语音模块智能公元官网,配置词条和识别后的串口输出指令. 记录下相关指令以及上图的识别词条,方便SDK烧写后的调试 SDK烧写 4. SDK 先和电脑调试助手配合,验证数据

web框架与Django

web应用程序 什么是web Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件 应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这…

竞赛选题 深度学习疫情社交安全距离检测算法 - python opencv cnn

文章目录 0 前言1 课题背景2 实现效果3 相关技术3.1 YOLOV43.2 基于 DeepSort 算法的行人跟踪 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习疫情社交安全距离检测算法 ** 该项目较为新颖,适合作为竞赛…

11月11日|欢迎参加Sui Meetup泰国活动!

现在是Sui基金会与泰国Sui社区见面的时候啦,我们诚邀每个人参加今年最大的Sui Meetup泰国活动,主题是“Summer Paradise(夏日天堂)”。在活动中,您将会见到来自Sui基金会、ContributionDAO、KX、Inspex、Cryptomind、A…