【操作系统】2.用户和权限

目录

[1. 用户权限和切换](#1. 用户权限和切换)

[2. 权限的暂时提升](#2. 权限的暂时提升)

[3. 权限的概念](#3. 权限的概念)

[4. 角色分类](#4. 角色分类)

[5. 文件属性](#5. 文件属性)

[6. 权限更改](#6. 权限更改)

[7. root用户权限特性](#7. root用户权限特性)

[8. 可执行权限注意事项](#8. 可执行权限注意事项)

[9. 更改拥有者和所属组](#9. 更改拥有者和所属组)

[10. 权限的二进制表示](#10. 权限的二进制表示)

[11. 目录权限](#11. 目录权限)

[12. 默认权限和umask](#12. 默认权限和umask)

[13. 多人协作权限管理](#13. 多人协作权限管理)

[14. 粘滞位 (Sticky Bit)](#14. 粘滞位 (Sticky Bit))


1. 用户权限和切换

Linux系统中包括两种主要用户类型:

  • root超级用户:拥有最高权限

  • 普通用户:权限受限

切换用户命令

  • susu -:从普通用户切换成超级用户

  • Ctrl+D:退回普通用户

su/和su - 的区别

  • su/:目录不变,仅切换用户身份

  • su -:重新登录,路径变化到新用户的家目录

2. 权限的暂时提升

sudo命令 :前面加上sudo,输入普通账号密码,即可短暂提升权限。

使用场景 :安装软件(到/user/bin中)

原理:为什么输入普通用户的密码可以提升权限到root?

  • 白名单机制:信任用户名单

  • 管理员可以将普通用户加入到白名单中

  • 只有在白名单的用户才可以短暂提权

注意 :普通用户加上sudo后,如果不在白名单中,只会报错"不信任"。

3. 权限的概念

作用:控制用户行为,防止错误发生。

权限机制

  1. 首先限制的是角色(人)

  2. 其次要求目标必须是对应属性

  3. 权限 = 角色 + 目标属性

4. 角色分类

Linux系统中有三种角色:

  1. 拥有者 (Owner):文件的所有者

  2. 所有组 (Group):文件所属的用户组

  3. 其他用户 (Other):既不是所有者也不在所属组的用户

所有组的作用:假设一个文件要让同组的人看,但不想让对手看到,就可以将同组放到所有组,对手保持other。这样做可以进行更加精细化的权限管理。

5. 文件属性

文件属性包括三种权限:

  • 读 (r):读取文件内容

  • 写 (w):修改文件内容

  • 可执行 (x):执行文件

当用ll查看文件的属性时,会出现如:-rw-r--r--

权限解析

  • 第一个-:文件类型标识

  • 之后有三组三个字符:

    1. 第一组 (rw-):对于拥有者,这个文件可读可写不可执行

    2. 第二组 (r--):对于所属组,这个文件可读不可写不可执行

    3. 第三组 (r--):对于其他用户,这个文件可读不可写不可执行

因此文件的权限就可以用"角色+目标属性"描述。

6. 权限更改

作为拥有者,可以用chmod修改权限。

角色标识

  • u:用户(拥有者)

  • g:所属组

  • o:其他用户

示例

bash

复制代码
chmod u-r test.txt    # 减去拥有者的读权限
chmod u+r test.txt    # 加上拥有者的读权限

重要规则

  • 当减去读权限后,访问文件会出现"Permission denied"

  • 组成员有但所有者没有的权限,所有者也不可以执行

  • 在CentOS下,用户角色确定顺序:拥有者 → 所属组 → other

7. root用户权限特性

root用户(超级用户)拥有最高权限,可以绕过普通权限限制。

可以看到,虽然对于other不能写,但是root依旧可以读写文件。

8. 可执行权限注意事项

重要:拥有可执行权限 ≠ 文件可执行,还需要文件本身是有效的可执行程序。

9. 更改拥有者和所属组

命令

  • chown:更改文件拥有者

  • chgrp:更改文件所属组

限制 :普通用户不能直接把文件所有者改为别人,否则就乱套了,需要sudo短暂提权后才能更改。

10. 权限的二进制表示

由于rwx权限都为非黑即白,可以直接用0和1表示是否有对应的权限。

二进制表示

  • r = 4 (100)

  • w = 2 (010)

  • x = 1 (001)

示例

  • rw- = 110(二进制)= 6(十进制)

  • rw-rw-r-- = 664

快捷修改权限

bash

复制代码
chmod 664 1.txt

11. 目录权限

目录权限的特殊性

  • 想进入一个目录,需要x权限(可执行权限)

  • r权限:查看目录的文件列表

  • w权限:在目录中创建、删除文件

将目录权限改为666(只保留读写)后,就无法进入了。

默认设置:创建目录时,默认给予rwx权限。

Linux用户隔离方式:只有目录的拥有者才拥有完整的rwx权限。

12. 默认权限和umask

新建文件的默认权限

  • 普通文件:666(可读可写不可执行)

  • 目录文件:777(可读可写可执行)

umask(权限掩码)

  • 最终权限 = 默认权限 & (~umask)

  • 原因:凡是在umask中出现的权限都不应该在最终权限中出现

umask的作用

  • 在特殊情况下配置权限掩码可以控制默认权限

  • 让代码权限设置更加可控

13. 多人协作权限管理

场景:先用root账号在普通用户路径下创建一个文件,设置成别人不可读写。

关键发现

  1. 普通账户不可读写,但是可以删除文件

  2. 这是合理的,因为删除与文件的权限无关,只与路径权限有关

  3. 一般情况下不会出现别人的文件

协作方案

既然用户无法进入到别的用户的目录,那么如何两人一起配置文件?

  • 可以放到共享目录(如根目录下的共享文件夹)

14. 粘滞位 (Sticky Bit)

粘滞位 (t):在有t属性的目录里,就算有权限也不能删别人的文件。

设置粘滞位

bash

复制代码
chmod +t tmp

设置了粘滞位的目录会带上t标志。

应用场景 :公共目录(如/tmp)通常设置粘滞位,防止用户误删他人文件。

相关推荐
甘韦2 小时前
CentOS 7更换阿里云的源
linux·阿里云·centos
写代码的学渣2 小时前
nmon下载安装使用方法
linux·运维
GCKJ_08242 小时前
【观成科技】银狐再进化:新型变种加密通信机制分析
运维·服务器·网络
Lueeee.2 小时前
RTMP协议
linux·网络
吃不饱的得可可4 小时前
【Linux】System V消息队列与责任链模式
linux·运维·责任链模式
G_H_S_3_10 小时前
【网络运维】Docker 存储:镜像层与数据卷的管理应用
linux·运维·网络·docker
还鮟12 小时前
靶机远程控制实验命令与入门实践(Linux)
linux·网络·安全
TG:@yunlaoda360 云老大13 小时前
华为云国际站代理商备份策略设置过程中遇到问题如何解决?
服务器·数据库·华为云
手揽回忆怎么睡13 小时前
Alibaba Linux 8安装jdk25
linux·运维·服务器