【Linux】权限管理

文章目录

  • 📖 前言
  • 1. 什么是权限
  • 2. 权限管理
    • 2.1 Linux的用户分类:
    • 2.2 Liunx文件的分类:
    • 2.3 文件的访问权限
    • 2.4 文件访问权限的相关设置方法:
      • chmod对文件权限的修改
      • chown / chgrp
    • 2.5 以八进制修改文件权限:
    • 2.6 默认权限:
    • 2.7 目录权限管理:
  • 3. 粘滞位
  • 4. file指令

📖 前言

本章开始我们正式开始学习Linux,在日后的学习中我们将陆续学习Linux系统编程和网络编程……
基本指令我们就不再过多赘述,指令只要经常用就会熟能生巧,所以我们也就不必过于关心指令记不住的问题,我们直接开门见山,从重点抓起,本章我们将介绍Linux的权限管理……😉😉😉

所有演示均在CentOS7.6下进行 ~


1. 什么是权限

日常生活中的权限:

在我们日常的生活中,我们所接触的权限有,例如:某某视频软件,有的视频是需要vip客户才能观看,普通用户却看不了,这就是权限。

但是这种理解还是不够到位:

  • 如果想要对某些文件具备某些权限,对应的事物需要具备对应的属性。
  • 如果一个事物天然不具备某种属性,那么这种属性的权限也便无异议。

例如:某某视频软件连看视频的功能都没有,再对看视频划分各种vip,这种权限也便无意义。

此时我们就对权限有了一个较为深刻的认识那就是~

到底什么是权限?(重点)

  1. 约束人的(对人进行分类)
  2. 需要对应的事物具有特定的属性

2. 权限管理

2.1 Linux的用户分类:

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

  • 超级用户: 可以再linux系统下做任何事情,不受限制
  • 普通用户: 在linux下做有限的事情

超级用户的命令提示符是 “ # ” ,普通用户的命令提示符是 “ $ ”

其中超级用户root,其权限是最高的,他可以为所欲为,他可以下载一些程序为所有子用户使用,但是其他子用户却不行,子用户想切到root账号,必须输入密码,root切到子用户是直接进的。
同时还可以以子用户的身份对其文件操作,神不知鬼不觉间实现偷鸡换蛋,而且root无视子用户的所有权限。


2.2 Liunx文件的分类:

Linux系统不是以文件名 “ 后缀 ” 区分文件类型的,而是通过ll指令显示的 “ 第一个字符 ” 区分文件类型的!!
在这里插入图片描述
第一列的第一个字符,叫做文件类型!

- : 普通文件,文本,源代码,可执行程序,第三方动静态库等
d: 目录文件
l: 链接文件
p: 管道文件
b: 块设备文件,磁盘
c: 字符设备文件

注意:

  • Linux不以文件后缀区分文件,并不代表gcc这样的编译器不做要求,系统关系后缀,但是在系统上跑的工具需要后缀。
  • Linux不以后缀区分文件类型,也可以成Linux并不排斥以后缀作为文件类型。

2.3 文件的访问权限

Linux中人分为三类:

  1. 文件的拥有者:owner
  2. 文件的所属组:grouper
  3. 文件的其他用户:other

Linux系统中, 文件的权限属性,分:

  1. r(read - 可读)
  2. w(write - 可写)
  3. x(execute - 可执行)

那我们该如何描述一个文件的权限呢?

  • Linux对文件的权限有:
    • 这个文件谁能 “ 访问 ”
    • 这个文件谁不能 “ 访问 ”
  • 对应的文件应该具备的某种属性:
    • r,w,x

高度的概念:权限 = 人 + 事物属性

所以权限的概念以及操作,都是围绕着人和文件属性展开的!

描述文件权限的时候,既要涉及到人,又要涉及到这个文件的属性。


我们已经知道了第一列是文件的类型,我们将后面九个字母三三分为一组,那么后面的字母是什么意思呢?

  • 第一组,第一个字符只能是 r / - ,第二个只能是 w / - ,第三个是能是 x / -
  • 第一个代表是否可读,第二个代表是否可写,第三个代表是否可执行
  • 如果可以,对应位置上就是对应的字符,如果不可以,就是用 " - " 表示

三个字符为一组,确定了【拥有者 / 所属组 / 其他】所具有的权限(可读,可写,可执行)

在这里插入图片描述
为什么会有所属组的概念:

