【linux】对于权限的理解

news2024/10/6 16:19:35

权限

    • Linux权限的概念
      • 用户之间的切换
    • Linux权限管理
      • 文件权限
      • 操作文件的人
      • Linux文件默认权限的设置
        • 权限掩码
      • 所属组/其他删除拥有者创建的文件
      • 文件拥有者、所属组的修改
        • 修改文件拥有者
        • 修改文件所属组
        • 一次性修改拥有者和所属组
      • 目录的执行权限

在这里插入图片描述

Linux权限的概念

首先,我们在登录的时候可以超级用户(root)身份登录,也可以普通用户身份登录,超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
在这里插入图片描述
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。

root就相当于是游戏里的上帝,想干啥就干啥,干什么事情不需要经过他人同意。

用户之间的切换

想要从一个用户下切换为另一个用户就可以:su 用户名

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

如果密码输错就无法切换,输入密码的时候是不会显示的,和设置普通用户的密码一样。

从普通用户切到root下:
在这里插入图片描述

从root且到普通用户,不需要输入密码
在这里插入图片描述

如果你是从一个用户已经转入到另一个用户了,但是你想要再转回去的话,就不建议再用su了,因为这样会导致产生多个进程,通俗点来说就是开了好多个用户。
在这里插入图片描述
想要直接退回去的话可以直接输入exit 或者用快捷键 ctrl + d (这个不会显示成ctrl d)。在这里插入图片描述
这里可以看到有好多个进程,而且都是重复的,所以说想要回到原来的用户的话就直接 ctrl + d 就可以了。
在这里插入图片描述

理解权限:一件事是否允许被特定的人做。

权限 = 人 + 事物属性

Linux权限管理

文件权限

记一个东西:linux下一切皆文件。像普通文件,目录文件,块设备文件,链接文件,字符设备文件,管道文件等等都是文件。

而linux系统中怎么区分这些属性的呢?

首先linux系统中,不以文件后缀作为区分文件类型的方式。当我们用 ls -l(或ll) 展示文件信息时会在文件最前面看到一堆的字母和-。
在这里插入图片描述
这些字母和-有特定的意思。
在这里插入图片描述
那后面的rw-什么的代表什么?

先看下面的解释:
文件本身具有天然的权限属性:读® + 写(w) + 执行(x)。这三个属性限定该文件是否能够读取,是否能够写入,是否能够执行。

简单画个表格:
在这里插入图片描述
这里就讲一下目录文件的x:大家可以想象你自己再windows操作系统下,双击一个文件夹,会发生什么事情,就是进入了该文件夹,如果你双击了一款游戏,这款游戏就执行起来了,那么把双击游戏的执行类推到双击文件夹上,那么就可以看出,双击文件夹就是执行该文件夹,也就是进入了该文件夹,文件夹也就是目录。那么再类推到linux系统上,对于目录来说,x代表执行,那么是否有这个权力就代表你是否能够进入这个目录。

这样的话再看这张图就明白了:
在这里插入图片描述

但是为啥有三个?

操作文件的人

对于操作文件的人可以分为三类:拥有者(user),所属组(group),其他人(other)。

拥有者:对于一个文件来说,这个文件是被谁拥有的,这个拥有的人就是拥有者。

所属组:举个栗子,为了方便管理,如果我有一个小组,小组内有 20 个用户,而这 20 位用户对同一个文件的权限是一致的,那我是一位用户一位用户地分配权限方便,还是把 20 位用户加入一个组中,然后给这个组分配权限方便呢?不言而喻,一定是给一个用户组分配权限更加方便。

其他人就是除了拥有者和所属组之外的人了。

而对文件进行读、写、执行操作的是人,人具有是否被允许干某件事这个属性。这样组合起来就是权限。

在这里插入图片描述
字母的意思就是有,而 - 的意思就是没有
在这里插入图片描述

再往后面看,两个yjy分别代表的是该文件的拥有者所属组。除了拥有者和所属组就是其他用户,不需要再搞一个标志了。
在这里插入图片描述

再往后就是文件大小,创建时间和文件名了。

