权限及权限操作

1.命令行解释器

Linux将命令行解释器称为外壳程序shell

命令行解释器的作用就是将用户输入的指令转换为操作系统能够直接执行的指令。同时将操作系统的反馈转换为用户能看懂的反馈,解决了用户和操作系统沟通成本的问题。与此同时,命令行解释器还能够拦截非法在请求,变相保护了操作系统。

我们一般把Linux称为Linux内核,而把 Linux和他的外壳程序称为Linux

2.权限

Linux是一个多用户的操作系统,能够允许多个用户同时登陆Linux系统进行操作。

而Linux下有两种用户,一种是 root 超级管理员,另一种就是普通用户。而我们所讲的权限,是用来约束普通用户的,root用户不受权限的约束,能做任何事。

切换用户的操作

su 切换用户,默认是切换到root用户,要输入密码,但是如果是root用户切换到普通用户就不需要输入密码,直接切换,su命令只是切换用户,不改变所处的路径。

su -  :用于切换为root用户,但是我们一般直接用 su 默认就能切换为root,su -登录到root之后会跳到 /root 目录。

从root用户退回到普通用户可以用 exit 或者直接ctrl d

如何知道我们当前系统有哪些普通用户: ls /home

如果是普通用户,不想切换到root用户,但是想用root的神分去执行一些指令,可以用 sudo 短暂提权,第一次要输入root密码,然后接下来的一段时间都不用输入密码了。 普通用户使用sudo 需要在一个文件中进行配置,相对于将信任的普通用户加入到白名单中,让他可以使用root的身份,这个文件就是  /etc/sudoers ,我们后续会用vim操作对其进行修改来添加到白名单。但是如果系统检测到你使用sudo执行非法指令,会将你从白名单中移除,所以要谨慎使用sudo。

前面我们讲的是普通用户的操作受到权限的限制,那么权限是什么呢?

简单来说,权限是用来约束一个人做某件事的,同时本质上其实是取决于这个人做这件事的身份。就好比我们常用的音乐软件,有的音乐是vip专享的,普通用户无法听完整版,而vip用户可以听所有的歌曲,这就是不同的身份的区别,同时,权限还取决于我们的目标对象是否具有对应的属性,比如我们上面的音乐软件,我们可以用它来听歌,但是我们却无法用它来看电影,不管你是不是vip,都是无法使用音乐软件来看电影的,这是因为音乐软件本来就不具备看电影的功能或者说是属性,应用软件也就是我们上面说的目标对象,我们操作的就是音乐软件,用这个对象来完成我们想做的事情。

所以文件权限也是一样的,文件权限 = 人(角色)+文件属性 

而对于文件而言,一共有三种角色,分别是拥有者(owner)、所属组(group)、其他人(other)。 我们前面所说的用户,与文件权限里的角色并不冲突,每个用户在一个文件中都会对应文件的一个角色,这两个概念是互补的。

为什么有所属组的角色呢?在一些大型项目或者特殊的文件,我们是希望与团队共享,但是不对外公开的,而拥有者只能有一个,如果没有所属组而只有其他的话,就只能将文件的全部权限都放开了,这样一来所有人都有了跟团队的成员一样的权限,这就不符合我们预期了。所以,所属组的角色的存在是必要的。

文件的权限有三种,读权限(r),写权限(w) 以及执行权限(x)。

那么我们如何查看一个用户在一个文件所对应的角色及其权限呢?我们之前学的 ls -l 显示能显示文件的详细信息,我们可以随便拿一个文件来看一下

上面的第一个字符表示的是文件的类型,我们可以看到,dir1的类型是d ,也就是目录,而cc是一个普通文件,他的类型表示就是 - ,Linux的常见文件类型有以下几种

- :普通文件

d:目录文件

c:字符设备(键盘、显示器等)文件

b:块设备(磁盘)文件

l:链接文件(比如快捷方式)

p:管道文件

Linux下文件类型是由他的第一个字符决定的,与文件名的后缀无关,所以Linux系统眼中是没有文件后缀的,文件后缀也被当成普通的文件名的一部分,我们平时用的后缀主要还是用来方便用户识别文件类型。 虽然操作系统不关注文件名,但是不代表我们使用的工具对文件后缀没有要求,比如gcc/g++等。

我们可以使用file指令文件类型 ,file  文件名