当几个组共同开发一个项目的时候,就会在同一个服务器上共同实现,那么有的文件内容需要组内互相通气,但是又不想让别的组知道本组的文件内容,就有了所属组的概念。
所属组是为了在linux中为了协同,在组内公开,区域性公开,而不是暴露给所有人。


2.4 文件访问权限的相关设置方法:

chmod对文件权限的修改

chmod:

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

用户表示符+/-=权限字符:

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限

用户符号:

u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

在这里插入图片描述
同理,我们也可以将权限加回去:

chmod u+r file.txt

对所属组和other也同样适用:

chmod g-r file.txt
chmod o+x file.txt

批量修改成同一个权限,还可以使用a来指定all:

chmod a=rwx file.txt

此时所有人的所有权限就都加上了:

在这里插入图片描述


chown / chgrp

文件的创建者和文件的拥有者一定是同一个人吗?

  • 并不一定,也就是说我们可以将一个文件交由其他人或组去管理。

chown:

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

chgrp:

功能: 修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名
在这里插入图片描述
显而易见,我们并不能随便把文件给别人,或者不能随便把文件更换所有组,不过我们可以通过超级用户root,它可以直接强制将文件给任何人。
在这里插入图片描述


2.5 以八进制修改文件权限:

有了上述的讲解,我们知道,每类人的某一个权限,要么有要么没有,用对应的字母和 - 标识,那我们就可以像之前学的位图和布隆过滤器时那样,有就用1标识,没有就用0标识

这样的话,每类人的权限一共有三个,每个人都有两种情况,那么这三个二进制数字(因为要么是0,要么是1),可表示的范围是:[000 - 111](二进制),[0 - 7](十进制)。

因为三个二进制位可以替代一个八进制位,所以这三类人的权限我们还可以用三个八进制的数字表示。

在这里插入图片描述


2.6 默认权限:

我们来创建一个目录和一个文件:
在这里插入图片描述
为何我们创建目录的默认权限是这个样子的:775,为何我们创建的普通文件的默认权限是:664

这和权限掩码有关系~

权限掩码:
在这里插入图片描述
重点:

  • 默认目录的起始权限:777
  • 默认普通文件的权限:666
  • 默认权限 != 最终权限

我们将默认权限和umask的二进制都拿出来:

在这里插入图片描述
看起来非常像减法,但是这真的是减法吗??
答案:这里不是减法,而是:

默认权限 = 默认权限 & (~umask)

umask是支持修改的:
在这里插入图片描述

  • 所有能够灵活调整创建文件默认权限的方式,都是为了让用户使用起来更方便,为了创建特殊文件的时候方便。

我们来验证一下:

在这里插入图片描述


2.7 目录权限管理:

在Linux下,有一句话那就是:一切皆文件。那目录也是个文件,也就是说我们也可以像管理文件那样把目录管理起来。

  • 可执行权限: 如果目录没有可执行权限,则无法cd到目录中。
  • 可读权限: 如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容。
  • 可写权限: 如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。

注意这里是,如果目录没有可执行的权限就无法进入目录,这是比较特殊的。

归类总结:

  • 如果目录贝没有r权限,允许进入,允许在该目录下创建(写入)一个文件,不允许查看
  • 如果目录只没有w权限,允许进入,允许在该目录下查看文件列表,但是不允许创建文件
  • 如果同时没有rw权限,允许进入,但是不允许创建和查看目录下的文件列表

注意:不是文件内容!!!文件的内容,是否可以查看,由文件自己的权限决定!!


3. 粘滞位

当多组共同在同一个目录下操作时,Linux下可以存在一些目录,拥有者和所属组是root或是其他人,但是其他人允许以other的身份在该目录下进行文件的创建,读取,删除,修改等!

首先我们先来看看这两个用户的文件权限:

在这里插入图片描述都是other可以进入目录,可读可写的。

在这里插入图片描述

  • 首先,Zh_Ser,在自己的家目录下创建了一个all目录,创建出来的目录other是可读可写可进入的,随后在all目录下创建了一个文件,在里面写了东西,并设置这个file.txt文件other没有任何权限。
  • joker随后也进入到Zh_Ser目录中的all目录中,joker尝试读all目录中的file.txt文件,发现这个文件并不可以读,也并不可以写,于是joker恼羞成怒,直接将file.txt这个文件给删了
  • 此时Zh_Ser再次进入all目录,发现file.txt不见了~
  • 这种删别人文件的做法不好,但是在一些特定场景下,需要共同开发,就是要共享目录。
  • 在一个共享目录下,你不让我写,不让我读,但防不住我删除!

