Linux 入门记录:十三、Linux 扩展权限
一、默认权限
每一个终端都有一个 umask 属性,是用来确定新建文件或目录的默认权限的“掩码”(mask 有“掩码”的含义,至于 u,后面说)。
Linux 中一般有默认的权限掩码,使用命令 umask 用以查看或设置:
umask 查看默认掩码
umask 0022 设置默认掩码
一般地,普通用户(uid 为 500 以上)的权限掩码默认为 0002,root 用户(uid 为 0)的权限掩码默认为 0022。
如果新建了一个文件或目录,那么这个文件或目录的默认权限等于 文件或目录的默认最高权限 & (~ umask) 。
那么,“文件或目录的默认最高权限”是多少呢?一般来说,目录的默认最高权限是 0777,文件的默认最高权限为 0666(去掉了 x 权限,禁止执行,安全考虑)。注意:Linux 的权限值是八进制的!所以,网上的某些所谓十进制减法运算来计算新建文件或目录默认权限的逻辑是错误的。还有什么分情况讨论的,在我看来实在麻烦。用计算机思维来理解计算机,这是我认为最合理、最准确且最简单的思维方式。
怎么记忆和理解这个运算逻辑?
umask,我把它的中文全称记为用于“位取反的权限掩码”。“位取反” 来自 "u",“掩码” 来自 "mask" 。拿这个位取反的权限掩码(~ umask)跟默认最高权限相与 "&",就得到了新建文件(或目录)的默认权限。
怎么理解?
这里主要是“掩码”:掩码是用来和目标数进行位与 "&" 运算,取得目标数里跟掩码的位均为 1 的位组合,并将跟掩码中位为 0 的对应位全部丢弃。掩码的原理是的原理,任何数和 1 相与都是它本身,任何数和 0 相与都是 0。而一个数跟掩码的反码(位取反)进行位与 "&" 运算,得到结果恰恰相反,结果是保留这个数里跟掩码里位为 0 相对应的位,丢弃跟掩码里位为1 相对应的位。
这里的 umask 就是这个作用,用默认最高权限跟取反的 umask 相与,就从默认最高权限里丢弃了 umask 不允许的权限。所以并不是简单的十进制减法运算,例如 umask 值为 0022 和 0033 的时候,普通用户新建文件的默认权限都是 0644(因为 0666 & (~ 0022) 和 0666 & (~ 0033) 的运算结果是一样的),用 rwx 符号表示就是 -rw-r--r-- 。
二、特殊权限
除了普通权限外,还有三个特殊权限:
权限 | 对文件的影响 | 对目录的影响 |
suid |
以文件的所属用户身份执行, 而非执行文件的用户 |
无 |
sgid |
以文件所属组身份执行 |
在该目录中创建的任意新文件的 所属组与该目录的所属组相同, 即子文件自动继承该目录的所属组 |
sticky | 无 |
对目录拥有写入权限的用户仅可以 删除其拥有的文件,无法删除其他 用户所拥有的文件 |
拥有suid权限的passwd命令
Linux 中普通用户的密码口令都保存在 /etc/shadow 文件里,这个文件的权限是只有root用户和root组才可以访问的。那么普通用户是怎么修改自己密码的呢?Linux 提供了 passwd 命令,普通用户使用这个命令来修改自己的密码:
我们看到,这个 passwd 命令的 U 模型里有个 "s" 占用了原来的 "x" 权限,这表示执行该命令的用户拥有 "suid" 权限,以 root 用户身份来运行,所以普通用户可以通过执行 passwd 命令来修改自己的密码,并将它写到 /etc/shadow 文件里。
三、设置特殊权限
设置 suid:
chmod u+s filename
设置 sgid:
chmod g+s filename
设置 sticky:
chmod o+t filename
其中,设置 sgid 权限会使 "s" 替换 G 模型的 "x" 权限,例如:"-rwxr-s---";设置 sticky 权限会使 "t" 替换 O 模型的 "x" 权限,例如:"drwxr-xr-t"。这里我所说的 G 模型、O 模型是 Linux 权限所采用的 UGO 模型。
一般来说,我们使用 sgid 来设置目录的权限,它允许了目录的子文件(或目录)自动继承该目录的所属组,常见的情况例如市场部目录的员工目录自动属于市场部用户组。经常使用 sticky 来设置目录下的用户可以删除自己的文件,但不能删除别人的文件,例如营销部目录的员工文件可以被员工删除,但不能删除同事的文件。
与普通权限一样,特殊权限也可以用八进制数值表示:
suid = 4 (2 ^ 2)
sgid = 2 (2 ^ 1)
sticky = 1 (2 ^ 0)
所以,我们也可以通过以下命令设置:
chmod 4755 filename 普通权限755,所属用户可读可写可执行,所属组和其他用户不可写,特殊权限允许以所属用户身份执行
Linux 入门记录:十三、Linux 扩展权限的更多相关文章
- Linux入门(用户操作及权限)
Linux入门之 用户操作及权限 在一个公司里,老板与员工有上下级之分,员工与员工间也有上下级或同级之分.每个级别在公司的职责不同,权限也不同.在Linux操作系统中也一样,不同的用户身份拥有着不 ...
- Linux 入门记录:二十、Linux 包管理工具 YUM
一.YUM(Yellowdog Updater, Modified) 1. YUM 简介 RPM 软件包形式管理软件虽然方便,但是需要手动解决软件包的依赖问题.很多时候安装一个软件首先需要安装 1 个 ...
- Linux入门基础(三):Linux用户及权限基础
用户基础 用户和组 每个用户都拥有一个userid 每个用户都属于一个主组,属于一个或多个附属组 每个组拥有一个groupid 每个进程以一个用户身份运行,受该用户可访问资源限制 每个可登陆用户拥有一 ...
- Linux 入门记录:六、Linux 硬件相关概念(硬盘、磁盘、磁道、柱面、磁头、扇区、分区、MBR、GPT)
一.硬盘 硬盘的功能相当简单但很重要,它负责记录系统所需要的各种数据.硬盘记录数据有两个方面,一个是硬件方面的存储原理和结构,另外一方面则是软件方面的数据和文件系统.硬盘的主要行为就是数据的存放和取出 ...
- Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密
一.系统启动流程 一般来说,Linux 系统的启动流程是这样的: 1. 开机之后,位于计算机主板 ROM 芯片上的 BIOS 被最先读取,在进行硬件和内存的校验以及 CPU 的自检没有异常后, BIO ...
- Linux 入门记录:十六、Linux 多命令协作:管道及重定向
一.多命令协作 在 Linux 系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现一个或多个很简单的功能.通过将不同功能的命令组合一起使用,可以实现某个复杂功能的. Linux ...
- linux入门教程(六) Linux文件与目录管理
在linux中什么是一个文件的路径呢,说白了就是这个文件存在的地方,例如在上一章提到的/root/.ssh/authorized_keys 这就是一个文件的路径.如果你告诉系统这个文件的路径,那么系统 ...
- Linux入门基础(一):Linux基本操作
命令行BASH基本操作 Shell 用户不能直接操作内核,所以用户操作通过shell传递给内核 shell分为两种 : GUI 图形界面 (linux一般是GNOME) CLI 命令行界面 (linu ...
- 零基础Linux入门之《Linux就该这么学》
本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...
随机推荐
- [计算机网络] TCP的拥塞控制
引言 计算机网络中的带宽.交换结点中的缓存和处理机等,都是网络的资源.在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏.这种情况就叫做拥塞. 拥塞控制就是防止过多 ...
- [C/C++] char data[0](柔性数组)
转自:http://blog.csdn.net/yby4769250/article/details/7294696 在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻 ...
- 【bzoj3772】精神污染 STL+LCA+主席树
题目描述 兵库县位于日本列岛的中央位置,北临日本海,南面濑户内海直通太平洋,中央部位是森林和山地,与拥有关西机场的大阪府比邻而居,是关西地区面积最大的县,是集经济和文化于一体的一大地区,是日本西部门户 ...
- CSS定义input disabled样式
disabled 属性规定应该禁用 input 元素.被禁用的 input 元素既不可用,也不可点击.可以设置 disabled 属性,直到满足某些其他的条件为止(比如选择了一个复选框等等).然后,就 ...
- BZOJ5339:[TJOI2018]教科书般的亵渎——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5339 https://www.luogu.org/problemnew/show/P4593 小豆 ...
- BZOJ4568:[SCOI2016]幸运数字——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4568 https://www.luogu.org/problemnew/show/P3292 A ...
- BZOJ1857:[SCOI2010]传送带——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1857 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送 ...
- CF1073E Segment Sum 自闭了
CF1073E Segment Sum 题意翻译 给定\(K,L,R\),求\(L\)~\(R\)之间最多不包含超过\(K\)个数码的数的和. \(K<=10,L,R<=1e18\) 我 ...
- 洛谷 P1841 [JSOI2007]重要的城市 解题报告
P1841 [JSOI2007]重要的城市 题目描述 参加jsoi冬令营的同学最近发现,由于南航校内修路截断了原来通向计算中心的路,导致去的路程比原先增加了近一公里.而食堂门前施工虽然也截断了原来通向 ...
- java 实验四
北京电子科技学院(BESTI) 实 验 报 告 课程: Java 班级:1352 姓名:黄卫 学号:201352221 成绩: ...