linux入门——“权限”

news2024/11/24 2:48:27

        linux中有权限的概念,最常见的就是安装一些命令的时候需要输入sudo来提权,那么为什么要有这个东西呢?

        linux是一个多用户操作系统,很多东西看起来是有很多分,但是实际的存储只有一份(比如命令,不同的用户可以输入相同的命令,实际上用的是同一个地方的命令),多用户的时候,肯定不想别人能进入你的用户家目录,或者更改你的文件,这就是权限的意义所在。同时也能联系生活,很多东西都是我们不能接触的,所以,权限防的是想要更改你的文件的陌生人。

一、缺省权限

        1.文件权限

        在linux中,如果用户没有指定文件的权限(用umask),那么就会按照默认的权限赋予文件。比如创建一个普通文件“a.txt”。

        可以看到

中白色的部分,它们应该怎样理解呢?

        a.它们三个为一组,从左到右分别是“拥有者”、“所属组”、“other”的权限。

        b.‘r’是读,‘w’是写,‘x’是可执行。

另外:

中白色的部分从左到右依次是文件的拥有者,所属组。

        怎样理解“拥有者”、“所属组”、“other”?

        拿一个家庭举例,家庭中有父母和我和我哥,那么我和父母就是拥有者,整个家庭构成所属组。

        在文件的访问中,系统会根据当前用户来确定访问的权限,举个例子,当另外一个用户访问“a.txt”的时候,系统先判定这个用户属于拥有者,答案为否,再判定是否属于所属组,答案为否,最终系统判定是属于“other”的,所以这个用户只有读权限。就像:“我买了一台电视,那么这个电视就是这个文件,是属于我的,那么我就是拥有者,,因为我哥是和我一个组,我也开放了所属组权限,告诉他们也可以来我卧室看电视,那么当我哥看电视的时候,系统会把他们判定为所属组的成员,当有一天某一个远房亲戚来家做客,他们也想看电视,那我就告诉他们,你们只允许看,不可以碰我的电视”。

        因为我是电视(文件)的主人,我想干嘛就干嘛,我也可以不让他们进行操作,那么对于linux的文件,该怎样修改文件权限呢?

        在linux中,使用“chmod”来修改权限。选项字节有:“u”、“g”、“o”、“a”,分别表示“user(拥有者)”、“group(所属组)”、“other(其他用户)”、“all(所有用户)”。用法是chmod 选项 文件/目录

        它的操作有‘+’、‘-’、‘=’。‘+’、‘-’很好理解,即加上或者减上某个权限,例如我们给拥有者减上一个读的权限:

        可以看到文件的拥有者读权限已经没有了,测试一下:

        提示我们“Permission denied”即“没有权限”。同样的操作可适用于所属组和other。

‘+’和‘=’的用法一样。

        但是,我们的root是至高无上的,root就像父母,家庭中的权力很大,这个文件在root下是随便打开的:

        即使全部的权限都没有,也能打开:

        另外,修改权限还可以使用数字来修改(三个八进制数字),通过以上介绍可以知道,每三个字符可以表示一个用户的权限,那么这三个位置可以分别对应二进制的0和1,从前到后分别表示‘r’、‘w’、‘x’,拿拥有者的权限举例,想让他只有读的权限,那就是100,八进制就是4,引申出:如果想要拥有者,所属组,other都只有读的权限,那就是444。就可以这样写“chmod 444 a.txt”:

        可以看到同时更改了拥有者,所属组和other的权限。

        2.目录权限

        先创建一个目录:

        可以看到目录的拥有者默认权限是rwx,在这里不卖关子,‘r’权限对应的是查看目录里面的内容的权限,‘w’对应的是在目录中是否能创建文件的权限,‘x’对应的是能否打开目录的权限。

示例:

        a.去掉‘r’并浏览目录内容发生报错:

        b.去掉‘w’并创建一个文件发生报错:

        c.去掉‘x’并打开目录发生报错:

        值得大家注意的是:当别人的目录在你的文件中的时候,虽然你没有权利打开,但是你是有权利删除的,这里创建一个root的目录在test里面,并关闭other的全部权限:

        我们可以看到我是没有权限访问的,但是!我可以删除它:

        如果不加-f,即强制删除,那么系统会问你是否删除:

这时候输入‘y’按下回车键即可!

可以看到目录已成功删除

二、更改所属组或者拥有者

        Linux中更改所属组或者拥有者可以用命令chown(用于更改拥有者),chgrp(用于更改所属组)。