文件类型后面的9个字符表示的就是文件的权限,每三个字符为一组,第一组表示的是拥有者的权限,顺序都是 rwx ,对应的权限如果有,就是对应的缩写,如果没有就是 - 来表示。比如cc的拥有着的权限就是读权限和写权限,没有执行权限。

而其他字符的意思也很容易

对于文件的角色,只需要表明拥有者和所属组就够了,除了这两个都是其他。

文件的权限的操作

了解了文件权限我们还要学会操作文件权限。

文件权限的操作符是chmod

语法: chmod  角色(u:拥有者,g:所属组,o:其他)+/-权限(rwx) 文件名 

首先我们要明确,修改文件属性只能由所属者或者root来操作

假如我们要把上面的 cc 的所属者权限加上执行的权限,那我们就可以这样写

chmod u+x cc

或者如果我们想要对一个文件的多个角色的权限进行操作,中间可以用逗号隔开

chmod u-rwx,g-rwx,o-rwx cc

对于有的权限,如果用减法的话就去掉该权限了,而对于本来就没有的权限,使用减法减去也不会有任何操作,加法也是类似。

还要注意一点的就是,当用户同时是拥有者和所属组的时候,查看权限的时候会从左往右匹配,匹配到了就停下来,也就是说,这个用户只会匹配到拥有者的权限,而不会匹配到所属组的权限。

如上,虽然用户既是拥有者也是所属组,但是他只有拥有着的权限,用cat去访问文件时,报了一个错 Permission denied ,就是没有该权限的意思。

看待文件的权限我们还有一种表示法,就是把权限的有当作二进制的1,而没有该权限就是 0 ,这样一来,一个角色的权限就可以用三位的二进制数来表示,也可以用一个八进制数来表示

那么我们操作文件权限的时候也是可以有八进制的数字来操作的,比如我们可以直接 chmod加三个八进制数来重新设置文件的权限

同时我们对于权限的增加和减少也可以用+/-八进制数来表示

上面是文件的权限操作,但是除了对权限进行修改,我们还经常需要修改文件的角色,也就是修改拥有者和所属组。按照我们的正常逻辑,我们要将一个文件的拥有者或者所属组修改为其他的用户,这应该要经过别人的同意才能合法转让。但是我们要意识到,我们不可能总是让别人跟我们一起上线操作仅仅为了转让一个文件或者修改所属组,这时候就可以用到 sudo 提权来进行角色的修改。root是超级用户,他想怎么来就怎么来,所以我们普通用户可以用 sudo 短暂提权来完成文件角色的修改。

文件角色修改的指令 

修改拥有者 chown 

sudo  chown  新的拥有者  文件名

同时chown也可以修改所属组

sudo chown 新的拥有者:新的所属组  文件名

而修改所属组还有一个指令就是 chgrp

sudo chgrp 新的所属组 文件名

目录的权限操作与普通文件的权限操作方法也是一样的。

但是目录的权限代表的意义与普通文件不一样 ,我们进入一个目录需要目录的 x 权限,创建或删除该目录的文件需要 w 权限,要显示目录的文件(ls)需要 r 权限

为什么文件和目录创建时的权限是我们所看到的样子?

Linux规定,目录的初始权限是777,这很容易理解,因为目录一般都需要可读可写可执行的权限,而普通文件的初始权限是 664

但是我们上面看到的文件和目录的权限并不是 664 和777 ,这是为什么呢?这是因为在初始条件之下,系统默认配置好了一个umask(权限掩码),权限掩码的作用就是凡是在权限掩码中出现的权限,都要在初始权限中去掉。我们可以输入umask来查看当前的权限掩码是多少

umask也是用八进制来表示的,第一位的0表示这是一个八进制的数,后面三位则表示要去掉的权限,比如上面的0002,最后一位的 2 表示要去掉其他的 w 权限

这就造成了上面我们所看到的权限的。我们的权限中的4表示r权限,2表示w权限,1表示x权限,其他的都是这三个数字组合形式,比如6 就是 r 和w权限。 我们不要将上面的权限的去除简单理解为减法,实际的运算是这样的 初始权限 &(~umask)  ,因为umask表示的是从初始权限中去掉的权限,那么我们就可以将 umask 转换为二进制取反,其中为1的位就变成了0,为0的位就变成了1,再通过按位与操作将取反之后为0的位对应的初始权限的1变成0.

umask也是可以手动设置的。 umask 八进制数(0xxx)

粘滞位

