【Linux权限管理】文件:毁灭我与我无关

这篇具有很好参考价值的文章主要介绍了【Linux权限管理】文件:毁灭我与我无关。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.预备知识

1.LInux用户分类

一台Linux机器的用户分为两类:

超级用户和普通用户

注意我这里说的用户的并不是一个固定的人,例如你本身就有root账号,但你也可以使用自己创建普通账号。当你使用root账号时,你就是一个超级用户,当你使用普通账号时,你就是一个普通用户。更简单地说,这里的用户对应的是正在使用的账号。

root账号无所不能,不受权限约束,而普通账号则受权限约束。具体怎么一回事下面再说。

2.切换用户的指令

当你想切换到不同用户时,可以使用su指令,后面加上想要切换成哪个用户,如果不加,默认是root用户

从普通用户切换到超级用户:

su

接下来会提示你输入密码,这里输入的是root账号的密码。

从超级用户切换到普通用户:

su zhangsan

假设你添加了zhangsan这个用户,就可以使用本条指令切换用户,root用户可以任意切换身份,不需要输入密码

从普通用户切换到普通用户

su lisi

假设你现在登录的是张三的账号,你想要切换成李四,就可以使用上述的命令,前提是你要知道李四的密码

su -

你也可以使用这条指令切换账号,他和su的效果基本一样,只不过su只是单纯地账号切换,而su -是重新登录账号,最终的效果就是前者仍然在以前的目录,而后者会回到切换账号的家目录

二.权限的理解

怎么理解权限?权限就是能不能做某件事,它是一个是否的问题,所以权限必然包含两个要素,谁能不能做事?(who)   做什么事?(what)

Linux系统当中,“一切皆文件”,故我们操作一台机器,实际上就是访问机器当中的各种各样的文件。所以我们说,“权限是伴生文件的”,某个具体的文件(这里是广义的文件,包括目录等),权限就是约束用户对文件能做哪些事情。

三.文件访问者的分类

根据和某个文件的关系,所有用户可以被分为三类:

  1. 拥有者 u--User
  2. 所属组 g-Group
  3. 其它人 o-Others

拥有者默认就是创建这个文件的人

所属组是专门为这个文件划的一个群体,里面可以有一个或多个用户,并且有一个组长,最初默认只有文件的创建者一个人,并且担任组长、

这里可能会有一个疑问,不是说用户分为超级用户和普通用户吗?这里不是和上面冲突了吗?

超级用户和普通用户是某个具体的人,而拥有者,所属组和other是某种角色,二者是相互补充,互相成就的关系。

例如,张三是一名学生,想去教职工食堂吃饭但是被拦住了。于是张三奋发图强,大学毕业后当上了老师,可以正大光明地去教职工食堂了。张三能去教职工食堂吃饭,是因为他是张三吗?不是,是因为他是老师。张三从学生这个角色向老师转变,但他的姓名,身份证号没有改变,从他出生起,他就叫张三。所以我们说张三这个人的角色先是学生,后是老师。

四.文件类型和访问权限

我们可以使用ls -l 指令来查看当前目录下所有文件的属性,一个文件的属性如下

【Linux权限管理】文件:毁灭我与我无关,linux,运维,服务器,c++

1.文件类型

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件

文件类型很多,我们只需记住普通文件和文件夹的表示符号就可以了。

2.基本权限

你能对一个文件做什么呢?无非就是读,写,执行,所以基本权限也就是这三种

i.读:Read对文件而言,具有读取文件内容的权限;对目录来说,具有查看该目录下文件信息的权限

ii.写:Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

iii.执行:execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

iv.“—”表示不具有该项权限

【Linux权限管理】文件:毁灭我与我无关,linux,运维,服务器,c++

针对helloworld这个文件,它的文件类型是- ,即普通文件,拥有者的权限是rw- ,(可读可写不可执行)所属组的权限是r-- (可读不可写不可执行), 其它人的权限是r--(可读不可写不可执行)。

顺便提一下,Window中一个文件能否被执行要看它的文件名后缀,例如exe就是可执行文件。而在Linux中一个文件能否被执行取决于你有没有x权限,与后缀名无关。

