【Linux权限管理】

news2024/12/23 6:33:41

The secret of getting ahead is getting started.

 

目录

1 Linux权限的概念

2 文件访问者的分类(人)

 3 文件类型和访问权限(事物属性)

chmod

chown:

chgrp:

4 文件掩码

umask

5 目录的权限

6 粘滞位

7 权限的总结


1 Linux权限的概念

我们知道Linux下有两种用户:超级用户(root)、普通用户。

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

如何从普通用户转到超级用户呢?

命令:

su root (root可以省略)

 从超级用户转为普通用户命令:

su username

 另外再复习一下Linux下新建用户的指令是:

useradd username

删除用户的命令是:

userdel -r username

为新用户设新密码的命令是:

passwd username

2 文件访问者的分类(人)

在Linux中,文件访问者分成3种:

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

 3 文件类型和访问权限(事物属性)

我们创建一个文件text.c ,那这个文件创建好的默认权限是什么呢?

 通过上面我们不难看出建立一个普通文件的默认权限是 :rw- r-- r--

而建立一个目录的默认权限是:rwx r-x r-x

这里的 r w x分别代表什么意思呢?

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

具体图解:

 这里我们再普及一下文件有哪些类型:

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

 有了上面的了解后,假如我们想修改文件的权限那应该怎么办呢?例如我想将text.c

这个文件的拥有者拥有可执行权限应该怎样操作呢?

这个时候就需要 chmod 这个指令了。

chmod

功能: 设置文件的访问权限
格式: chmod [ 参数 ] 权限 文件名
常用选项:
  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限
chmod 命令权限值的格式:
① 用户表示符 +/-= 权限字符
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限
用户符号:  
u :拥有者
g :拥有者同组用
o :其它用户
a :所有用户
我们可以来试试:

 这样我就修改了该文件拥有者的权限了,至于减去相应的权限就用 - ,组合用的话可以加一个' ,'例如:

 减去相应权限也同理。

②三位 8 进制数字
这个是什么意思呢?
我列一个表格给大家:
权限符号(读写执行)八进制二进制
r--4100
-w-2010
--x1001
rw-6110
r-x5101
-wx3011
rwx7111
---0000

通过八进制数字修改也可以达到我们的需求:

 这个很简单,大家都能够理解。

另一个问题:假如我想更换该文件的拥有者和所属组应该咋办?

这个时候我们就可以使用chown 和 chgrp 指令了:

chown:

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

chgrp:

功能 :修改文件或目录的所属组
格式 chgrp [ 参数 ] 用户组名 文件名
常用选项 -R 递归修改文件或目录的所属组

我们可以来试试:

[root@VM-8-12-centos lesson6]# ll
total 8
drwxr-xr-x 2 root root 4096 Dec  2 21:31 mydir
-rwxrwxrwx 1 root root    0 Dec  2 21:30 mytxt.txt
-rwxr--rwx 1 root root  110 Dec  2 17:05 text.c
-rw-r--r-- 1 root root    0 Dec  2 21:31 text.cpp
[root@VM-8-12-centos lesson6]# chown grm text.c
[root@VM-8-12-centos lesson6]# ll
total 8
drwxr-xr-x 2 root root 4096 Dec  2 21:31 mydir
-rwxrwxrwx 1 root root    0 Dec  2 21:30 mytxt.txt
-rwxr--rwx 1 grm  root  110 Dec  2 17:05 text.c
-rw-r--r-- 1 root root    0 Dec  2 21:31 text.cpp
[root@VM-8-12-centos lesson6]# 

 不难发现该文件的所属组已经被修改成功。

修改所属组也是同样的方法,只是用的命令变为:chgrp


4 文件掩码

通过上面我们知道:

超级用户建立一个普通文件(不包括可执行文件)的默认权限是 :rw- r-- r--  (644)

而建立一个目录的默认权限是:rwx r-x r-x  (755)

那么为什么是这样子的呢?