当然上面的hello.c文件不可能执行,所以默认就都没有执行的权限。
但是可以改权限:
在这里插入图片描述
上面的操作就是给u(user)添加上执行的权限。虽然文件变成绿色了,但是没什么用,因为hello.c无法执行。

同样的我们也可以给g和o赋权。
在这里插入图片描述
也可以剥去权力:
在这里插入图片描述
还可以统一赋权和去权。
在这里插入图片描述
在这里插入图片描述
每个用户对文件权限位置是确定的,而且是两态的(要么有权,要么无权)。
我们可以用1来表示有权,用0来表示无权。
举个栗子:rw- 就是 110。
这样的话我们就可以用一种新的修改权限的方式:三位8进制数字。

在这里插入图片描述

八进制数 777 对应到二进制下就是 111 111 111,那么就代表所有的权限都有了。

在这里插入图片描述
八进制数 000 对应二进制就是 000 000 000,就是都没有。
在这里插入图片描述
八进制数 666 转换成二进制数就是 110 110 110,就是读写有,执行没有。

就不再多举例子了,都一个意思,数不一样,对应权限不一样。

Linux文件默认权限的设置

为什么创建文件会有默认的权限?

权限掩码

先不说概念,先看看长啥样:
umask这个指令可以看到权限掩码是多少。
在这里插入图片描述
第一个零意思是说这个数是八进制数,去掉它,就剩002了,八进制的002对应二进制就是000 000 010,这就是权限掩码,有什么用?

还是八进制,这里给出一个非官方的概念,起始权限。

普通文件的起始权限是666,对应二进制就是110 110 110;
目录文件的起始权限是777,对应二进制就是111 111 111。

凡是权限掩码中出现1的位置,对应到起始权限中的位置处如果为1,就变为0;如果为0,就不变。

那么默认的权限掩码都是0002,也就是000 000 010,这里去掉普通文件的那个1,就变成了 110 110 100,就是664,对应到字母就是 rw- rw- r–;去掉目录文件里的那个1,就变成了111 111 101,就是775,对应到字母就是 rwx rwx r-x。

那用二进制怎么算呢?
先对权限掩码(mask)取反,得到(~mask),然后再将这个值和起始权限与一下。那么 文件的默认权限 = 起始权限 & (~mask)

看图:
在这里插入图片描述
新创建的普通文件的权限和目录文件的权限和上面推出来的是一模一样的。

权限掩码是可以修改的,但是极其不建议,因为这些默认的权限是他人通过经验总结出来的,若修改,未必有人家设计的好,但是硬要修改的话也可以,umask 后面跟上八进制数就行,但是这样修改之在本次对话框能有效,也就是本次登录推出之后就变回原来的值了,如果想永久修改就需要搞配置文件,但还是建议不要永久修改,万一再想改回默认状态但是你忘了默认的值,那就恶心了。

所属组/其他删除拥有者创建的文件

在这里插入图片描述
这样以其他人的身份删除不属于这个人的文件,这样的操作,对于拥有者来说非常的危险,因为当这个文件比较重要时,如果被其他人删除了,那都不知道这个人是谁,就出大问题了。怎样解决呢?

若目录本身对other有w权限,other可以删掉任何目录下的文件;
若目录本身对other没有w权限,则other不可以删掉任何文件。

但是如果我们想要other可以再特定目录下创建文件并写入,但是不想让任何人删除掉自己的文件,怎么做?

这时候要引出一个新概念,叫粘滞位(只对目录文件有效),一般是限制other权限的。

设置方法:chmod o+t dir

在这里插入图片描述
设置好之后,other就无法删除文件了,但是可以创建文件。

在这里插入图片描述
将目录的other赋予w属性。
在这里插入图片描述
以other在该目录下创建文件,可以。
在这里插入图片描述
对于设置了粘滞位的目录,在该目录下,只能文件拥有者或root可以删文件,其他人不能删(所属组也不能)。

在这里插入图片描述

