当前位置: 首页 > news >正文

Linux Shell和权限

目录

Shell命令及运行原理 

权限

1.文件基本属性

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

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

3.(1)chmod + 组名修改

3.(2)chmod + 二进制修改

3.(3)chown

3.(4)chgrp

3.(5)umask

4.目录权限


Shell命令及运行原理 

Linux的操作系统,狭义上是指Linux的内核,广义上是指Linux内核+Linux外壳和对应的配套程序,其中,Linux外壳就是Shell。

Shell是包裹在Linux内核外部的一层软件层,帮用户进行命令行解释。

如下我输入的指令,都是通过shell来与Linux内核交流,如果收到命令,便会创建子进程去执行命令,不管成功与否,都不会危及到整个shell。shell父进程会继续进行命令行获取。

  • 对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
  • shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。 

帮助理解:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。 

权限

1.文件基本属性

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

可以通过指令 adduser [用户名]  来添加用户,例如添加一个叫做  “kky”  的用户

adduser kky

在Linux中,文件的访问者分为

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

文件类型有

  • d:文件夹
  • -:普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件 

注意Linux系统不对文件后缀不区分,但是Linux中的软件可能会对文件后缀作区分。

基本权限

  • 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • “—”表示不具有该项权限 

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

如何看文件的这些信息呢? 

通过ls -l可以查看文件的信息

其中最前面的 “-rw-rw-r--” 中的第一个“-”,代表着文件的类型,通过上面的表可以知道该文件为普通文件。 后面的“rw-rw-r--”,每三个一组,第一组为拥有者权限,第二组为所属组权限,第三组为other权限

其中,拥有者和other我们还挺好理解的,这里的所属组是什么意思呢? 

在我们Linux系统,任何文件都要隶属于一个所属组,这个所属组是一批用户的集合,当然所属组也可以只有一个用户,所属组的名字以组长(也就是创建文件的那个人)的名字命名。

为什么要有所属组呢? 

这是为了让拥有者信任的用户能够对该文件进行操作,对于other用户,则可以通过权限来限制他们的操作。

从上图我们也没有看到谁是other,只显示了拥有者和所属组,因为除了拥有者所属组,其他的统称之为other。  

文件有rwx(r read读 w write写 x execute 执行)权限 

如下文件的权限就是对拥有者有读和写权限,对所属组有读和写权限,对other有读权限

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

3.(1)chmod + 组名修改

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名

如下,删除了文件main.c的u(拥有者)的读权限

这里u也可以换成g (所属组)或者 o(other), - 可以换成+,r也可以换成w或者x。如下

a代表all(对所有组都做处理) 

还有一个例子,我们删除了拥有者的读写权限,发现文件不让我们读写了,但是明明我们还是所属组的成员,这为什么也不让我们读写了呢?

因为用户在匹配身份的时候,只能匹配一次并且是最贴近的身份,你是user你就只能匹配到user这里,因此就算你也是所属组里的,也不能通过所属组权限去访问文件

超级管理员不受权限约束 

3.(2)chmod + 二进制修改

对于下面这个文件的权限  “rw-rw-r--”,我们可以将他拆分为“rw-”、“rw-”、“r--”,这分别代表三个组,这是我们之前讲过的内容,现在我们可以将这三个组转化为二进制数。

“rw-”代表110 也就是6

“rw-”代表110 也就是6

“r--”代表100 也就是4

懂得了上面这个原理,我们便可以通过二进制来修改文件的权限了

3.(3)chown

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名

chown要么使用root账户处理,要么使用sudo提权,才可以更改拥有者

3.(4)chgrp

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名

一样需要root权利

3.(5)umask

功能:查看或修改文件掩码
新建文件默认权限=0666(第一个0代表八进制)
新建目录默认权限=0777 (第一个0代表八进制)

这里提出了文件掩码的概念,什么是文件掩码呢? 看下图

新建了一个newfile,他的权限为“rw-rw-r--” 代表0664。从上面可知,新建文件的默认权限为0666,为什么变成了0664?

我们通过umask指令来查看Linux系统的文件掩码,查到是0002

666为(110  110  110)

664为(110  110  100)

002为(000  000  010)

我们发现文件掩码所出现的位置,被置为了0,这里看起来有点像减法。

其实他并不是减法,因为权限的二进制的目的就是想让某个组拥有或失去权限,如果是减法就乱了套了。

结论是:  最终权限 = 起始权限 去掉 权限掩码中出现的权限 (去掉是指清零该比特位)