目前我们是用户ubuntu,操作的目录是test。

        

        a:更改所属组为root:

        哎呀我擦?竟然报错了,不让我们更改,那么为什么呢?这就好比陌生人想要在你家放一个东西,你敢让陌生人进来吗吗?那肯定得提防着点,或者得取得同意才可以。

        既然你不要,那我就告诉你爸妈(root),强制给你,即获取管理员权限(sudo),即可更改成功。

        b.更改拥有者为user1(和chgrp一样的操作)。

        但是chown有和chgrp一样的效果,如果只想该拥有者,那么和更改所属组是一样的用法,如果还想更改所属组(比如更改为user1),那么可以执行“chown cx:user1”,冒号前边代表拥有者,后边代表所属组。这时候的文件意为拥有者是cx,所属组是user1。

        让我们恢复所属组:

        然后使用chown更改所属组为root:

更改成功!

        更改拥有者和所属组为root:

更改成功!

        那么单独测试更改拥有者:

更改成功!

        三、粘滞位

        在多用户的文件操作中,由于我们的个人用户的家目录是不可以被被人进入的,所以需要在不属于任何一个私人用户的目录(root下的根目录)下完成多用户操作同一个目录(已经给了other写的权限),这个时候就出现了一个问题,倘若是我在这个公共目录下创建了一个文件,由于这个目录是公共的,而删除这个文件的权限和这个文件的权限没有任何关系,是和目录有关系。这么说,别人可以随时删除我的文件。

        为了解决这个问题,Linux中出现了粘滞位,它可以在公共的目录中限制删除的行为,即“除了文件的 所有者,目录的拥有者以及root用户删除外,其他人均不可删除”。添加粘滞位的命令如下chmod +t 目录。下边使用root用户在根目录下创建一个test目录,并赋予other读写执行的权限。

        下边使用ch用户在test下创建一个文件aa.txt,然后再切换到user1删除这个文件:

        可以看到user1把ch用户的文件删除了,接下来我们给这个目录添加粘滞位:

        可以看到test目录已经在other的后边加上了“t”,接下来再次使用user1操作删除:

        可以看到user1已经没有权限删除ch创建的文件了。

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

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

相关文章

网站在对抗机器人攻击的斗争中失败了

95% 的高级机器人攻击都未被发现,这一发现表明当前的检测和缓解策略存在缺陷。 这表明,虽然一些组织可能拥有基本的防御能力,但他们没有足够的能力应对更复杂的攻击。 例如利用人工智能和机器学习来模仿人类行为的攻击。 这些统计数据强调…

数据结构之顺序表详解:从原理到C语言实现

引言 在上一篇文章中我们讲到了时间复杂度与空间复杂度,今天我们接着讲数据结构中的内容。 数据的存储和组织方式决定了程序的效率。而顺序表,也就是大家熟悉的数组,正是我们编程中的“起步工具”。它简单易懂,却能帮你解决许多…

