Linux的权限

本文介绍了Linux系统中的用户权限管理,包括用户账户的创建、修改和删除,以及用户身份的切换。重点讨论了文件的权限概念,如读取、修改和执行,以及如何通过`chmod`、`chown`和`chgrp`指令修改这些属性。此外,还提到了umask权限掩码的作用,即在创建文件或目录时自动设置默认权限,以及粘滞位如何防止非所有者删除目录中的文件。
摘要由CSDN通过智能技术生成

1.权限

复习一下之前提到过的基本指令。

Linux是一个多人协助的操作系统,不同的用户可以使用同一个Linux操作系统。因此在Linux中有关账户的相关指令也有很多,主要用到的指令有:

  1. “useradd”:创建新用户账户
  2. “passwd”:设置或更改用户账户的密码,“passwd username”会提示你输入新的密码来更改"username"用户账户的密码
  3. “usermod”:修改用户账户的属性。“usermod -aG groupname username”会将用户"username"添加到"groupname"用户组中
  4. “userdel”:删除用户账户。“userdel username”会删除名为"username"的用户账户(请小心使用此指令,删除用户账户也会删除用户的文件和目录)
  5. “su”:切换用户身份。“su username”可以将当前用户切换为"username"用户
  6. “sudo”:以管理员权限执行命令

现在让我们来学习一下Linux下的权限概念。

1.1.对用户来说

1.1.1.账户分类

Linux是多用户操作系统,用户可以分为普通用户和root用户

  1. 普通用户:存在多个用户,其受到权限的约束
  2. root:只有一个root,其具有linux下的最高权限

不同的用户最好用不相同的密码。

1.1.2.用户身份

  1. 拥有者(owner):文件属于哪一个用户
  2. 所属组(group):文件属于哪一个组
  3. 其他人(other):不属于上面任何一个的就是other

1.2.对文件来说

1.2.1.权限的概念

Linux下的指的是文件权限。

权限 = 用户(用户自己的权限) + 文件属性(文件天然就有的权限) 权限 = 用户(用户自己的权限) + 文件属性(文件天然就有的权限) 权限=用户(用户自己的权限)+文件属性(文件天然就有的权限)

例如有的文件天然就不能被执行,您说纯文本文件怎么能够被执行起来呢?

1.2.2.文件的属性

一个文件/目录具有三个属性:读取®、修改(w)、执行(x)。

“ll”命令显示的第一列字符串就显示了一个文件的三属性。

在这里插入图片描述

其中有三组字符串,分别对应owner、group、other三种用户身份,字符串的显示权限就是每个身份的权限,“-”表示没有对应的权限。

除了字符串表示法,还可以使用二进制来完整表述文件/目录的权限。

  1. 对于文件来说三属性代表:可读取文件®、可编辑/复制/移动/删除文件(w)、可运行文件,但是不一定真的可以执行,只是具有执行的权力(x)
  2. 对于目录来说三属性代表:可展开读取目录的自文件或目录列表®、可创建/修改/移动/删除文件或目录(w)、可进入该目录并访问其中的内容(x)

1.2.3.文件的类型

在Linux下不以文件后缀来区分文件类型,虽然我们可以加上后缀来区分文件类型,但是这在系统层面来说是没有意义的,仅仅方便用户显示罢了。

如果开头为“r”表示目录、“-”表示普通文件、“p”表示管道文件(用作通信操作)、“b”表示块设备(最典型的块设备就是磁盘设备)、“c”字符设备(最典型的就是键盘设备和显示器设备)、“l”链接文件(类似Windows的快捷键)……

如果使用“ll”命令显示的第一个字符就显示了一个文件的类别。

在这里插入图片描述

但是注意,为什么有的时候文件的后缀会影响效果呢?比如:使用gcc编译包含C程序的后缀为.txt的文件时,会发现提示文件格式错误。

在这里插入图片描述

这是因为对于gcc来说,它是一个Linux下的软件,Linux系统的确是没有对文件有后缀要求,但是不排除某些软件对文件有后缀要求。

1.3.文件的属性操作

文件的属性操作分为:修改用户身份、修改文件属性。

1.3.1.修改用户身份

默认情况下,如果当前终端用户直接使用mkdir和touch指令后,得到的用户身份是:“所属者为自己”和“用户组为自己”。

  1. 使用“chown”指令可以修改用户的身份为“某所属者”,“sudo chown 所属者 文件/目录”
  2. 使用“chgrp”指令可以修改用户的身份为“某用户组”,“sudo chgrp 所属者 文件/目录”
  3. 还可以同时设置“某所属者”和“某所属组”,“sudo chown 所属者:所属组 文件/目录”
  4. “other”身份是不确定的,也不需要设置,是相对改变的