或者说:  最终权限 = 起始权限 & (~umask)

如下,我们通过设置umask进行了验证,大家还可以多验证一下,看看结论是不是这样。(要注意后面需要改回来(一般是0002),不然后面新建文件会不可访问或修改比较麻烦)

4.目录权限

我们通过mkdir创建了一个目录,目录也有他自己的权限。

那么这些权限分别代表什么呢?

  • 是否允许一个指定用户进入一个目录,需要x权限
  • 是否允许一个指定用户查看目录的文件列表,需要r权限
  • 是否允许一个指定用户在当前目录下新建文件或者删除文件,需要w权限

 删除当前目录下的文件跟w权限有关,但是如果有一个共享的目录,大家都可以在这里面读文件,写文件,但与此同时,大家也可以删除文件,为了防止群众里面有坏人删除文件,就必须把目录的w权限关闭,这样一来确实没办法删除了,但是也没办法写入了,这个可怎么办?

Linux有一种粘滞位目录,该目录下的文件只能由以下3种人员删除

一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

这样一来就可以防止其他人员删除文件了。

使用chomd +t [文件名]  就可以操作了,这里不需要写o+t(因为粘滞位默认就是给的other)

相关文章:

Linux Shell和权限

目录 Shell命令及运行原理 权限 1.文件基本属性 2.文件权限值的表示方法 3.文件访问权限的相关设置方法 3.(1)chmod 组名修改 3.(2)chmod 二进制修改 3.(3)chown 3.(4)chgrp 3.(5)umask 4.目录权限 Shell命令及运行原理 Linux的操作系统,狭义上是…...

Git同时配置Gitee和GitHub

Git同时配置Gitee和GitHub 一、删除原先ssh密钥二、生成密钥 这里的同时配置是针对于之前配置过单个gitee或者github而言的,如果需要看git从安装开始的配置,则可以看这一篇文章 git安装配置教程 一、删除原先ssh密钥 在C盘下用户/用户名/.ssh文件下找到…...

IGP高级特性简要介绍(OSPF-上篇)

OSPF高级特性 一、OSPF_提升故障收敛及网络恢复速度 1.FRR与BFD快速恢复故障 1.1 FRR 在传统转发模式下,当到达同一个目的网络存在多条路由时,路由器总是选择最优路由使用,并且下发到FIB表指导数据转发。 当最优路由故障时,需…...

Oracle-Ogg集成模式降级为经典模式步骤

前言: Ogg集成模式降级为经典模式的场景比较少,因为降级为经典模式会导致无法支持压缩表同步,XA事务,多线程模式,PDB模式同步等功能,除非遇到集成模式暂时无法解决的bug或者环境不支持集成模式,比如DG备库环…...

链表面试OJ题(1)

今天讲解两道链表OJ题目。 1.链表的中间节点 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 输入:head [1,2,3,4,5] 输出:[3,4,5] 解释:链表只有一个…...

[极客大挑战 2019]Upload 1

题目环境&#xff1a; 根据题目和环境可知此题目是一道文件上传漏洞 编写一句话木马脚本<?php eval($_POST[shell]);?>将脚本文件更改为jpg图片文件我这里是flag.jpg上传文件并burpsuite抓包Repeater重放 报错一句话木马里面有<?字符 换一种一句话木马继续编写木马…...

OpenFeign讲解+面试题

一&#xff1a;OpenFeign是什么&#xff1f; 是一个声明式的web客户端,只需要创建一个接口,添加注解即可完成微服务之间的调用 二&#xff1a;调用微服务的方式&#xff1f; ribbon restTemplate方式调用openFeign通过接口注解的方式调用 三&#xff1a;如何使用OpenFeign&…...

嬴图 | LLM+Graph:大语言模型与图数据库技术的协同

前言 2022年11月以来&#xff0c;大语言模型席卷全球&#xff0c;在自然语言任务中表现卓越。尽管存在一系列伦理、安全等方面的担心&#xff0c;但各界对该技术的热情和关注并未减弱。 本文不谈智能伦理方面的问题&#xff0c;仅集中于Ulitpa嬴图在应用中的一些探索与实践&a…...

微信小程序下载文件和转发文件给好友总结