系统新建文件夹起始权限 =0666 ,新建目录起始权限 =0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask 的影响。
而umask就是文件掩码。那最终权限(也就是系统的默认权限)与起始权限和文件掩码有啥关系呢?
最终权限=mask & ~umask (mask是文件起始权限)

umask

功能
查看或修改文件掩码
格式 umask 权限值
说明 :将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022 ,普通用户默认为 0002

在超级用户下建立
文件:
110 110 110  (666)
111 101 101 &
------------
110 100 100  (644)

目录:
111 111 111  (777)
111 101 101 &
------------
111 101 101  (755)

假如我们想修改系统默认的文件掩码呢?

可以使用命令:

umask XXX

我们不妨跳转到普通用户下来使用一下:

[grm@VM-8-12-centos ~]$ umask 012
[grm@VM-8-12-centos ~]$ touch tmp.txt
[grm@VM-8-12-centos ~]$ mkdir -p dir
[grm@VM-8-12-centos ~]$ ll
total 4
drwxrw-r-x 2 grm grm 4096 Dec 18 13:24 dir
-rw-rw-r-- 1 grm grm    0 Dec  2 22:30 grmfile
-rw-rw-r-- 1 grm grm    0 Dec 18 13:23 tmp.txt

 通过计算我们也能很快速的得到上面的结果。


5 目录的权限

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

其中比较容易出错的就是这个可执行权限了,进入一个目录首先需要的就是可执行权限,这点大家务必要牢记。


6 粘滞位

于是 , 问题来了 ~~
换句话来讲 , 就是只要用户具有目录的写权限 , 用户就可以删除目录中的文件 , 而不论这个用户是否有这个文件的写权限 .
这好像不太科学啊 , 我张三创建的一个文件 , 凭什么被你李四可以删掉 ? 我们用下面的过程印证一下:
我们用root用户创建一个共享目录(也就是其他用户都能够在里面建立文件的目录)将其权限都打开

然后其他用户以及root就可以往里面添加自己创建的文件了

 但是问题来了,如果有一天grm把bxz惹毛了,bxz一气之下就把grm所创建的文件给干掉了,操作系统会同意这样做的吗?

 我们发现好像还真的就删除了,这合理吗?还是一个bug?

所以我们就引出了粘滞位的概念:

当一个目录被设置为 " 粘滞位 "( chmod +t ), 则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

 我们为share目录增加一个粘滞位:

[root@VM-8-12-centos /]# chmod +t share
[root@VM-8-12-centos /]# ll
total 84
lrwxrwxrwx.   1 root root     7 Mar  7  2019 bin -> usr/bin
dr-xr-xr-x.   5 root root  4096 Jul 28 11:37 boot
drwxr-xr-x    4 root root  4096 Nov  4 17:34 cpp
drwxr-xr-x    2 root root  4096 Nov  5  2019 data
drwxr-xr-x   19 root root  3020 Sep 20 16:33 dev
drwxr-xr-x.  95 root root 12288 Dec  2 22:04 etc
drwxr-xr-x.   4 root root  4096 Dec  2 22:02 home
lrwxrwxrwx.   1 root root     7 Mar  7  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  7  2019 lib64 -> usr/lib64
drwxr-xr-x    3 root root  4096 Oct  3 20:34 linux
drwx------.   2 root root 16384 Mar  7  2019 lost+found
drwxr-xr-x.   2 root root  4096 Apr 11  2018 media
drwxr-xr-x.   2 root root  4096 Apr 11  2018 mnt
drwxr-xr-x.   4 root root  4096 Sep 20 15:18 opt
dr-xr-xr-x  117 root root     0 Sep 20 16:33 proc
dr-xr-x---.   8 root root  4096 Nov 23 21:26 root
drwxr-xr-x   25 root root   880 Nov 15 20:05 run
lrwxrwxrwx.   1 root root     8 Mar  7  2019 sbin -> usr/sbin
drwxrwxrwt    2 root root  4096 Dec 18 13:58 share
drwxr-xr-x.   2 root root  4096 Apr 11  2018 srv
dr-xr-xr-x   13 root root     0 Sep 26 20:53 sys
drwxrwxrwt.   8 root root  4096 Dec 18 12:56 tmp
drwxr-xr-x.  14 root root  4096 Jan  8  2021 usr
drwxr-xr-x.  20 root root  4096 Jan  8  2021 var

 我们发现other的最后一位权限由x变成了t