注意我的用词,Linux系统本身不按照文件后缀来区分文件类型,不代表上面的软件不认后缀哟。例如用gcc编译一个txt文件就不行。

【Linux权限管理】文件:毁灭我与我无关,linux,运维,服务器,c++

现在正式提出问题:dir这个文件的权限是什么?

答:对于helloworld这个文件,拥有者具有rwx权限,所属组具有rwx权限,others具有rx权限,没有w权限

前文说过,要描述一个文件权限需要包含两个要素,who?拥有者,所属组和others。what?r、w、x

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

1.chmod

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

【Linux权限管理】文件:毁灭我与我无关,linux,运维,服务器,c++

chmod u+x test.txt

给test.txt文件的拥有者加上x权限

【Linux权限管理】文件:毁灭我与我无关,linux,运维,服务器,c++

chmod u-x,o+w test.txt

给test.txt文件的拥有者取消x权限,others加上w权限 

【Linux权限管理】文件:毁灭我与我无关,linux,运维,服务器,c++

chmod a-w test.txt 

给test.txt的拥有者,所属组和其他人都取消w权限 

注意:只有文件的拥有者和root才能改文件的权限。

root虽然是others,但它是不受权限约束的。即使是文件的拥有者也是受到权限约束的,也就是说,当拥有者把自身的w权限取消时,也不能向文件中写入内容,但这样做是没有意义的,因为自己能把权限改回来。

还有一个问题,虽然我是拥有者,w权限被取消了,但我同时还是所属组的组长啊,假设所属组是有w权限的,那我能否向文件中写入内容呢?也不能。因为一个用户在匹配角色的时候,只会匹配一次,先判断你是不是拥有者,如果是就不再匹配了。

2.chown

功能:改变文件的拥有者

chown zhangsan test.txt

将test.txt的拥有者改为zhangsan

注意:只有root才能更改文件的拥有者

3.chgrp

功能:改变所属组的组长

chgrp zhangsan test.txt

注意:只有root才能更改文件的所属组组长

六.文件权限的八进制表示方案 

前面我们知道,要表示一个文件的权限,需要9个位,每三个为一组,分别表示拥有者,所属组和others的权限,每一位只有两种情况,要么是-,要么是对应的字母(r,w,x)。故我们也可以采用9个二进制位来表示权限,0表示没有对应权限,1表示有。然后将二进制转换为八进制,为什么是八进制呢?因为三个二进制为一组,故采用这种八进制方案。

例如

拥有者:rw-     110      6

所属组:rw-     110      6

其它人:r--      100      4

文件权限用八进制方案表示:664

故我们也可以这样使用chmod指令

chmod  664  test.txt

七.文件的默认权限

 

 这是新创建的三个目录和普通文件 ,权限没有经过任何修改,可以发现目录的默认权限是775,普通文件的默认权限是664。

要弄清楚背后的逻辑,需要知道三个点

1.目录的起始权限是777,普通文件的起始权限是666

那为什么目录的的权限不是777呢?别着急,往下看

2.Linux系统中存在权限掩码

什么是权限掩码呢?我们可以用以下指令来查看

umask

【Linux权限管理】文件:毁灭我与我无关,linux,运维,服务器,c++

默认的权限掩码是0002,我们还可以自己设置掩码

umask 0000

 

将掩码更改后我们再创建目录和文件

【Linux权限管理】文件:毁灭我与我无关,linux,运维,服务器,c++ 结果发现目录的默认权限变成了777,普通文件变成了666,默认权限变了!!!所以我们可以大胆猜测,文件的默认权限受到起始权限和权限掩码影响 。那么具体是如何影响的呢

3.默认权限 = 起始权限 去掉 权限掩码中出现的权限

例如0002这个权限掩码,第一个0是八进制的前缀,所以这是一个八进制数002,转换为二进制就是000 000 010,故others的w权限最终会在起始权限中去掉。而目录的起始权限是111 111 111,经过掩码作用就是111 111 101,即八进制的775。

