【Linux】关于Linux中的权限

文章目录

    • 前言
    • Linux权限
    • 文件访问者的分类(人)
    • 文件类型和访问权限(事物属性)
      • 文件类型
      • 基本权限
    • 目录的权限
    • 粘滞位
    • 权限的总结

前言

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

以及相互之间的切换:

image-20220928234154823

以及引入的权限的一些铺垫。

下面,我们对其进行补充说明。

如果不切换用户,就想让普通用户以root的身份,执行对应的指令,该怎么去做呢

很简单,加上sudo.sudo加上指令表示短暂的提权,root执行命令。不过这里会有一个问题,不让我们执行,也就是说系统不相信这个用户:

image-20220928235905748

在这个地方,我们授权的时候,让我们输入自己的密码:给受信任的用户,提供最少的执行障碍

解决方法:需要将当前用户添加到系统的文件/etc/sudoers中。这里先不展开说明。后面会做补充。如果暂时使用root,root的权限是最大的,可以随便切换到其他普通用户。也就不存在没有权限的问题了。


Linux权限

简单理解权限:权限简单来说就是进行约束的。(人,一个或者某些群体)

​ 目标对象,本来就没有对应的属性。也就不具备该权限。一个事情是否允许被谁做

文件 = 内容+属性

为什么要有权限❓便于我们系统进行安全管理的

为什么创建的目录或者普通文件,默认的权限是我们看到的这个样子:

image-20221001153454937

为什么创建出来的目录/文件权限是默认上面这个样子的:

Linux规定,目录起始的权限是777(二进制表示,这一部分不懂可以先跳过,往下继续看权限的二进制)

​ 普通文件的起始权限是666

umask:

image-20221001150600672

注意这里的umask是可以进行改变的

image-20221001154234802

0022——系统默认会配置好umask权限掩码:凡是在umask中出现的权限,都必须在起始权限去掉!!!

image-20221001153344697

这也就对应上了:image-20221001153454937

这里还存在一个问题:去掉是在做减法吗

image-20221001160318064

我们发现file根本没有发生变化如果是减法的话应该是原来的666(110 110 110)--------》001 001 001.所以不是减法

实际上,最终权限 = 起始权限 & (~umask)

起始权限:666 110 110 110

umask: 0111 001 001 001

~umask: 110 110 110

起始权限 & (~umask):

​ 110 110 110

即 rw- rw- rw-


文件访问者的分类(人)

文件和文件目录的所有者: u—User

文件和文件目录的所有者所在的组的用户: g—Group

其它用户: o—Others


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

文件类型

补充:Linux和windows(根据文件的后缀)的差别很大。而Linux的文件类型和后缀无关(后缀名可以作为提示,用户可以使用后缀区分文件类型),但是对linux来说区分文件和文件本身的后缀是无关的(但是gcc等工具对文件后缀可能有要求)。后缀本质就是文件名的一部分。

image-20220929192204477

开始之前,我们输入ll指令,来看看前面10个字符代表什么意思:

image-20221004085112137

在linux中,是通过ll显示的众多属性列中的第一列的第一个字符来区分文件类型的。

image-20220930102603738

d:目录文件
-:普通文件(源代码,库文件,可执行程序,文档压缩包等等)
l:链接文件(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如键盘,显示器)

[hwc@VM-8-3-centos test5]$ ll /dev/tty
crw-rw-rw- 1 root tty 5, 0 Sep 29 16:02 /dev/tty

s:socket文件

到了这里,我们已经了解了第一个字符,那其他的呢

image-20220930104906684

对于权限字符所代表的意思,请往下看👇


基本权限

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

image-20220930105319334

image-20220930105355809

image-20221001085012480

对于权限我们有了基本的了解,那我们该如何去设置权限呢

chmod

功能: 设置文件的访问权限

格式: chmod [参数] 权限 文件名

常用选项:R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

chmod
用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限

-:向权限范围取消权限代号所表示的权限

=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