接下来我们再删除来试试:

[bxz@VM-8-12-centos share]$ ll
total 8
-rw-rw-r-- 1 bxz  bxz   0 Dec 18 13:53 bxz1
-rw-rw-r-- 1 bxz  bxz   0 Dec 18 13:53 bxz2
-rw-rw-r-- 1 grm  grm  30 Dec 18 13:52 grm1
-rw-rw-r-- 1 bxz  bxz  91 Dec 18 13:54 nxz1
-rw-r--r-- 1 root root  0 Dec 18 13:51 root1
-rw-r--r-- 1 root root  0 Dec 18 13:51 root2
[bxz@VM-8-12-centos share]$ rm -rf grm1
rm: cannot remove ‘grm1’: Operation not permitted

 很明显该操作现在已经不被允许了。


7 权限的总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

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

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

相关文章

【瑕疵检测】瓶盖瑕疵检测【含Matlab源码 730期】

⛄一、简介 文中将图像预处理与边缘检测相结合对瓶盖瑕疵进行检测, 先使用直方图规定化的方法对图像做出修正与增强, 再利用中值滤波的方法消除图像孤立的噪声点;Canny算子快速分辨出瓶盖瑕疵, 再利用采用Otsu阈值方法求取自适应阈值自动选择并提取瑕疵。 1 图像预处理 在特征…

Mac 使用 brew 安装 mysql

最近需要用到 MySQL 来开发项目,所以在 Mac 配置了下 MySQL 的环境。 1、使用 brew install mysql 安装 MySQL 安装完毕后会有以下提示信息,告诉我们初始安装好后 root 账户没有密码,只需要输入 mysql -uroot就能连接运行MySQL。 那咱们输入 …

模板引擎:ftl文件生成word

wshanshi:总结记录…便于回顾… 一、什么是FreeMarker FreeMarker 是一个用 Java 语言编写的模板引擎,基于模板来生成文本输出。 FreeMarker的原理:模板数据模型输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代…

设计模式之组合模式

Composite design pattern 组合模式的概念、组合模式的结构、组合模式的优缺点、组合模式的使用场景、组合模式的实现示例、组合模式的源码分析 1、组合模式的概念 组合模式,即部分整体模式,是用于把一组相似的对象当做一个单一个的对象。组合模式依据树…

C#语言实例源码系列-身份证验证

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

【车载开发系列】UDS诊断---数据传输($0x36)

【车载开发系列】UDS诊断—数据传输($0x36) UDS诊断---数据传输($0x36)【车载开发系列】UDS诊断---数据传输($0x36)一.概念定义二.报文格式1)请求报文2)肯定响应3)否定响…

FL Studio21最新中文公测版下载及新功能介绍

FL Studio水果21现已推出,提供更快、更精确的音频编辑,coco玛奇朵升级后的DAW为用户提供了更多的内容发现和改进的界面。 Image-Line发布了FL Studio 21,称其可以实现更快、更精确的音频编辑,以及对整个DAW的更多控制。 期待已久…

【毕业设计_课程设计】基于SSM的实验室管理系统(源码+论文)

文章目录0 项目说明1 研究目的2 研究方法3 项目使用4 研究结论5 论文目录6 项目源码0 项目说明 基于SSM的实验室管理系统 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 1 研究目的 基于B/S模式的实验室管理系统,它所覆…

Linux命令行笔记-00 综述

文章目录1 Linux命令行简介1.1 Linux命令行的分类1.1.1 根据系统中作用来分类1.1.2 根据对象来分类2 Linux命令行解释器2.1 命令行解释器shell2.1.1 核心程序2.1.2 公用程序shell2.1.3 用户的默认shell2.1.4 shell如何工作2.2 Shell发展历史2.3 shell版本的差异2.3.1 C shell2.…