这种老6行为我们不提倡!我们也有办法防一下,那就是粘滞位~

  • 如果我还想在共享目录下,形成临时文件
  • 但是,不允许除了我之外的人删除!

给共享的<目录>加上粘滞位!(用chmod + t)
在这里插入图片描述
此时其他用户就不能删了:
在这里插入图片描述
此时joker对file.txt文件看不了,改不了,即使恼羞成怒也不能把它删了~

不过此时Zh_Ser是可以删的,因为它是目录的管理者,文件的拥有者:

在这里插入图片描述
此时该目录下的文件只能由:

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除

4. file指令

除了用文件属性的第一位来查看我们文件的属性之外,还可以用file命令来查看更加详细的文件属性。

在这里插入图片描述

我们写一段代码,他可以告诉我们这是什么文件:
在这里插入图片描述
告诉我们这是个C语言代码,ASCII文本。

常用选项:

-c: 详细显示指令执行过程,便于排错或分析程序执行的情形
-z: 尝试去解读压缩文件的内容

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

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

相关文章

Springsecurity课程笔记06-13章基于数据库的方法授权

动力节点Springsecurity视频课程 6 密码处理 6.1 为什么要加密&#xff1f; csdn 密码泄露事件 泄露事件经过&#xff1a;https://www.williamlong.info/archives/2933.html 泄露数据分析&#xff1a;https://blog.csdn.net/crazyhacking/article/details/10443849 6.2加密…

IJKPLAYER源码分析-常用API

前言 本文简要介绍IJKPLAYER的几个常用API&#xff0c;以API使用的角度&#xff0c;来审视其内部运作原理。这里以iOS端直播API调用切入。 调用流程 init 创建播放器实例后&#xff0c;会先调用init方法进行初始化&#xff1a; - (IJKFFMediaPlayer *)init {self [super ini…

计算机网络复习题+答案