[hwc@VM-8-3-centos test5]$ chmod u+x file.txt
[hwc@VM-8-3-centos test5]$ chmod u-r file.txt
[hwc@VM-8-3-centos test5]$ chmod g-rw test.txt
[hwc@VM-8-3-centos test5]$ chmod g+rwx test.txt
[hwc@VM-8-3-centos test5]$ chmod o-r test.txt
[hwc@VM-8-3-centos test5]$ chmod o+rw test.txt

当然,我们也可以组合起来

[hwc@VM-8-3-centos test5]$ chmod u-rwx,g-rwx test.txt
[hwc@VM-8-3-centos test5]$ chmod u+rw,g+rw,o-rw test.txt

对于所有用户

[hwc@VM-8-3-centos test5]$ chmod a-rwx test.txt

到了这里,我们对于权限的设置有了了解。如果我们把r权限去掉,而去读取呢?当前不能读

[hwc@VM-8-3-centos test5]$ chmod u-r test.c
[hwc@VM-8-3-centos test5]$ ll
total 20
-rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa
drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir
-rw-rw-r-- 1 hwc hwc    0 Sep 29 18:46 file.txt
--w--w---- 1 hwc hwc   89 Sep 30 17:16 test.c
-rw-rw-rw- 1 hwc hwc    0 Sep 30 12:10 test.txt
[hwc@VM-8-3-centos test5]$ cat test.c
cat: test.c: Permission denied
[hwc@VM-8-3-centos test5]$ chmod u-w test.c
[hwc@VM-8-3-centos test5]$ ll
total 20
-rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa
drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir
-rw-rw-r-- 1 hwc hwc    0 Sep 29 18:46 file.txt
-r---w---- 1 hwc hwc   89 Sep 30 17:16 test.c
-rw-rw-rw- 1 hwc hwc    0 Sep 30 12:10 test.txt
[hwc@VM-8-3-centos test5]$ echo "you can see me " >> test.c
-bash: test.c: Permission denied

这是在普通用户下的,而在root用户下不受约束,我们可以来看看

[root@VM-8-3-centos test5]# cat test.c
#include <stdio.h>
int main()
{printf("hello world\n");return 0; 
}
you can see me 
[root@VM-8-3-centos test5]# chmod a-rwx test.c
[root@VM-8-3-centos test5]# ll
total 20
-rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa
drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir
-rw-rw-r-- 1 hwc hwc    0 Sep 29 18:46 file.txt
---------- 1 hwc hwc   89 Sep 30 17:16 test.c
-rw-rw-rw- 1 hwc hwc    0 Sep 30 12:10 test.txt[root@VM-8-3-centos test5]# echo "hello root" >>test.c
[root@VM-8-3-centos test5]# ll
total 20
-rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa
drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir
-rw-rw-r-- 1 hwc hwc    0 Sep 29 18:46 file.txt
---------- 1 hwc hwc  100 Sep 30 18:17 test.c
-rw-rw-rw- 1 hwc hwc    0 Sep 30 12:10 test.txt[root@VM-8-3-centos test5]# cat test.c
#include <stdio.h>
int main()
{printf("hello world\n");return 0; 
}
you can see me 
hello root
[root@VM-8-3-centos test5]# 

对于二进制的表示方法:

[hwc@VM-8-3-centos test5]$ chmod 000 test.c
[hwc@VM-8-3-centos test5]$ ll
total 20
-rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa
drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir
-rw-rw-r-- 1 hwc hwc    0 Sep 29 18:46 file.txt
---------- 1 hwc hwc  100 Sep 30 18:17 test.c
-rw-rw-rw- 1 hwc hwc    0 Sep 30 12:10 test.txt[hwc@VM-8-3-centos test5]$ chmod 777 test.c
[hwc@VM-8-3-centos test5]$ ll
total 20
-rwxrwxr-x 1 hwc hwc 8360 Sep 29 18:59 aaa
drwxrwxr-x 2 hwc hwc 4096 Sep 29 18:46 dir
-rw-rw-r-- 1 hwc hwc    0 Sep 29 18:46 file.txt
-rwxrwxrwx 1 hwc hwc  100 Sep 30 18:17 test.c
-rw-rw-rw- 1 hwc hwc    0 Sep 30 12:10 test.txt