我们知道Linux是一个多用户的系统,在有些时候我们需要一个公共的目录下进行团队共享文件或者进行临时文件的增删查改。

那么这个公共目录由谁创建呢?普通用户的默认权限就是只能在自己的家目录下创建目录,在其它用户的家目录和根目录下是没有 w 权限的。而对于这种公共目录,我们一般由root创建,在根目录下创建一个公共的目录,再将该公共目录的所有权限(rwx)都放开,这样一来所有普通用户都能在这个目录下创建和增加删除文件以及查看文件了。这时候创建者和所属组都是root,其他普通用户都是other。

虽然这个目录是公共的,但是不代表在这个目录下的每一个文件都是公共的,因为在公共目录下可能也会有不同的分组合作等等,所以说这个目录下的文件并不都是所有人可操作的,有的文件不想让其他人读写执行,我们就可以把other权限设置为000。

但是这样一来,即使我们不能读一些别人没有放开权限的文件,但是这个公共目录的所有权限是对我们放开的,也就是说,我们能够对目录下的文件进行创建和删除。也就是说,我们可以随意删除别人的文件,因为公共目录的 w 权限我们是有的。

这样一来就必须有一种策略来制止这种恶意的删除,但是,我们能够直接把这个公共的目录的 w 权限给去掉吗?如果没有 w 权限,那么别的用户就无法在这个目录下创建文件了,这个目录的存在也就没有任何意义了。我们要能够让所有人都能在公共目录下创建文件,同时每个用户只能删除自己拥有的文件,而不能随意删除别人的文件。这时候我们就可以给公共目录设置粘滞位(粘滞位是权限的一种特殊情况)。

粘滞位的设置方法  

chmod  +t  公共目录名 

粘滞位只能由root设置,因为公共目录一般是root创建的。 当我们设置好粘滞位之后,权限中other的w权限就变成了 t ,这就是粘滞位。粘滞位是自动加在other权限上的

设置好粘滞位之后,每个文件只能由他的拥有者或者root或者是目录的拥有者(一般是root)来删除了,其他用户无法删除别人的文件。

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

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

相关文章