归纳为一个表达式就是最终权限 = 起始权限 & (~umask)当然既然有位运算,那么肯定要先将八进制转换为二进制。

八.目录权限的特殊说明

1.进入一个目录需要什么权限?

答:需要该目录的x权限

2.目录的r权限是什么?

答:查看当前目录的文件列表(ls指令)

3.没有目录的x权限,但是有r权限,能拥ls指令查看文件列表吗?

答:不能,没有x权限则无法对目录执行任何命令,甚至无法进入

4.在一个目录下创建文件需要什么权限?

答:需要该目录的w权限

5.一个文件的属性能否被查看由什么决定?

答:由文件所属目录的权限决定!!!

 6.一个文件能否被删除本身能决定吗?由谁决定?

答:不能,由文件所属目录与对应账户是否有w权限

辨析上面几个问题后,我们就能理解为什么要把目录的起始权限设为rwx了,你既然创建了一个目录,肯定要能进入吧,要能创建文件吧,还要能查看文件列表吧,不然你创建它干什么呢?

但同时有一点令人匪夷所思,我们发现删掉一个文件与该文件无关。假如你创建一个文件,把others的所有权限都取消了,正当你以为高枕无忧时,却发现文件被删除了,因为你忘记更改了目录的权限。所以为了防止这种文件被others随意更改的情况,默认的掩码就是0002,无论是目录还是普通文件,都把others的w权限去掉。

还有一个小细节,每个用户的家目录都只对自己开放了权限,其它用户是无法访问的

【Linux权限管理】文件:毁灭我与我无关,linux,运维,服务器,c++

所以,一般而言,不同的账号是不会在同一目录下的,上面那种others删除文件的情况几乎不会发生 

九.粘滞位

1.粘滞位应用场景

上面说的是一般情况,但总会有特殊场景。

张三和李四现在想要合作开发,共享文件,但是文件放在哪里呢?张三的家目录李四进不去,李四的家目录张三进不去。这时root说,我在根目录下创建了一个目录dir,你们都把文件放在里面吧。于是张三和李四都在dir目录下进行开发,也能互相查看对方的文件。

突然有一天,张三不想让李四看到自己写的内容,于是他把自己文件others的所有权限给关闭了,但是又害怕李四生气把文件给删了,所以张三找到root,让他把李四对dir目录的w权限取消,root答应了。

第二天,李四来找root,你把我的w权限关了,我还怎么新建文件啊!root这下犯了难,不知道该怎么办。

上面问题的根源在于文件能否被删除不由文件本身的权限决定,“毁灭你与你无关”。你取消别人权限可以保证信息不回泄露,但别人不高兴了可以随时删你,但更改目录权限又会引发别的问题,这样显然不合理。

针对这种共享场景下的问题,LInux新增了一个权限,叫做粘滞位

2.粘滞位的使用方法

共享文件时,大家可以不给对方设置权限,但是可以互删文件,这是有bug的。给共享目录添加了粘滞位后,该目录下的文件只能由以下的人删除:

  1. 超级管理员
  2. 文件拥有者
  3. 目录拥有者

 chmod +t dir

给dir目录添加粘滞位 

【Linux权限管理】文件:毁灭我与我无关,linux,运维,服务器,c++文章来源地址https://www.toymoban.com/news/detail-700254.html