这里如果我们去改文件的拥有者呢❓

chown

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

# chown user1 f1
# chown -R user1 filegroup1

很现实的问题:把文件修改为其他人是不能“单方面”就可以的,需要他人的同意。

image-20221001090252434

解决方法:1.使用sudo指令。2.切换到root用户,直接改变。

root的权限是最大的,可以直接将文件修改为其他用户:

chgrp

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

sudo chgrp hwc test.txt
//把文件拥有者和所属组同时改了
sudo chown huangweichang:huangweichang test.txt

file指令

功能说明:辨识文件类型。
语法: file [选项] 文件或目录…
常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容

image-20221004085019617


目录的权限

如果我们要进入一个目录,需要什么权限❓X权限

可执行权限: 如果目录没有可执行权限, 则无法cd到目录中

可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.

可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

所以这也是为什么系统规定目录的起始权限从777开始,所有的目录被创建出来,一般都要能够被进入

换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。也就是说,张三创建的一个文件, 凭什么李四可以删掉

[root@VM-8-3-centos Test]# ll
total 24
-rwxr-xr-x 1 root root 8360 Sep 28 18:56 no_die
-rw-r--r-- 1 root root  107 Sep 28 18:54 no_die.c
drwxr-xr-x 2 root root 4096 Sep 28 08:56 test
drwxr-xr-x 2 root root 4096 Sep 28 23:36 test5
[root@VM-8-3-centos Test]# chmod 0777 /home/
[root@VM-8-3-centos Test]# ls /home/ -ld
drwxrwxrwx. 12 root root 4096 Sep 30 18:53 /home/
[root@VM-8-3-centos Test]# touch /home/root.c
[root@VM-8-3-centos Test]# su - hwc
Last login: Sat Oct  1 08:18:52 CST 2022 from 222.200.254.195 on pts/0
[hwc@VM-8-3-centos ~]$ rm /home/root.c
rm: remove write-protected regular empty file ‘/home/root.c’? y
[hwc@VM-8-3-centos ~]$ 

为了解决这个不科学的问题, Linux引入了粘滞位的概念

粘滞位

Linux系统中有很多人,我们需要在一个公共的目录下,进行临时文件的操作(增删查改)

image-20221016224438880

通过ll /就会发现有一个这样的目录tmp,这就是公共目录。对于粘滞位:一定是在一个公共的目录下,大家一起进行文件操作。

公共目录通常由root用户来创建:

创建公共目录

image-20221016234108156

image-20221016234410847

至此,我们把公共目录创建完毕。

用不同身份在mytmp创建文件

image-20221016234937789

接下去我们用另一个用户创建文件(由于sudo权限暂时用不了,我们直接暴力一点,用root账号去切换另一个账户(huangweichang))

image-20221016235927673

这时这两个都可以在公共目录下读写自己的临时文件。现在huangweichang相对于hwc是others,可以进行读吗?

image-20221017000321399

这里的权限只有只读,没有任何问题哦。可以往自己的文件进行读写。

删除文件

hwc1.txt的权限不让huangweichang这个用户去写,就把hwc1.txt这个文件给删除了

这问题可大了,一个文件在公共目录下,不能写,我们却能把它删掉,这是不合理的。一个不能以另一个用户读、写、执行的文件,竟然可以让另一个用户删除。所以创建和删除的权限是目录的权限,即在目录中创建和删除里面文件的权限不是文件本身的权限,而是目录的权限

这时候需要一个策略,让一个公共目录,大家各自可以进行rwx操作,但是禁止大家互删对方的文件,因此我们需要给这个公共目录设置粘滞位(权限的一种特殊情况)。

image-20221017081048812

image-20221017081846176

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

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


权限的总结

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

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

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

相关文章

Linux ALSA音频驱动二:ALSA驱动注册

