Linux中常见的权限问题

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


前言

在了解完上一篇文章 Linux权限的理解与操作 之后,还有一些比较常见的权限问题需要我们去了解。其中包括目录的权限,umask 以及 粘滞位的使用。


1. 目录权限

问题一:进入一个目录,需要什么权限? —— 可执行权限(x)

问题二:查看目录下的文件列表,需要什么权限? —— 读权限(r)

问题三:在目录中创建文件或目录,需要什么权限? —— 写权限(w)


2. umask

首先,我们需要清楚,在 Linux 下默认,一个目录被创建,起始权限是从:777,而一个普通文件被创建,起始权限是从::666 (注意:这里强调的都是起始权限!)

那……什么是 umask呢?—— umask 可以称为权限掩码,我们可以理解为,凡事在 umask 中出现的权限,都不应该出现在文件或目录的最终权限中。

Linux中常见的权限问题,Linux系统,linux,命令模式,bash

在命令行中,我们也可以通过 umask 来查看当前的权限掩码是多少,而系统默认的 umask 的值就是0002

Linux中常见的权限问题,Linux系统,linux,命令模式,bash

但是我们又可以看到,我们所创建出来的文件或者目录,它们的默认权限,都不是上述所提到的起始权限。目录的默认权限为 775,文件为664,与 Linux 规定的起始权限对不上啊,那我们所看到的默认权限是如何得到呢??

联想到 umask 的值为 0002,我们以目录来举例,目录的起始权限为777,权限掩码为002,起始权限减去 umask 刚好不就是我们所看到的目录的默认权限吗!!??

但是这样去推断默认权限与起始权限之间的关系,是不正确的!

我们创建出来的目录或文件,他们的最终权限的算法可以表示为:最终权限 = 起始权限 & (~umask)

我们同样以目录为例,给大家做一下演示:
Linux中常见的权限问题,Linux系统,linux,命令模式,bash

其实我们不难发现,最终权限的本质就是,将起始权限中umask为1的二进制位变为0,就是我们所看到的最终权限。

如果我们想根据自己的需求来修改目录或者文件的最终权限的话,我们也可以通过修改 umask 的值来达到修改创建目录或文件时的默认权限。

Linux中常见的权限问题,Linux系统,linux,命令模式,bash
我们可以看到,当我们将 umask 的值修改为太极端时(比如777),再根据最终权限的算法,就会出现创建出来的文件或目录的权限都为空的情况,所以在修改 umask 这件事上,一般的建议是,根据实际需求修改即可


3. 粘滞位

在讲粘滞位之前,我们需要再对权限先做一些铺垫,以方便我们了解清楚粘滞位的作用。

示例一:

Linux中常见的权限问题,Linux系统,linux,命令模式,bash

示例二:

Linux中常见的权限问题,Linux系统,linux,命令模式,bash

因此我们可以先得出一个结论:删除一个文件,参考的不是当前用户对该文件是否具有读权限,而是参考当前用户对于该文件所在目录是否具有读权限, 如果当前用户对该文件所在的目录没有读权限,即便对该文件具有读权限,也无法删除该文件!

示例三:

Linux中常见的权限问题,Linux系统,linux,命令模式,bash

因此,我们又一次证明了上述结论,删除文件参考的是当前执行操作的用户对该文件所在目录是否具有读权限,而不依赖于对该文件对自己的权限,即便自己不是文件的拥有者,依旧可以删除该文件。

正是由于该种情况的存在,导致了一些问题隐患:
例如,在公司时,一定是存在需要几个人或者几十个人一起共同为了维护一个项目而成立的团队,而每个团队或许会有一个公共使用的目录,为了使团队各成员能够在该目录下进行正常工作,那么就需要对团队成员都开放该目录的读写执行权限。根据示例三,我们如果不需要让除了自己的其他人查看自己的文件,甚至修改自己的文件,我们可以将文件所对应的角色的权限清除,以达到该目的。但是!又根据上述所提及的,删除一个文件参考的并不是该用户对文件是否具有读权限,只要该用户对文件所在目录具有读权限,那么就能够删除该目录中的所有文件!所以……这不就扯淡了吗???

大家都在一个目录下共事,我可以阻止其他人查看或者修改我的文件,但是,我无法阻止其他人删除我的文件!

而上述这种情况,在 linux 系统中也有具体的体现。

Linux中常见的权限问题,Linux系统,linux,命令模式,bash
在系统的根目录中,存在一个tmp目录,该目录即为linux中的所有用户共享。

对于多用户在同一个目录环境下共事且各用户都具有对该目录的读写执行权限的情况下,为了解决其他人能够删除自己的文件的问题,如果我们将该目录的读权限去除掉,那么确实解决了其他人无法删除自己文件这个问题。但是!同时其它人,包括自己,都无法在这个目录下创建以及修改文件,那么如何达到共事的目的呢?

所以,为了很好的解决这个问题,在 Linux 中,就有了粘滞位的存在。粘滞位通俗来讲,就是使所有用户均有在该目录读写执行的权限,但无法删除其它用户所创建的文件!


对目录添加粘滞位:

chmod +t 目录名
//这里不需要指定u或者g,直接 +t 即可

粘滞位的效果演示:

Linux中常见的权限问题,Linux系统,linux,命令模式,bash

但是这里需要注意的是:粘滞位只能给目录设置!
同时,粘滞位的添加或删除,都只能由创建该目录的用户执行,也即拥有者,而一般情况下,需要创建具有粘滞位的目录,通常为 root 用户。


结语

关于 Linux 中常见的权限问题全部讲完,如果该文章能给你带来一定的帮助,或者是收获,我很开心。
同时,觉得对你有帮助的伙伴们,也可以 点赞👍 + 收藏⭐️ + 关注➕ 支持一下!
感谢各位观看!!文章来源地址https://www.toymoban.com/news/detail-731681.html

到了这里,关于Linux中常见的权限问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 常见Linux 命令,可以解决日常99%的问题

    1、基本命令 2、关机 3、文件和目录 4、文件搜索 5、挂载一个文件系统 6、磁盘空间 7、用户和群组 8、文件的权限 9、文件的特殊属性 使用 “+” 设置权限,使用 “-” 用于取消 10、打包和压缩文件 11、RPM 包 (Fedora, Redhat及类似系统) 12、YUM 软件包升级器 (Fedora, RedHat及类

    2024年01月22日
    浏览(44)
  • linux小技巧-bash: ./test: 权限不够

    在linux系统调试或者驱动安装时,经常遇到这样或者那样的权限不够的问题。 bash: ./test: 权限不够提示: 提示:这里填写问题的分析: 主要是在非root模式下,权限不够,而在有些情况下,即使使用sudo指令进行操作,发现也不能进行操作 提示:这里填写该问题的具体解决方案

    2024年02月11日
    浏览(44)
  • Linux操作系统基础(七):Linux常见命令(二)

    文章目录 Linux常见命令(二) 一、kill命令 二、ifconfig命令 三、clear命令 四、重启与关机命令 五、which命令 六、hostname命令 七、grep命令 八、|管道 九、useradd命令 十、userdel命令 十一、tar命令 十二、su命令 十三、ps命令 作用:kill命令用于终止执行中的程序 格式: 案例: 作

    2024年02月19日
    浏览(59)
  • Linux系统知识4—Linux的root用户,su 和 exit 命令,sudo 命令,用户和用户组管理,getent,查看权限控制,修改权限控制 -chmod,修改权限控制-chown

    目录 一.Linux的root用户 1.1 root用户(超级管理员) 1.2 su 和 exit 命令 1.3 sudo 命令 1.为普通用户配置 sudo 认证 二.用户和用户组管理 2.1用户,用户组 2.2用户组的管理 2.3用户管理 2.4.getent 三.查看权限控制 3.1认知权限信息 1.序号1,表示文件,文件夹的权限控制信息 2. 序号2,表

    2024年01月17日
    浏览(72)
  • 【Linux面试题及答案:了解Linux操作系统、常见发行版及基本命令】

    一、什么是Linux操作系统? 答:Linux是一种开源的操作系统,它基于UNIX操作系统开发而来。Linux具有稳定性、可靠性和安全性的特点,并且可以运行在各种硬件平台上。 二、Linux有哪些常见的发行版? 答:Linux有许多不同的发行版,常见的有Ubuntu、Debian、CentOS、Fedora、Red Hat等

    2024年02月08日
    浏览(50)
  • Docker——认识Docker & 常用命令 & Linux中安装docker & 常见问题及其解决

    1.认识docker,docker和虚拟机对比; 2.docker的架构,客户端,镜像,容器,仓库; 3.docker常用的命令,docker exec,inspect,ps; 4.Linux安装docker,更换镜像源,ipv4转发开启; Docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用

    2024年02月16日
    浏览(45)
  • Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念

    首先,用户下达指令需求。此时Linux操作系统的内核kernel,并不会直接接收用户下达的指令,因为操作系统不擅长跟用户打交道。那么指令要如何下达呢?这就命令行解释器来对用户的指令进行处理。 shell对于Linux主要是对指令进行解析,解析指令给Linux内核。反馈结果在通过内

    2024年02月06日
    浏览(54)
  • Linux命令-builtin命令(执行bash内建命令)

    用于执行指定的bash内建命令。 builtin 命令调用的bash内建命令优先于同名的外部命令及同名的shell函数。 shell-builtin(可选):要调用的bash内建命令。 arg(可选):传递给bash内建命令的一到多个参数。 返回该内建命令执行的返回值,除非传递的不是bash内建命令或该内建命令

    2024年02月19日
    浏览(108)
  • 【Linux】文件系统中inode与软硬链接以及读写权限问题

    我们接下来以磁盘举例: 文件=文件内容+文件属性 Linux中文件内容与属性是分开存储的。 文件内容:在数据块中存着 文件属性:在inode中存着 Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子 超级块(

    2024年02月05日
    浏览(73)
  • linux bash中 test命令详解

    test 命令用于检查某个条件是否成立。它可以进行数值、字符和文件三方面的测试。 1、数值测试 -eq  等于 -ne  不等于 -gt  大于 -ge  大于或等于 -lt  小于 -le  小于或等于 例如,我们可以测试两个变量是否相等: 2、字符串测试 =  等于 !=  不等于 -z  字符串长度是否为0,长

    2024年02月09日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包