有时,用户多的情况下,或系统会有很多临时数据,所有临时文件放在系统的/tmp下,这时就需要把所有权限放开,但是只想让文件拥有者自己删除文件,就需要设置粘滞位。

若想去除粘滞位: chmod o-t filename
在这里插入图片描述

文件拥有者、所属组的修改

下面的这两个操作需要以root的身份去做,不然都是不允许的。
你把一个东西交给别人需要经过别人的允许。但是如果你是上帝视角,把东西给别人,别人什么话也不能说,不服也得憋着。
所以要么切换到root,要么sudo 行为。

修改文件拥有者

普通用户不允许:在这里插入图片描述

法一:sudo
在这里插入图片描述

法二:切换到root
在这里插入图片描述

修改文件所属组

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

但是如果文件拥有者是你,那么你可以直接将所属组改为你自己。
在这里插入图片描述

一次性修改拥有者和所属组

在这里插入图片描述

目录的执行权限

最后要再强调下这个,目录的执行权限决定的是:是否能够进入该目录,这个我开头也细讲了,这里就不多说为什么了。

当o对目录没有了x,会发生什么?
在这里插入图片描述

无x有r
在这里插入图片描述
可以看到文件名,但是看不到文件的详细信息。
在这里插入图片描述

无x有w
想往进写文件不行
在这里插入图片描述
想删掉里面的文件也不行。
在这里插入图片描述

如果想编写目录下的文件时,会保存不了,保存了就无法退出,不保存才能退出。在这里插入图片描述

到此结束。。

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

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

相关文章

ROS主机搭建NFS服务器,虚拟机通过挂载访问及修改主机文件

本文主要介绍在ROS主机中搭建NFS服务器,虚拟机(从机)通过nfs挂载的方式访问及修改主机中文件的方法 一、ROS主机NFS服务器搭建: 若机器人配有显示屏,此部分可直接在机器人上操作,否则,可通过SSH…

java 一文讲透API [常用类 + 常用工具](20万字博文)

目录 一、前言 二、API 简介 1.什么是API? 2.java中组件的层次结构 : 3.什么是模块 三、API(常用类) 1.Object类 2.String类 3.StringBuilder 和 StringBuffer类 4.Math类 和 System类 5.Date 和 Calender类 6.八大包装类 7.常用类补充 —— Arra…

案例分享 | 汽车电机控制箱螺钉浮高检测

电机控制器是通过主动工作来控制电机按照设定的方向、速度、角度、响应时间进行运动的集成电路,日常生活中的洗衣机、冰箱、印刷机等设备都需要电机控制器来控制其运行工作,是各种机械设备中不可或缺的部件。 在电动车辆中,电机控制器也是关…

C++的类和对象(1)

类和对象 1.面向过程和面向对象的初步认识2.类的引入3. 类的定义 (class关键字)4. 类的访问限定符及封装4.1. 类的访问限定符4.2. 类的封装什么是封装?为什么要封装? 5.类的作用域6.类的实例化 1.面向过程和面向对象的初步认识 C…

LeetCode 1043. 分隔数组以得到最大和

原题链接:1043. 分隔数组以得到最大和 给你一个整数数组 arr,请你将该数组分隔为长度 最多 为 k 的一些(连续)子数组。分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值。 返回将数组分隔变换后能够得到…

巧用千寻位置GNSS软件| 线路施工放样应用技巧

线路施工放样主要是解决线路工程和水利工程施工中,线路及渠道中线和边坡施工放样编辑的专用程序。千寻位置GNSS软件中完成线路施工放样可按照下述步骤操作。 点击【测量】->【线路施工放样】,选择一条线路放样,如图 5.6-1所示。 图 5.6-1…

跟姥爷深度学习4 从数学计算看神经网络

一、前言 我们前面简单的做了一个气温预测,经过反复调试,效果还不错。实际上在这个方向上我们还可以更进一步优化,但因为我们是学习嘛,主要还是看广度而不是深度。考虑到后面要开始学习卷积网络,我们必须把更基础的内…

打印流,Properties类

