权限相关知识

1.Linux权限的概念

在说Linux权限的概念之前我来问大家一个问题,你们觉得什么是权限?
权限平时的体现呢,就比如不是校长的亲戚就不能逛办公室,没充会员的爱奇艺看不了VIP影视剧,没成会员的的蛋糕店拿不到会员价等等等等。
a.权限是限制人的,人=真实的人+身份角色(校长亲戚,VIP等)。
b.目标事物的属性,也会影响权限(就好比你在爱奇艺里想写CSDN,这不搞笑吗,爱奇艺属性摆在那里,用来look影视剧的,怎么会有写博客的权利)。
所以我们能得出来,权限=角色+事物属性,权限最终决定你能不能做某事。
1.1Linux下有两种用户:超级用户(root)、普通用户。
超级用户:超级管理员,可以再 linux 系统下做任何事情,几乎不受任何限制。
普通用户:Linux的使用者,处处受到权限的限制。
超级用户的命令提示符是 “#” ,普通用户的命令提示符是 “$”
命令 su [ 用户名 ]
功能 :切换用户。
例如,要从 root 用户切换到普通用户 user ,则使用 su user 。 要从普通用户 user 切换到 root 用户则使用 su root( root 可以省略),此时系统会提示输入 root 用户的口令。
root既然是管理员,那么它切换到任何用户都不要密码,但是普通用户之间切换以及切换到root都需要输入相对应的密码。
我们可以ctrl+d或者exit退回原来的用户。
这里有个点,当我们使用su切换身份时,我们当前的工作路径并没有变,如下图。
但我们使用su - 时,家目录会发生变化,工作路径会变。
所以我们想直接切换用户时就su,想重新登陆用户时就su -
1.2指令提权
那么我们如何不切换用户也可以执行更高权限的指令呢?这里就得谈谈指令提权了。
提权的使用sudo指令。这里的话可以看出来,提权需要的密码竟然不是超级用户root的,而是自己的,为什么呢?就是因为白名单的原因,白名单里有你,你才能提权,没有你就别想了,而白名单是管理员把你加进去的,说明他信任你,所以你才能提权,知道了吗。像我的话,还没学到vim,不会把我的用户加进白名单,所以后面再仔细说说这个。如果你在白名单里,这个操作就会成功,这里就不再说了。

2.Linux权限管理