java项目之校园失物招领系统(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园失物招领系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 校园失物招领系统的主要…

修改mysql locahost或者127.0.0.1弱密码问题

一、登录有问题的数据库 sudo mysql -uroot -pxxx -hkde-offline1 -P13306 二、查询user表 这将显示与 root 用户关联的主机、用户名以及加密后的认证字符串(密码)。请注意,authentication_string 列中存储的是经过哈希加密后的密码,而不是原始密码。 MySQL [mysql…

机器学习(五) ----------决策树算法

目录 1 核心思想 2 决策树算法主要步骤 3 决策树算法的分类 3.1 ID3算法(Iterative Dichotomiser 3): 3.1.1 基本步骤 3.1.2 原理 信息增益 3.1.3 注意事项 3.2 C4.5算法: 3.2.1. 信息增益率 计算公式 3.2.2. 构建决策…

这个问题无人能解,菜鸟勿进

前言 2024-5-12 21:53:46 这是陈旧已久的草稿 2021-06-23 23:25:12 发布一下 一、问题 1.描述: 在我的世界中建个红石电路 2.需求: 五个灯A、B、C、D、E、F 五个开关a、b、c、d、e、f、总开关 3.要求: 总开关使所有灯关 开关a可以控制灯A…

鸿蒙内核源码分析(Shell编辑篇) | 两个任务,三个阶段

系列篇从内核视角用一句话概括shell的底层实现为:两个任务,三个阶段。其本质是独立进程,因而划到进程管理模块。每次创建shell进程都会再创建两个任务。 客户端任务(ShellEntry): 负责接受来自终端(控制台)敲入的一个个字符&…

C++音视频开发面试题

下面是音视频开发面试题精选: 1、纹理抗锯齿有哪些算法?各有哪些利弊?2、使用 OpenGL PBO 为什么能提高效率?3、iOS 如何使用分段转码,如何设置分片大小?4、VideoToolbox 中是不是不存在平面格式&#xff…

【图解计算机网络】http1.1,http2.0,http3.0

http1.1,http2.0,http3.0 http1.1长连接管道传输缺点 http2.0头部压缩二进制格式并发传输服务端推送缺点 http3.0无队头阻塞快速建立连接连接迁移 http1.1 长连接 在http1.0的时候,一次http请求就要建立一次TCP连接,这一次的htt…

LeetCode 654.最大二叉树

LeetCode 654.最大二叉树 1、题目 题目链接:654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地…

11、关系运算符、逻辑运算符(讲解 和 的区别)、赋值表达式、三目表达式、运算符优先级(超详细版本)+结合性的分析

这里写目录标题 一、关系运算符(比较运算符)二、⭐逻辑运算符1、 && 和 &2、|| 或 |3、!4、^ 三、赋值运算符四、三目运算符(条件运算符)五、运算符优先级 在讲之前先明确几个概念: 1、单目运算…

【人工智能基础】GAN与WGAN实验

一、GAN网络概述 GAN:生成对抗网络。GAN网络中存在两个网络:G(Generator,生成网络)和D(Discriminator,判别网络)。 Generator接收一个随机的噪声z,通过这个噪声生成图片…

阿里开源编程大模型 CodeQwen1.5:64K92编程语言,Code和SQL编程,评测接近GPT-4-Turbo

前言 阿里巴巴最近发布的CodeQwen1.5模型标志着其在编程语言模型领域的一次重大突破。这款开源模型不仅支持高达92种编程语言和64K的上下文长度,而且在多项性能评测中显示出接近或超过当前行业领导者GPT-4-Turbo的能力。 Huggingface模型下载:https://h…

Boost库的使用

1 下载与安装 1.1 下载 网址:Boost C Libraries 进入后选择自己需要的版本安装即可 1.2 安装 1.2.1 解压 1.2.2 编译安装 双击bootstrap.bat 这一步完成后会生成一个b2.exe文件 双击b2.exe文件运行(此步需要花费较长的时间) 之后再stag…

双向链表(双向带头循环)的增删查改的实现(简单易懂)

一:双向链表的概念 每个节点除开存有数据,还有一个指针指向前一个节点,一个指针指向后一个节点,尾节点和哨兵位互相指向,从而形成一个循环。 二:双向链表的实现第一点: 本文采用三个文件进行实…

GIS数据—1984-2020中国1km人造夜间灯光观测数据

夜间灯光观测数据(Nighttime Light,NTL)是评估人类活动边界的常用手段,目前,该数据已经广泛应用于城市范围、不透水面、基础设施建设等一系列过程。今天,小编要带来的是长时间序列中国区域边界的夜间灯光观测数据。 数…

springcloud -nacos实战

一、nacos 功能简介 1.1.什么是Nacos? 官方简介:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 Nacos的关键特性包括: 服务发现和服务健康监测动态配置服务动态DNS服务服务及其元数…

VMware配置Kali linux + 物理机连接Xshell

VMware 配置 kali linux 首先需要先安装VMware Workstation 我是在Windows 安装的 VMware Workstation Pro 17 虚拟化,产品密钥。。这里不做多说了 下载kali linux 这里我下载的是kali-linux-2024.1 Note:这里选Virtual Machines,建议不要…

景源畅信:抖音小店的商品怎么同步到橱窗?

在数字营销的海洋中,抖音小店与橱窗的同步操作无疑是商家们关注的焦点。这不仅能增加商品的曝光度,还能提高交易的可能性。那么,如何将抖音小店的商品同步到橱窗呢? 一、核心步骤解析 要实现商品从抖音小店同步到橱窗,你需要确保…

【Linux 网络】网络编程套接字 -- 详解

⚪ 预备知识 1、理解源 IP 地址和目的 IP 地址 举例理解:(唐僧西天取经) 在 IP 数据包头部中 有两个 IP 地址, 分别叫做源 IP 地址 和目的 IP 地址。 如果我们的台式机或者笔记本没有 IP 地址就无法上网,而因为…

Unity引擎是什么?有哪些优点

大家好,我是咕噜土豆,很高兴又和大家见面了。今天我们一起来了解一下Unity引擎和它有哪些优点。 首先带大家了解什么是Unity引擎 Unity引擎是一款由Unity Technologies开发的跨平台游戏开发引擎,广泛用于创建2D和3D游戏以及其他交互式内容&…

C++动态内存区域划分、new、delete关键字

目录 一、C/C中程序的内存区域划分 为什么会存在内存区域划分? 二、new关键字 1、内置类型的new/delete使用方法: 2、new和delete的本质 一、C/C中程序的内存区域划分 为什么会存在内存区域划分? 因为不同数据有不同的存储需求&#xff0…