在系统/dev/snd下可查看注册成功的声卡信息&#xff0c;如下所示。 ubuntuubuntu:~$ ls -l /dev/snd total 0 drwxr-xr-x 2 root root 60 4月 7 09:22 by-path crw-rw---- 1 root audio 116, 2 4月 7 09:22 controlC0 // 通路控制 crw-rw---- 1 root audio 116,…

CRC编码

循环冗余校验&#xff08;Cyclic Redundancy Check&#xff0c; CRC) 原理:先在要发送的帧后面附加一个二进制数,(用来校验的校验码);生成一个新帧发送给接收端 附加的二进制数要求&#xff1a;使所生成的新帧能与发送端和接收端共同选定的某个特定数整除 运算&#xff1a;这里…

CLR简介

CLR简介 什么是CLR CLR英文全称Common Language Runtime&#xff0c;即公共语言运行时。 乍一看到这个概念确实不明白&#xff0c;什么是语言运行时&#xff1f; 简单来说&#xff0c;就是一个程序运行所需要的环境&#xff0c;包括各种资源、各种操作等等。 通常来说&…

CRF概述

主要参考 1.李航统计学习方法 2.一个声音好听的小姐姐的讲解视频https://www.bilibili.com/video/av752902225/ 3. 白板推导系列视频 https://www.bilibili.com/video/BV19t411R7QU?p1 一、背景介绍 1、背景算法介绍 HMM&#xff0c;隐马尔可夫模型&#xff0c;是生成模…

CRC-16

文章目录 A.1 CRC16 算法A.1.1 CRC16 算法参数设置A.1.2 LengthA.1.3 CounterA.1.4 Data IDA.1.5 CRCA.1.6 CRC16 算法示例A.1.7 CRC16 算法推荐(查表法)A.1.8 CRC16 实例(查表法) A.1 CRC16 算法 A.1.1 CRC16 算法参数设置 CRC16 算法中要求了 Counter、Data ID、CRC 等参数…

CRF

随机场&#xff1a;由若干个子集组成的一个整体&#xff0c;而每个子集都按照某个分布随机赋予一个值&#xff0c;这个场就叫随机场。 马尔科夫随机场&#xff1a;随机场中某一位置的赋值仅与其相邻位置的赋值有关&#xff0c;和与其不相邻位置的赋值无关。 CRF是马尔科夫随机…

crc(crc是什么职业)

CRC的特点是什么&#xff1f; 在诸多检错手段中&#xff0c;CRC是最著名的一种&#xff0c;其特点是:检错能力极强&#xff0c;开销小&#xff0c;易于用编码器及检测电路实现 CRC的特点有哪些呢&#xff1f; CRC的全称是循环冗余校验&#xff0c;其特点是:检错能力极强&#x…

CRC16

CRC选择 当数据帧长度在8bits-128bits范围内时&#xff0c;推荐CRC-8(CRC-8能够减少额外比特的开销&#xff0c;且有更好的性能表现) 当数据帧长度在128bits-2048bits范围内时&#xff0c;推荐CRC-12&#xff0c;CRC-16&#xff0c;CRC-CCITT(CRC-12额外比特的开销更小&#x…

linux中ls -l出的crw brw lrw代表什么?

原文链接&#xff1a;https://www.cnblogs.com/victorywr/p/15725170.html 每次使用ls -al 查看文件信息&#xff0c;都只看rw-rw-rw- &#xff08;权限为666&#xff09;&#xff0c;忽略最前面的c/b/l&#xff0c;今天了解一下&#xff1a; linux中c表示字符设备文件&#xf…

一款红队批量脆弱点搜集工具

功能 指纹识别:调用“三米前有香蕉皮“前辈工具&#xff0c;他的工具比finger好用 寻找资产中404&#xff0c;403&#xff0c;以及网页中存在的其他薄弱点&#xff0c;以及需要特定路径访问的资产 后续会把nuclei加进来 目前只有windows可以用 使用 第一次使用脚本请运行p…

【机器学习】正则化详解和过拟合的解决