2.1文件访问者的分类(人)
Linux里的角色分三类,文件拥有者,文件所属组,other。
文件和文件目录的所有者: u---User (中国平民 法律问题)
文件和文件目录的所有者所在的组的用户: g---Group (不多说)
其它用户: o---Others (外国人)
这里需要纠正一下,大家可能会想,咱们前面不才说了Linux之下有两种用户吗,现在怎么又冒出来三类角色了,其实很好理解,两种用户是具体的用户,而那三类只是角色,是由具体的用户扮演的,root既可以是拥有者,也可以是所属组所以二者并不冲突,恰恰相反,互补。
2.2文件类型和访问权限(事物属性)
a) 文件类型
d:目录 ,-:普通文件 ,c:字符设备文件(显示器&&键盘) ,b:块设备文件(磁盘) ,p:管道文件 ,l:链接文件。
b)基本权限
i. 读( r ): Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
ii. 写( w ): Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
iii. 执行( x ): execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv.“—” 表示不具有该项权限
2.3文件权限值的表示方法
a) 字符表示方法
b)8 进制数值表示方法
4.文件访问权限的相关设置方法
4.1chmod
功能: 设置文件的访问权限
格式: chmod [ 参数 ] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和 root 才可以改变文件的权限
chmod
① 用户表示符 +/-= 权限字符
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限
用户符号:  
u :拥有者
g :拥有者同组用
o :其它用户
a :所有用户
实例:
②三位 8 进制数字
实例:
4.2chown
功能 :修改文件的拥有者
格式 chown [ 参数 ] 用户名 文件名
实例:
4.3chgrp
功能 :修改文件或目录的所属组
格式 chgrp [ 参数 ] 用户组名 文件名
常用选项 -R 递归修改文件或目录的所属组
实例
4.4umask
功能
查看或修改文件掩码
新建文件夹默认权限 =0666
新建目录默认权限 =0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是 mask ,则实际创建的出来的文件权限是 : mask & ~umask
格式 umask 权限值
说明 :将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022 ,普通用户默认为0002
实例
5.file指令
功能说明 :辨识文件类型。
语法 file [ 选项 ] 文件或目录 ... 
常用选项
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。
使用 sudo 分配权限
(1)修改 /etc/sudoers 文件分配文件
# chmod 740 /etc/sudoers
# vi /etc/sudoer
格式:接受权限的用户登陆的主机 = (执行命令的用户) 命令
(2)使用 sudo 调用授权的命令
sudo –u 用户名 命令
6.目录的权限
可执行权限 : 如果目录没有可执行权限 , 则无法 cd 到目录中 .
可读权限 : 如果目录没有可读权限 , 则无法用 ls 等命令查看目录中的文件内容 .
可写权限 : 如果目录没有可写权限 , 则无法在目录中创建文件 , 也无法在目录中删除文件 .
于是 , 问题来了 ~~
换句话来讲 , 就是只要用户具有目录的写权限 , 用户就可以删除目录中的文件 , 而不论这个用户是否有这个文件的写
权限 .
这好像不太科学啊 , 我张三创建的一个文件 , 凭什么被你李四可以删掉 ? 我们用下面的过程印证一下:
[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 3 root root 4096 9 19 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--. 1 root root 0 9 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9 19 15:53 litao
-rw-r--r--. 1 root root 0 9 19 15:59 root.c
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/root.c #litao 可以删除 root 创建的文件
rm :是否删除有写保护的普通空文件 "/home/root.c" y
[litao@localhost ~]$ exit
logout
为了解决这个不科学的问题 , Linux 引入了粘滞位的概念.
7.粘滞位
[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), 则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

8.关于权限的三个问题

1.目录权限:
a.如果我要进入一个目录需要什么权限?(需要x)
b.r对目录来说有什么作用?(无权查看指定目录下的文件信息)
c.w对于目录呢?(无权在指定目录内部新建文件,删除文件,修改文件等操作)
2.缺省权限:
由上面的八进制可以看出rwx(7)rwx(7)r-x(5),775
由上面的八进制可以看出rw-(6)rw-(6)r--(4),664
普通文件起始权限是666,目录是777.
umask是权限掩码,不是说起始是666,777吗,为什么我们上面是664,775呢,这是因为有权限掩码的原因。
直接说结论:最终权限(默认)=起始权限&(~umask)。
我们来计算一下,我们上面的umask其实是0002(第一个0不用管,后面的内容才提到),转换成二进制就是000 000 010,翻译成反码就是111 111 101,最后再与起始权限666(110 110 110)取和,所以最终权限是110 110 100(664)。
所以我们修改权限掩码就能达到修改Linux文件缺省的问题。
3.共享目录下如何防止被删文件
a.假如有的人心里变态,你跟你对象创了共享文件,不给第三人看,而那个人就嫉妒,看不到就毁掉,那该怎么办呢,因为你既然能创建就说明目录的w是有的,所以就可以删文件。删除文件,只由所在目录的w权限决定,与其他无关。
b.这时候就得靠粘滞位了,因为任何用户在设置了粘滞位的目录下,只能删除自己的文件(当然root大魔王是无视规则的)。
c.粘滞位只能给目录设置,不需要给普通文件设置。

9.关于权限的总结

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

这篇文章到这就结束啦,希望对大家有所帮助。

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

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

相关文章

uniapp如何i18n国际化

1、正常情况下项目在代码生成的时候就已经有i18n的相关依赖,如果没有可以自行使用如下命令下载: npm install vue-i18n --save 2、创建相关文件 en文件下: zh文件下: index文件下: 3、在main.js中注册&#xff1a…

[刷题]入门3.彩票摇奖

博客主页:算法歌者本篇专栏:[刷题]您的支持,是我的创作动力。 文章目录 1、题目2、基础3、思路4、结果 1、题目 链接:洛谷-P2550-彩票摇奖 2、基础 此题目考察数组、三重循环、自增操作的能力。 3、思路 写代码时候&#xf…

JVM垃圾回收详解(重点)

堆空间的基本结构 Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收 Java 堆是垃圾收集器管理的主要区域,因此也被称作 GC 堆(Garbage Collected Heap&…

git rebase --continue解冲突操作

git rebase --continue解冲突操作 如果只是执行了 git rebase 命令,那么git会输出一下“错误”提示: There is no tracking information for the current branch. Please specify which branch you want to rebase against. See git-rebase(1) for detai…

腾讯地图GL JS点标识监听:无dragend事件的经纬度获取方案

引入腾讯地图SDK <!--腾讯地图 API--><script charset"utf-8" src"https://map.qq.com/api/gljs?librariestools&v1.exp&key***"></script>构建地图容器 <div class"layui-card"><div class"layui-car…

249: 凸包面积

解法&#xff1a; 使用Andrew算法【计算几何/凸包】安德鲁算法&#xff08;Andrews Algorithm&#xff09;详解_andrew算法求凸包-CSDN博客 排序&#xff1a; 将所有点按照x坐标进行升序排序。如果x坐标相同&#xff0c;则按照y坐标升序排序。 初始化栈&#xff1a; 使用一个栈…

基于VUE实现语音通话:边录边转发送语言消息、 播放pcm 音频

文章目录 引言I 音频协议音频格式:音频协议:II 实现协议创建ws对象初始化边录边转发送语言消息 setupPCM按下通话按钮时开始讲话,松开后停止讲话播放pcm 音频III 第三库recorderplayer调试引言 需求:电台通讯网(电台远程遥控软件-超短波)该系统通过网络、超短波终端等无线…

【Rust中的项目管理】

Rust中的项目管理 前言Package&#xff0c;Crate&#xff0c;Module &use &#xff0c;Path通过代码示例解释 Crate&#xff0c;Module &#xff0c;use&#xff0c;Path创建一个package&#xff1a;代码组织化skin.rs 中的代码struct & enum 相对路径和绝对路径引用同…

极客争锋 智连未来 TuyaOpen Framework极客创意大赛正式开启

TuyaOpen Framework极客创意大赛正式开启 可选择基于: TuyaOpen Framework 原生开源包: https://github.com/tuya/tuyaopen 支持 Ubuntu/T2/T3/T5/ESP32/ESP32C3等多款芯片TuyaOpen Arduino:https://github.com/tuya/arduino-tuyaopen支持 T2/T3/T5等多款芯片TuyaOpen LuaNode…

安装SQL server中python和R

这两个都是编程语言 R 是一种专门为统计计算和数据分析而设计的语言&#xff0c;它具有丰富的统计函数和绘图工具&#xff0c;常用于学术研究、数据分析和统计建模等领域。 Python 是一种通用型编程语言&#xff0c;具有简单易学、语法简洁、功能强大等特点。它在数据科学、机…

A029-基于Spring Boot的物流管理系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

理解HTTP中的Cookie与Session:机制、安全性与报头响应

文章目录 1. HTTP Cookie1.1. HTTP Cookie 工作流程1.2. Cookie 分类1.3. 安全性主要用途 2. Set-Cookie 报头2.1. Set-Cookie 格式2.2. 生命周期 3. HTTP Session3.1. 工作流程3.2. 安全性3.3. 超时 与 失效3.4. 用途 1. HTTP Cookie HTTP Cookie&#xff08;也称为 Web Cook…

【电脑】解决DiskGenius调整分区大小时报错“文件使用的簇被标记为空闲或与其它文件有交叉”

【电脑】解决DiskGenius调整分区大小时报错“文件使用的簇被标记为空闲或与其它文件有交叉” 零、报错 在使用DiskGenius对磁盘分区进行调整时&#xff0c;DiskGenius检查出磁盘报错&#xff0c;报错信息&#xff1a;文件使用的簇被标记为空闲或与其它文件有交叉&#xff0c;…

redis linux 安装

下载解压 https://download.redis.io/releases/ tar -zvxf ----redis-7.4.1编译 进入目录下 # redis 依赖c yum install gcc-cmake可能会有问题&#xff0c;所以记得换源# 安装到 /usr/local/redis make PREFIX/usr/local/redis installcd src ./redis-serverredis.confi…

TG2016SLN爱普生38.400000MHz温度补偿振荡器X1G005731070216

在电子电路系统中&#xff0c;频率如同心脏跳动的节奏&#xff0c;为整个系统的有序运行提供基本节拍。38.4MHz 这个频率在众多电子应用场景中有广泛的用途。在数字电路领域&#xff0c;它可以作为时钟信号&#xff0c;为微处理器、微控制器等核心芯片提供稳定的工作频率&#…

LabVIEW 实现 find_nearest_neighbors 功能(二维平面上的最近邻查找)

1. 背景介绍 在数据分析和图像处理领域&#xff0c;经常需要查找给定点的最近邻居点。在LabVIEW中&#xff0c;计算二维平面上多个点之间的欧氏距离&#xff0c;并返回距离最近的几个点是一种常见操作。find_nearest_neighbors 函数用于实现这个功能。 2. 欧氏距离计算 在二维…

【Rust 编程语言工具】rustup-init.exe 安装与使用指南

rustup-init.exe 是用于安装和管理 Rust 编程语言工具链的 Windows 可执行文件。Rust 是一种系统级编程语言&#xff0c;旨在提供安全、并发和高性能的功能。rustup-init.exe 是官方提供的安装器&#xff0c;用于将 Rust 安装到 Windows 操作系统中&#xff0c;并配置相关环境。…

道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会

11月12日&#xff0c;2024电动汽车智能底盘大会在重庆开幕。会议由中国汽车工程学会主办&#xff0c;电动汽车产业技术创新战略联盟、中国汽车工程学会智能底盘分会、智能绿色车辆与交通全国重点实验室承办。本届大会围绕电动汽车智能底盘相关技术发展与融合&#xff0c;满足高…

【RabbitMQ】09-取消超时订单

生产者完成创建订单和扣减库存之后&#xff0c;发送消息到延迟队列。 // 3.清理购物车商品cartClient.deleteCartItemByIds(itemIds);// cartService.removeByItemIds(itemIds);// 4.扣减库存try {itemClient.deductStock(detailDTOS);//itemService.deductStock(detailDTOS);…

新版Apache tomcat服务安装 Mac+Window双环境(笔记)

简介&#xff1a;Tomcat服务器器的下载和安装&#xff1a; 安装前提 1&#xff09;电脑需要有java环境&#xff0c;jdk8以上&#xff0c;否则启动不不成功 2&#xff09;已经安装Sublime⽂文件编辑软件 3&#xff09;window电脑需要显示⽂文件拓拓展名 官网&#xff08;https:…