云原生----什么是云原生

【原文链接】云原生----什么是云原生 文章目录1. 云原生的概念2. 云原生的四要素3. 云原生的关键目标什么是云原生?这里将从云原生的概念、云原生的四要素、云原生关键目标等方面介绍。1. 云原生的概念 云原生应用时面向云而设计的应用,在使用云原生技术…

Metasploit Framework和msf框架

Metasploit Framework ● MSF默认集成与kali linux之中 ● 使用postgresql数据库存储数据 ○ 早期版本需要先启动数据库再启动msf MSF架构 Rex ● 基本功能库,用于完成日常基本任务,无需人工手动编码实现 ● 处理socket连接访问、协议应答&#xff08…

洛谷千题详解 | P1020 [NOIP1999 普及组] 导弹拦截【C++语言】

博主主页:Yu仙笙 专栏地址:洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析: C源码: C源码2: -------------------------------------------------------------------------------------------------…

【(C语言)数据结构奋斗100天】栈和队列

前言 🏠个人主页:泡泡牛奶 🌵系列专栏:[C语言] 数据结构奋斗100天 本期所介绍的是栈和队列,那么什么是栈呢,什么是队列呢?在知道答案之前,请大家思考一下下列问题: 你如何…

【问答篇】Java 线程篇 面试题(二)

每天进步一点~ (ps: 文章内容及图片出处来自本人公众号~) 01、问:请谈谈你对线程声明周期的6种状态的认识和理解 答:很多地方说线程有5种状态,但实际上是6种状态:NEW、RUNNABLE, BLOCKED、 WAITING、TIMED_WAITING、TERMINATED; 新创建&a…

(附源码)Springboot掌上博客系统 毕业设计 063131

Springboot掌上博客系统的设计与实现 摘 要 掌上博客系统是当今网络的热点,博客技术的出现使得每个人可以零成本、零维护地创建自己的网络媒体,Blog站点所形成的网状结构促成了不同于以往社区的Blog文化,Blog技术缔造了“博客”文化。 本文课…

微服务框架 SpringCloud微服务架构 服务异步通讯 53 MQ 集群 53.1 集群分类 53.2 普通集群

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 服务异步通讯 文章目录微服务框架服务异步通讯53 MQ 集群53.1 集群分类53.1.1 集群分类53.2 普通集群53.2.1 普通集群53.2.2 搭建普通 集群5…

2022 FIFA World Cup Final

我希望梅西能够捧杯,因为我怕再看见那个眼神!写在总决赛开始前 12/18/2022 22:04 在一个周日的晚上收到了邹总发的活动信,我记得还在CSDN问答区在回答问题,突然看见私信的红点,其实看到活动(活动链接点击这…

万字长文,彻底搞懂分布式缓存Redis

最近系统性地整理了Redis的知识点,在此和大家做些分享,希望能帮助到大家。 为什么Redis这么受欢迎 时代产物 随着互联网规模的不断扩张,越来越多的企业在技术架构上会采用分布式架构,而且对于系统的吞吐量以及响应速率的要求也…

非零基础自学Golang 第11章 文件操作 11.2 文件基本操作 11.2.3 文件写入 11.2.4 删除文件

非零基础自学Golang 文章目录非零基础自学Golang第11章 文件操作11.2 文件基本操作11.2.3 文件写入11.2.4 删除文件第11章 文件操作 11.2 文件基本操作 11.2.3 文件写入 与之前的文件读取相比,向文件写入内容也有两个接口,分别为Write和WriteAt。 fu…

数据管理篇之元数据

第12章 元数据 1.元数据概述 元数据定义 元数据是关于数据的数据。按照用途可以分为两类: 技术元数据 业务元数据 阿里巴巴常见的技术元数据: 分布式计算系统存储元数据 分布式计算系统运行元数据 数据开发平台中数据同步,计算任务、任务调…