python利用电脑默认打开方式打开文件,视频,图片

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理python利用os库打开本地文件的方法。 这个确实比较简单。 利用os库的 os.startfile("mp4") 函数即可用系统默认打开方式打开文件。 这里打开视频进行测试。 import os os.startfile("…

linux 虚拟环境下源码安装DeepSpeed

第一步:创建虚拟环境: conda create -n deepspeed python3.10 第二步:进入虚拟环境,安装Pytorch 2.3.1 # CUDA 12.1 conda install pytorch2.3.1 torchvision0.18.1 torchaudio2.3.1 pytorch-cuda12.1 -c pytorch -c nvidia 第…

谷粒商城(学习笔记)

配置刷新的注解 数据表中不存在的数据 gateway路径重写 CORS跨域 调整路由顺序: TODO是什么:备忘录 逻辑删除 axios有请求缓存: 请求的模版! 删除成功后,重新获取数据! 删除成功之后,还有提示消息 删除成功…

八大排序--08快速排序

现有 arr {4,8,9,2,7}数组,请用快速排序的方式实现从小到大排序: 方法: 1.定义待排序数组中的第一个值为基准数; 2.定义j游标,从后向前移动找到第一个比基准数小的值停下; 3.定义i游标,从后向…

自定义注解和组件扫描在Spring Boot中动态注册Bean(一)

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 在Spring Boot中,自定义注解和组件扫描是两种强大的机制,它们允许开发者以声明性的方式动态注册Bean。这种方式不仅提高了代码的可读性和可维护性,还使得Spring Boot应用的…

区域识别——基于python语言

目录 目录 1.水域识别 2.模型介绍 3.文件框架 4.代码示例 4.1 data_preprocess.py 4.2 model1.0.py 4.3 train2.0.py 4.4 predict.py 4.5 运行结果 5.总结 1.水域识别 人眼看见河道可以直接分辨出这是河道,但是如何让计算机也能识别出这是河道呢&#x…

无序中的秩序:Transformer模型的创新性结构解析

最近我在看论文时,发现很多都在用 Transformer 模型,我知道transformer很有名,但是我也只是听说过他的大名,不知道他具体是做什么怎么做的,因此我决定深入了解一下,并做个简单记录,方便以后参考…

TDC上YARN Web-UI 查看application日志方法

方法一 #通过浏览器访问tdc,访问的工作节点对于TDC都是外部节点。在提交给yarn任务后,YarnRM的Web UI 可以展示yarnnm上运行的application日志,但是由于跳转的svc地址,无法直接访问。 #在tdc界面上找到yarn实例,进入ya…

【Scala入门学习】集合常用方法和函数操作

1. foreach循环遍历 foreach 方法的原型: // f 返回的类型是Unit, foreach 返回的类型是Unit def foreach[U](f: Elem > U) 该方法接受一个函数 f 作为参数, 函数 f 的类型为Elem > U,即 f 接受一个参数,参数…

达梦数据库(DM)单机典型安装

达梦数据库(DM)单机典型安装 环境:centos7.6 1、创建用户 #增加用户和组,用于安装管理达梦数据库。 新建用户组:groupadd dinstall 新建用户:指定用户组,家目录,shell。useradd -g…

反转链表解题思路

题目描述 给定一个单链表的头结点pHead,长度为n,反转该链表后,返回新链表的表头。 示例:当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。 解题思路:迭…

股市大涨下的会展业创新者

近期,股市涨势强劲有力,各大指数普遍上扬,市场活力空前。与此同时,伴随全球经济逐步复苏及会展行业不断发展,上市展览公司机遇与挑战并存。国内外市场需求持续增长拓展了广阔发展空间,但同时行业竞争愈发激…

中国宏观经济与产业发展:挑战与机遇并存

#长沙屿# 在复杂多变的国内外经济形势之下,中国经济已然步入一个至关重要的发展阶段。今日,让我们深入剖析当前经济形势,对中国宏观经济的运行现状及产业发展的趋势展开深度探讨。 2024年,中国经济运行总体平稳、稳中有进&#x…

职场启悟:没有靠山的你,45岁前必知的5大潜规则

我是农村孩子,父母都是农民,毕业一切都是靠着自己找工作,在陌生的大城市除了认识老师就是同学。记得那是我初入职场的第三个月,每天我都沉浸在无尽的工作中,加班到深夜,周末也时常无休。我觉的农村孩子只能…

Chainbase :链原生的 Web3 AI 基建设施

“随着 Chainbase 在生态系统和市场方面的进一步拓展,其作为链原生 Web3 AI 基建设施的价值将愈发显著。” 算法、算力和数据是 AI 技术的三大核心要素。实际上,几乎所有的 AI 大模型都在不断革新算法,以确保模型能够跟上行业的发展趋势&…

机器学习中的模型设计与训练流程详解

目录 前言1. 模型设计1.1 数据特性分析1.2 计算资源限制1.3 应用场景需求 2. 模型训练2.1 训练集与验证集的划分2.2 损失函数的选择2.3 模型参数更新 3. 优化方法3.1 梯度下降法3.2 正则化方法 4. 模型测试4.1 性能评估指标4.2 模型的泛化能力 5. 模型选择5.1 数据规模与模型复…

怎么提取人声去掉背景音乐?人声提取秘籍:去掉背景音乐的技巧

在数字化时代,音频处理变得越来越普遍,我们经常需要从一段音频或视频中提取出纯净的人声,而去除掉背景音乐或其他杂音。这种需求在视频编辑、音乐制作、甚至在学习和娱乐中都十分常见。本文将介绍几种简单易行的方法,帮助你轻松提…

【Spring】获取 Cookie和Session

回顾 Cookie HTTP 协议自身是属于“无状态”协议 无状态:默认情况下,HTTP 协议的客户端和服务器之间的这次通信和下次通信之间没有直接的联系 但是在实际开发中,我们很多时候是需要知道请求之间的关联关系的 例如登录网站成功后&#xff…