需要注意的是,要赋予别人身份是需要经过别人同意的。同理,拿回身份也需要别人同意。都是可以使用“root强迫同意”或者使用“sodu强迫同意(sodu使得后续执行命令以root权限级别来执行,但是只是使用权限,是一种临时提升权限的方式,但是这个命令只有添加到信任列表“/etc/sudoers”的用户才可以执行sudo指令,而添加信任列表的操作只有root才可以做到)”。

1.3.2.修改文件属性

默认情况下,如果当前终端用户直接使用mkdir和touch指令后,得到的目录权限和文件权限如是:“rwxrwxr-x”和“-rw-rw-r–”。

  1. 对拥有者:“chmod u+权限,u-权限 文件/目录”
  2. 对所属组:“chmod g+权限,g-权限 文件/目录”
  3. 对其他人:“chmod o+权限,o-权限 文件/目录”
  4. 或者一次设置三种身份的权限:chmod u+/-权限,g+/-权限,o+/-权限 文件/目录”
  5. 或者同步所有身份的权限:“chmod a+/-权限 文件/目录”

但是对于root来说,上面的权限设置完全没有任何限制。
还有一种修改方法,是使用二进制修改,有无权限代表两种状态.
比如“(111 111 111)2 = (777)8”则对应“chmod 777 test.txt”
比如“(000 000 000)2 = (000)8”则对应“chmod 000 test.txt”
比如“(111 110 100)2 = (761)8”则对应“chmod 761 test.txt”

1.3.3.一些奇怪的问题

  1. 如果一个文件的拥有者权限是“-wd”,而所属组是“rwd”那么拥有者是否能读取这个文件呢?答案是不能,因为权限只能认证一次,只要看过所属者的权限,就不再考虑后续的权限设置。
  2. 为什么Linux默认:一个目录被创建后起始权限从777开始,一个普通文件被创建后起始权限是666开始。(默认情况下,如果当前终端用户直接使用mkdir和touch指令后,得到的用户身份是:“所属者为自己”和“用户组为自己”。默认情况下,如果当前终端用户直接使用mkdir和touch指令后,得到的目录权限和文件权限如是:“rwxrwxr-x”和“-rw-rw-r–”。)但是为什么最后我们发现是“775”和“666”呢?答案是受了umask的影响。
  3. 如果别人在我的目录下创建了一个文件,我没有任何的权限,但是我依旧是可以把它删除掉。为什么呢?因为删除文件不是文件本身的属性,而是目录的属性,如果别人进都进不来,更别谈删除什么文件了。但是,这依旧会引发一个问题:如果我是需要和别人在某个特殊的路径下共同协作呢?虽然我可以设置这个文件的读写执行权限,但是我不能阻止别人删除呀!(例如tmp文件就是所用用户共享的文件,包含几乎所有人的临时文件)其实这也简单,让root控制这个目录,将其other权限设置为“o-w”,这样对于root来说,其他用户都是other,都无法删除别人的文件和目录。但是这就又产生了一个问题:other用户们发现不仅不能删除别人的文件,还不能删除自己的,甚至连创建文件都没办法做到。于是我们来到最终的解决方案:粘滞位。

2.umask权限掩码

凡是在umask中出现的权限,都不应该在最终权限中出现。

如果我们输入umask,则出现默认掩码“0002”,我们现在只研究后三个即可。

这个掩码的计算如下:
在这里插入图片描述

我们可以通过“umask”指令自己设置对应的八进制掩码。

umask掩码的存在可以使得创建文件或目录的时候自动设置默认权限,增加系统安全性或隐私性。

3.粘滞位

粘滞位是一个特殊的权限位,该权限的设置命令为:“chmod +t 某个目录”。

粘滞位是为了解决前面第三个问题的,请注意,只有目录才能设置粘滞位,对于文件本身是没有该标志的。

在这里插入图片描述

这个时候就会发现other权限变成了一个“t”字符权限,该权限的表现方式是:

在这里插入图片描述

这样每个用户都可以给自己创建和删除文件,但是不能删除别的用户的文件。

并且,粘滞位一般是谁设置谁取消(除了root)。

另外,粘滞位的设置可以通过使用chmod命令并在权限位中添加数字1(例如,chmod 1777 某目录)来完成。取消粘滞键可以使用“chmod -t 某目录”或者“chmod 0777 某目录”。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

limou3434

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值