文章目录 导文题目一、单项选择题二、填空题三、判断改错题,判断下列命题正误,正确的在其题干后的括号内打“√”,错误的打“”,并改正。四、名词解释五、简答题六、应用题导文 计算机网络复习题 题目 一、单项选择题 在应用层协议中,主要用于IP地址自动配置的协议是: (…

文案自动修改软件-文案自动改写的免费软件下载

文章生成器ai写作机器人 随着人工智能技术的飞速发展&#xff0c;越来越多的新型产品被推向市场。其中&#xff0c;文章生成器AI写作机器人是一个备受关注的新兴行业。它使用机器学习和自然语言处理等技术&#xff0c;为用户自动生成高质量的文章和内容&#xff0c;帮助用户在…

Python——第2章 数据类型、运算符与内置函数

目录 1 赋值语句 2 数据类型 2.1 常用内置数据类型 2.1.1 整数、实数、复数 2.1.2 列表、元组、字典、集合 2.1.3 字符串 2.2 运算符与表达式 2.2.1 算术运算符 2.2.2 关系运算符 2.2.3 成员测试运算符 2.2.4 集合运算符 2.2.5 逻辑运算符 2.3 常用内置…

本地搭建属于自己的ChatGPT:基于PyTorch+ChatGLM-6b+Streamlit+QDrant+DuckDuckGo

本地部署chatglm及缓解时效性问题的思路&#xff1a; 模型使用chatglm-6b 4bit&#xff0c;推理使用hugging face&#xff0c;前端应用使用streamlit或者gradio。 微调对显存要求较高&#xff0c;还没试验。可以结合LoRA进行微调。 缓解时效性问题&#xff1a;通过本地数据库…

Mybatis高级映射及延迟加载

准备数据库表&#xff1a;一个班级对应多个学生。班级表&#xff1a;t_clazz&#xff1b;学生表&#xff1a;t_student 创建pojo&#xff1a;Student、Clazz // Student public class Student {private Integer sid;private String sname;//...... }// Clazz public class Cla…

Flutter PC桌面端 控制应用尺寸是否允许放大缩小

一、需求 桌面端中&#xff0c;登录、注册、找回密码页面不允许用户手动放大缩小&#xff0c;主页面允许 二、插件 window_manager 使用教程请参照这篇博客&#xff1a;Flutter桌面端开发——window_manager插件的使用 题外话&#xff1a; 之前使用的是bitsdojo_window插件…

[golang gin框架] 25.Gin 商城项目-配置清除缓存以及前台列表页面数据渲染公共数据

配置清除缓存 当进入前台首页时,会缓存对应的商品相关数据,这时,如果后台修改了商品的相关数据,缓存中的对应数据并没有随之发生改变,这时就需要需改对应的缓存数据,这里有两种方法: 方法一 在管理后台操作直接清除缓存中的所有数据,当再次访问前台首页时,就会先从数据库中获取…

记frp内网穿透配置

这两天由于想给客户看一下我们的系统&#xff0c;于是想到用内网穿透&#xff0c;但是怎么办呢&#xff0c;没有用过呀&#xff0c;于是各处找资料&#xff0c;但是搞完以后已经不记得参考了那些文档了&#xff0c;对不起各位大神&#xff0c;就只能写出过程和要被自己蠢死的错…

初识C++(二)

在初识c&#xff08;一&#xff09;当中我们已经向大家介绍了四个c和C语言不同的使用方法。接下来我们再来向大家介绍另外的一些新的c语言的使用方法。 &#x1f335;引用 简单一点来说引用就是给已存在的变量起一个别名。这个别名通常的作用和C语言当中的指针类似。我们可以通…

牛客网刷题总结

1.利用%符号获取特定位数的数字。 2.强制类型转换 &#xff08;将float转换为int &#xff09; 3.计算有关浮点型数据时&#xff0c;要注意你计算过程中所有的数据都是浮点型 4.0/3.0 ! 4/3 4.通过位操作符实现输出2的倍数&#xff08;对于位操作符不熟悉的小伙伴可以看看我…

基于Java+SpringBoot+vue实现图书借阅和销售商城一体化系统

基于JavaSpringBootvue实现图书借阅和销售商城一体化系统 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方…

电脑系统错误怎么办?您可以看看这5个方法!

案例&#xff1a;电脑出现系统错误该如何解决&#xff1f; 【这几天长时间使用我的电脑&#xff0c;导致它的系统出现了错误。有没有小伙伴知道如何解决电脑系统出错的问题&#xff1f;求一个能快速解决的方法。】 电脑系统出现错误是使用电脑时难免会遇到的问题之一&#xf…

【C++初阶】C++入门(二):引用内联函数auto关键字范围for循环(C++11)指针空值nullptr

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C初阶 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C初阶】…

MySQL数据库学习笔记之存储引擎

存储引擎 MySQL体系结构 连接层 最上层是一些客户端和连接服务&#xff0c;主要完成一些类似于连接处理、授权认证、以及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层 第二层架构主要完成大多数的核心服务功能&#xff0c;如SQL接口&am…

【Linux网络】部署YUM仓库及NFS服务

部署YUM仓库及NSF服务 一、YUM仓库1.1、YUM仓库概述1.2准备安装来源1.3在软件仓库加载非官方RPM包组1.4yum与apt 二、配置yam源与制作索引表2.1配置FTP源2.2配置国内在线yum源2.3在线源与本地源同时使用2.4建立软件包索引关系表的三种方法 三、nfs共享存储服务3.1安装软件&…

OpenAI-ChatGPT最新官方接口《微调ChatGPT模型》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(四)(附源码)

微调ChatGPT模型 前言Introduction 导言What models can be fine-tuned? 哪些模型可以微调&#xff1f;Installation 安装Prepare training data 准备训练数据CLI data preparation tool CLI数据准备工具Create a fine-tuned model 创建微调模型Use a fine-tuned model 使用微…

Windows下版本控制器(SVN) - 1、开发中的实际问题+2、版本控制简介

文章目录 基础知识-Windows下版本控制器(SVN)1、开发中的实际问题2、版本控制简介2.1 版本控制[Revision control]2.2 Subversion2.3 Subversion 的优良特性2.4 SVN 的工作原理&#xff1a;2.5 SVN 基本操作 本人其他相关文章链接 基础知识-Windows下版本控制器(SVN) 1、开发中…

docker容器:docker镜像的三种创建方法及dockerfile案例

目录 一、基于现有镜像创建 1、创建启动镜像 2、生成新镜像 二、基于本地模板创建 1、OPENVZ 下载模板 2、导入容器生成镜像 三、基于dockerfile创建 1、dockerfile结构及分层 2、联合文件系统 3、docker镜像加载原理 4、dockerfile操作常用的指令 (1)FROM指令 (…