这段时间公司让我负责小程序的一些功能开发,回想上次开发小程序还是在上一次,这次开发小程序主要实现的功能就是转发文件给好友和下载文件,总结一下这次遇到的各种问题和解决方法。 下载文件 首先正常下载 wx.downloadFile({url: https://img.haihaina.cn/月度支出表.xls,…...

一文掌握 Apache SkyWalking

Apache SkyWalking SkyWalking是一个开源可观测平台&#xff0c;用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking 提供了一种简单的方法来保持分布式系统的清晰视图&#xff0c;甚至跨云。它是一种现代APM&#xff0c;专为云原生、基于容器的分布式系…...

外贸网站优化常用流程和一些常识

外贸网站google排名&#xff0c;总以为是单个网页标签的优化过程。 显然&#xff0c;这些观点都是错误的,九凌网络是做谷歌优化服务&#xff0c;九凌网络跟大家分享外贸网站Google优化常用流程和一些常识需要做以下几个步骤&#xff1a; 第一步&#xff1a;网站诊断&#xff0…...

Hive的时间操作函数

目录 前言函数使用介绍实际使用判断该天是星期几判断该天对应的周&#xff08;包含一周开始和结束&#xff09; 前言 hive 里面的时间函数有很多&#xff0c;今天单讲dayofweek函数&#xff0c;背景&#xff1a;有时候不仅要出日报&#xff0c;还要出周报&#xff0c;需要很多…...

【Web安全】CORS跨域资源共享漏洞

文章目录 前言一、漏洞概述二、漏洞原理三、CORS响应头类型四、漏洞挖掘五、修复建议前言 本篇文章主要介绍CORS跨域漏洞产生的原理,漏洞复现过程,挖掘手段以及如何进行修复,文章难免会有失误,烦请留下宝贵建议,谢谢! 一、漏洞概述 跨域资源共享(CORS)是一种浏览器机制…...

IntelliJ IDEA 如何修改默认Maven仓库地址

在使用idea过程中&#xff0c;每次新建项目或者打开项目时&#xff0c;maven仓库地址都会变为默认地址。如何修改默认地址&#xff0c;让其保持不变&#xff0c;如下这种方式可以简单快捷的设置。 1.打开idea&#xff0c;取消项目自动加载 2.点击 Customize,然后再点击 All se…...

Vue3 <script setup>是什么?作用?

结论先行&#xff1a; <script setup> 是 Vue3 的语法糖&#xff0c;简化了组合式 API 的写法&#xff0c;实现了 “顶层的绑定”。例如&#xff1a; ① 声明的属性和方法无需 return&#xff0c;就可以直接在模板使用&#xff1b; ② 引入组件的时候&#xff0c;会自…...

2.9 CSS 响应式布局

1.媒体&#xff1a;media 媒体类型&#xff1a; all&#xff1a;检测所有设备。screen&#xff1a;检测电子屏幕&#xff0c;包括:电脑屏幕、平板屏幕、手机屏幕等。print&#xff1a;检测打印机 媒体特性&#xff1a; width&#xff1a;检测视口宽度。max-width&#xff1a;…...

vue使用websocket与springboot通信

WebSocket是HTML5下一种新的协议&#xff0c;它实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的 在很多项目中&#xff0c;都要用到websocket&#xff0c;使得前端页面与后端页进行实时通信&#xff0c;例如&#xff0c;实时查询…...

ChatGPT 实际上是如何工作的?

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; ChatGPT 操作的两个主要阶段 我们再用谷歌来打个比方。当你要求谷歌查找某些内容时&#xff0c;你可能知道它不会——在你提出要求的那一刻——出去搜索整个网络来寻找答案。相反&#xff0c;谷歌会在其数…...

【SSD1306 OLED屏幕测试程序 (开源)orangepi zero2 全志H616 】.md updata: 23/11/07

orangepi zero2 H616 SSD1306 OLED屏幕测试程序 orangepi zero2 配置wiringpi 库后&#xff0c;突发奇想构建一个测试oled屏幕的程序&#xff0c;放一个蜗牛每次移动一个像素点&#xff0c;实时显示蜗牛的步数&#xff0c;后面要显示其他内容在此代码上修改即可&#xff0c;如…...

【python VS vba】(5) 在python中使用xlwt操作Excel(待完善ing)

目录 1 什么是xlwt 2 导入xlwt 3 相关语法 3.1 创建新的workbook 3.2 创建新的sheet 3.3 保存workbook 4 python里表格的形式 4.1 矩阵 4.2 EXCEL的数据形式 完全等于矩阵的数字结构 4.3 python里矩阵 5 具体代码 5.1 代码 5.2 结果 5.3 要注意的问题 5.3.1 不能…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...