到了这里,关于【Linux权限管理】文件:毁灭我与我无关的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 头歌--第1关:Linux文件权限修改(Linux文件/目录高级管理一)

    任务描述 假设系统中存在一个文件 File ,修改该文件的权限,根据实际需求添加/删除该文件读、写、执行权限,通过本关的学习,我们学会如何让一个文件允许哪些用户访问或禁止哪些用户访问。 本关任务:学会如何修改文件的权限。 相关知识 Linux 系统中的每个文件都有

    2024年02月05日
    浏览(27)
  • Linux权限 - 概念与管理 | 文件权限的修改与转让 【详解】

    目录 Linux权限 Linux权限的概念  Linux权限的基础操作 (1).实现用户账号的切换  (2).仅提升当前指令的权限 Linux权限管理 1、文件访问者的分类(人) 2、文件类型和访问权限(事物属性)  3、文件权限值的表示方法 4、文件访问改变文件/目录的拥有者和所属组 修改文件的权限

    2023年04月22日
    浏览(19)
  • Linux 系统文件权限管理(参考菜鸟教程)

    如图所示:  1、第一个字符代表这个文件是目录、文件或链接文件等等。 当为 d 则是目录 当为 - 则是文件; 若是 l 则表示为链接文档(link file); 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置); 若是 c 则表示为装置文件里面的串行端口设备,例如键盘

    2024年02月14日
    浏览(12)
  • Linux文件属性与权限管理(可读、可写、可执行)

            Linux把所有文件和设备都当作文件来管理,这些文件都在根目录下,同时Linux中的文件名区分大小写。         使用ls -l命令查看文件详情: 1、每行代表一个文件,每行的第一个字符代表文件类型,linux文件类型包括: 字符 说明 - 表示普通文件,如文本文件、

    2024年02月14日
    浏览(35)
  • 掌握文件权限管理:Mac和Linux中的chmod +x命令详解

    chmod +x是一个用于在Mac和Linux操作系统上设置可执行权限的命令。它允许你将可执行权限添加到文件,使得你可以运行这个文件作为一个程序或脚本。这个命令通常用于shell脚本、可执行程序和其他可运行文件。  chmod 是一个在Unix和Unix-like操作系统中用来改变文件或目录权限的

    2024年02月05日
    浏览(21)
  • Linux Tip 03 文件类型属性、权限管理、拓展名、主要目录介绍、文件的相关操作、文件内容查看、文件的修改、文件和目录的权限、文件的查找

    一、用户的存储 在Linux系统中 系统上所有的账号和一般身份的用户以及root的相关信息都存在/etc/passwd这个文件中 个人的密码记录在/etc/shadow中 所有的组名都记录在/etc/group中 二、文件类型和属性 三、文件和目录的权限管理 四、文件的类型 五、文件的拓展名 文件长度的限制

    2023年04月10日
    浏览(17)
  • Linux基础命令 - 文件及目录操作, 打印输出, 查找命令, 用户及权限管理, vi的使用等

    vi - 纯文本编辑器 vi命令 是UNIX操作系统和类UNIX操作系统中最通用的 全屏幕 纯文本编辑器。Linux中的vi编辑器叫 vim ,它是vi的 增强版 (vi Improved),与vi编辑器 完全兼容 ,而且实现了很多 增强功能 。 vi编辑器支持 编辑模式 和 命令模式 ,编辑模式下可以完成文本的编辑功

    2024年02月06日
    浏览(39)
  • 云计算Linux运维——Linux系统管理——磁盘管理

    点关注不迷路 目录 1磁盘分区管理 一、硬盘基础知识 1、硬盘的表示方法 2、查看块设备 3、硬盘分区的表示方法 4、创建文件系统/格式化 5、操作磁盘的流程 二、管理磁盘分区工具 fdisk 1、使用格式 2、查看磁盘分区 三、磁盘分区案例 1、规划 2、创建分区 3、让内核识别硬盘

    2024年02月12日
    浏览(10)
  • 云计算Linux运维——Linux系统管理——软件管理

    目录 点关注不迷路 1RPM软件管理 1、软件安装包类型 2、RPM软件安装包的组成 二、RPM软件管理操作 rpm命令 1、安装软件 2、查看软件 3、卸载软件 2yum工具介绍 一、yum工具介绍 1、优势 2、yum源配置文件 二、配置本地源安装软件 1、备份自带的HTTP源 2、编写本地源 3、清除旧的

    2024年02月06日
    浏览(11)
  • Linux运维:网络管理

    提前看:本文是Linux运维的学习笔记,之前的Linux命令基础和shell基础,使我们对Linux有系统的认识,但是这个方面的知识点非常多,今天啥也不干,就整理Linux运维各种范围出现的名词性内容进行解释。 CPU(中央处理器)是计算机的主要组成部分,它负责执行计算机程序中的

    2024年02月03日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包