https://blog.csdn.net/weixin_45434953/article/details/130970273 上一篇文章的例子中&#xff0c;如果使用一个四次多项式去拟合房价函数&#xff0c;会导致过拟合问题 而正则化是解决过拟合的一个方法。右图过拟合是因为其三次方项和四次方项的影响&#xff0c;我们再回顾…

改进YOLOv8 | 主干网络篇 | YOLOv8 更换骨干网络之 GhostNet | 从廉价操作中获取更多特征

论文地址:https://arxiv.org/abs/1911.11907 代码地址:https://github.com/huawei-noah/ghostnet 由于内存和计算资源有限,在嵌入式设备上部署卷积神经网络(CNN)很困难。特征图中的冗余是那些成功的神经网络的重要特征,但在神经架构设计中很少研究。本文提出了一种新的G…

【测试入门】测试用例经典设计方法 —— 因果图法

01、因果图设计测试用例的步骤 1、分析需求 阅读需求文档&#xff0c;如果User Case很复杂&#xff0c;尽量将它分解成若干个简单的部分。这样做的好处是&#xff0c;不必在一次处理过程中考虑所有的原因。没有固定的流程说明究竟分解到何种程度才算简单&#xff0c;需要测试…

妙啊!真实模拟面试 — 面试官究竟会怎么问 数据库索引呢?

什么是索引&#xff1f; 面试官&#xff1a;我看你项目中有做过 SQL 优化&#xff0c;那我们今天就来聊聊索引吧。 &#xff08;索引能问些啥&#xff0c;无非是索引的概念、索引的使用规则、索引的分类、索引的原理。嘻嘻~我早有准备&#xff09; 我&#xff1a;数据库中的…

一道面试题:餐馆模拟

前阵子遇到一个面试题&#xff0c;当时没有做出来&#xff0c;后来断断续续的用了一周的时间做了出来&#xff0c;但感觉也不完全对&#xff0c;先来看看题目&#xff0c;稍后再讨论。 问题 模拟一个餐馆&#xff0c;三个厨师&#xff0c;二个服务员&#xff0c;厨师单独做菜…

AI模拟面试官项目实战 | 项目概述

&#x1f3af;摘要 看完本文&#xff0c;你可能有如下收获&#xff1a; 了解该项目的预览效果、了解技术栈、系统设计以及教程食用指南 ⭐️⭐️该收获仅供参考&#xff0c;真实收获以实物为准&#x1f607;&#x1f607; ☀️系统概述 【AI模拟面试官】是一个模拟线上面试的…

软件测试面试题【2021模拟面试整理版(含答案)】

点击上方蓝色“程序员一凡”&#xff0c;选择“设为星标” 主页点击“领取资料”获取整理好的学习资源 一、问题预测 \1. 让简单介绍下自己&#xff08;每次面试开场&#xff09; \2. 让说下自己会的内容 \3. 看了哪些书籍&#xff08;有问到&#xff09; \4. 了解过哪些技…

Java程序员模拟面试,解析面试困扰和建议

模拟面试&#xff0c;相信大多数程序员都没有经历过&#xff0c;甚至还有从来没听说针对面试的辅导或者模拟面试啥的&#xff0c;所有的面试经验都来源于网上写的一些文章&#xff0c;然后再在面试的时候通过各种碰壁去揣测面试官在想啥。 前言 前几天组织了一次模拟面试直播&…

模拟面试题一

一、选择题 1、python不支持的数据类型有 A、charB、intC、floatD、list 1 参考答案&#xff1a;A 参考答案 2、打印输出结果&#xff1a;x "foo"y 2print(x y)A.foo B.foofoo C.foo2 D.2 E.An exception is thrown 1 D &#xff1a;一个是字符串&#…

前端面试题总结:模拟面试

1&#xff0c;问&#xff1a;请先自我介绍&#xff1f; 答&#xff1a;略 二&#xff0c;技术知识题 1&#xff0c;问&#xff1a;看你简历有项目经历&#xff0c;那在你之前的项目中&#xff0c;用到的技术栈有哪些&#xff1f; 答&#xff1a;主要使用过vue和微信小程序&…