打印流只有输出流,没有输入流 package com.hspedu.printstream;import java.io.IOException; import java.io.PrintStream;/*** author 韩顺平* version 1.0* 演示PrintStream (字节打印流/输出流)*/ public class PrintStream_ {public stat…

网络安全-网站漏洞扫描器

网络安全-网站漏洞扫描器 网站漏洞扫描器是用来扫描对方网站可能存在哪些漏洞的工具,我们可以借助网站漏洞扫描器来当作辅助作用去检测对方网站的漏洞。下面我们来介绍一款常用、好用的漏洞扫描器–AWVS。 AWVS 先说缺点-这玩意简称漏扫,你一旦发送&a…

IPSEC相关知识点

1.什么是数据认证,有什么作用,有哪些实现的技术手段? 数字认证证书它是以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的安全性、完整性。 使用了数字证书,即使您发送的…

(PCB系列七)PCB差分信号布线及其要点

1、差分信号的定义 差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。在这两根线上的传输的信号就是差分信号。信号接收端比较这两个电压的差…

不要老盯着ChatGPT,这几家公司的产品同样不容小觑

Adept.ai 2022 年成立,致力于一款能够代替人类使用电脑、操控软件的AI助手,旗下模型 ACT-1 还处于雏形阶段,但根据官方示例,已经可以完成通过自然语言指令完成特定的任务。公司创始人曾任OpenAI的工程副总裁,后来进入谷…

前端开发APP应该采取什么框架?

近十年,随移动网络在人们生活中的不断渗透以及线上服务需求的不断提升,人们对于桌面应用、APP、小程序、物联网终端设备等的需求不断提升。据公开数据显示,2022年,小程序数量已超550万;工信部数据显示,截止…

会议回顾!2023机器视觉在线研讨会圆满结束

4月20日下午,持续两小时的“融合生态,让制造与视俱进”2023机器视觉在线研讨会圆满结束,此次会议联合机器视觉产业链上中下游厂商,共同分享工业机器视觉领域最新技术和应用案例,专题讲解与观众问答相互交织&#xff0c…

OpenAI API调用

上次简单写了一篇对ChatGPT的一些看法,最近想深入研究一下。 极客时间上有个课程《AI大模型之美》,看了一下还可以。当做入门是不错的,但还是有很多细节可以打磨,不过毕竟是在风口上的课,也能接受。 本次演示如何调用…

【小知识点总结】Java中的split函数的用法(二)

一、String.split()函数有两种形式 split(String regex) 会默认忽略字符串后面的分隔符split(String regex,int limit) regex:可以是字符串或者正则表达式 limit:可以限制返回的数组的元素个数,当其值为-1时,表示任意大小 // s.split("-")会忽…

阿赵的MaxScript学习笔记分享十五《MaxScript界面的进阶应用》

MaxScript学习笔记目录 大家好,我是阿赵,之前介绍过MaxScript的各种UI控件的用法,这次介绍一些稍微复杂一点的用法。 一、例子介绍 这次要做的例子,有一部分是使用了dotNet的UI控件,一部分是MaxScript自带的UI用法&a…

理解Vuex【Vue】

5. vuex 5.1 理解vuex 5.1.1 vuex是什么 概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式&#x…

AI风范,院士点赞丨北京人工智能峰会暨AI金雁奖颁奖典礼成功举办,实在智能再获AI金雁奖

4月14日,由中国电子商会人工智能委员会主办,中国创业者俱乐部、北京集智未来人工智能产业创新基地联合主办的“2023北京人工智能峰会暨AI金雁奖颁奖典礼”举行,汇聚了人工智能各领域的产学研专家、院士、人工智能企业代表近300人,…

Jenkins自动拉取SVN源代码构建打包vue前端项目

目录 1.功能需求 2.安装插件 2.1 安装NodeJS插件 2.2 安装SVN插件 3.配置环境 3.1 NodeJS环境 4.新建任务配置部署信息 4.1 源代码管理 4.2 构建触发器 4.3 构建环境 4.4 构建步骤 5.构建项目 5.1 点击查看控制台日志 1.功能需求 使用Jenkins从SVN上拉取Vue项…