Linux 权限

Linux权限知识要点总结

一、Linux用户类型

用户类型 命令提示符 权限特点
超级用户(root) # 可以在Linux系统下做任何事情,不受限制
普通用户 $ 在Linux下做有限的事情

用户切换命令

bash 复制代码
su [用户名]      # 切换用户
su root          # 切换到root用户(需要输入root密码)
su user          # 从root切换到普通用户user

二、文件访问者的分类(人)

类别 代号 说明
所有者 u (User) 文件和文件目录的所有者
所属组 g (Group) 文件和文件目录的所有者所在的组的用户
其他用户 o (Others) 既不是所有者也不是所属组用户的其他用户
所有用户 a (All) u+g+o 三者合称

三、文件类型与访问权限(事物属性)

文件类型(第一个字符标识)

字符 文件类型
- 普通文件
d 目录文件夹
l 软链接(类似Windows快捷方式)
b 块设备文件(硬盘、光驱等)
p 管道文件
c 字符设备文件(屏幕等串口设备)
s 套接口文件

基本权限(三位一组)

权限 字符 数值 对文件的作用 对目录的作用
r 4 读取文件内容 浏览目录信息
w 2 修改文件内容 删除/移动目录内文件
执行 x 1 执行文件 进入目录
无权限 - 0 不具有该项权限 不具有该项权限

权限的字符表示与八进制数值对应

权限 二进制 八进制
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

四、权限查看(ls -l 输出解析)

bash 复制代码
[whb@bite-alicloud test]$ ls -al
total 12
drwxrwxr-x 3 whb whb 4096 Jan 11 15:01 .
drwx------ 22 whb whb 4096 Jan 11 14:21 ..
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir/
-rw-rw-r-- 1 whb whb 0 Jan 11 14:22 file.txt

字段解析

复制代码
-rw-rw-r--  1  whb  whb   0  Jan 11 14:22  file.txt
│          │   │    │     │        │           │
│          │   │    │     │        │           └─ 文件名
│          │   │    │     │        └───────────── 修改时间
│          │   │    │     └────────────────────── 文件大小
│          │   │    └──────────────────────────── 所属组
│          │   └───────────────────────────────── 所有者
│          └───────────────────────────────────── 硬链接数
└──────────────────────────────────────────────── 文件类型+权限

权限位分解- rw- rw- r--

  • 第1位:- → 普通文件
  • 第2-4位:rw- → 所有者权限:读+写
  • 第5-7位:rw- → 所属组权限:读+写
  • 第8-10位:r-- → 其他用户权限:只读

五、权限修改命令

1. chmod --- 修改文件权限

格式chmod [参数] 权限 文件名

常用选项-R 递归修改目录下的所有文件

方式一:符号方式(u/g/o/a ±= r/w/x)
bash 复制代码
chmod u+w /home/abc.txt    # 所有者增加写权限
chmod o-x /home/abc.txt    # 其他用户去掉执行权限
chmod a=x /home/abc.txt    # 所有用户赋予执行权限
方式二:八进制数字方式
bash 复制代码
chmod 664 /home/abc.txt    # rw-rw-r--
chmod 640 /home/abc.txt    # rw-r-----
chmod 755 /home/abc.txt    # rwxr-xr-x

2. chown --- 修改文件所有者

格式chown [参数] 用户名 文件名

bash 复制代码
chown user1 f1              # 将f1的所有者改为user1
chown -R user1 filegroup1   # 递归修改目录下所有文件

3. chgrp --- 修改文件所属组

格式chgrp [参数] 用户组名 文件名

bash 复制代码
chgrp users /abc/f2         # 将f2的所属组改为users
chgrp -R users /abc         # 递归修改目录下所有文件

六、默认权限与umask

默认权限

文件类型 默认权限(八进制)
普通文件 0666(rw-rw-rw-
目录 0777(rwxrwxrwx

umask 的作用

实际创建的文件权限 = 默认权限 & ~umask

bash 复制代码
umask                    # 查看当前umask值
umask 044                # 设置umask为044

示例

  • 超级用户默认umask:0022
  • 普通用户默认umask:0002

新建文件/目录的最终权限

假设umask=0022:

  • 新建文件:0666 & ~0022 = 0644(rw-r--r--
  • 新建目录:0777 & ~0022 = 0755(rwxr-xr-x

七、目录权限的特殊说明

权限 作用 说明
r(读) 浏览目录内容 可用ls查看目录下的文件
w(写) 创建/删除文件 可在目录中创建或删除文件
x(执行) 进入目录 可用cd进入目录

重要陷阱

  • 没有 x 权限 :无法 cd 进入目录,即使有 r 权限也无法读取
  • xr :可以 cd 进入,但不能 ls 查看内容
  • w 权限:即使不是文件所有者,也可以删除目录中的文件!

八、粘滞位(Sticky Bit)

为什么需要粘滞位?

用户如果有目录的w权限,就可以删除目录中的任何文件(无论是否为自己创建),这存在安全隐患。

粘滞位的作用

设置粘滞位后,目录下的文件只能由以下人员删除

  1. 超级管理员(root)
  2. 该目录的所有者
  3. 该文件的所有者

设置方法

bash 复制代码
chmod +t /home/        # 给/home目录添加粘滞位
ls -ld /home/          # 查看,权限末尾会显示't'
# 输出:drwxrwxrwxt ...

九、sudo 权限分配

配置文件

/etc/sudoers(需用visudovi编辑)

格式

复制代码
接受权限的用户  登陆的主机 = (执行命令的用户) 命令

使用示例

bash 复制代码
sudo -u root /usr/sbin/useradd u2   # 以root身份执行命令

十、权限速查表

命令 作用 示例
chmod u+x file 所有者增加执行权限 给文件添加可执行
chmod 755 file 设置权限为rwxr-xr-x 常用目录权限
chmod 644 file 设置权限为rw-r--r-- 常用文件权限
chown user file 修改文件所有者 转移文件所有权
chgrp group file 修改文件所属组 修改组归属
umask 022 设置权限掩码 新文件权限644
chmod +t dir 设置粘滞位 保护目录下文件
相关推荐
拳里剑气1 小时前
Linux:权限
linux·学习方法
ole ' ola1 小时前
Linux DDR内存使用情况
linux·运维·服务器
Kingairy1 小时前
Linux 机器信任关系
linux·运维·服务器
流浪0012 小时前
Linux系统篇(一):从零入门操作系统:冯诺依曼体系到进程的完整理解
linux·运维·服务器
mounter6252 小时前
破局与守正:eBPF 在 Linux 内存管理中的应用、演进与重构构想
linux·服务器·网络·mmu·ebpf·linux kernel
STDD3 小时前
Linux Namespace:容器隔离的底层原理,PID、网络、挂载隔离实战
linux·运维·网络
Demon1_Coder3 小时前
智能体的自定义工具
java·linux·前端
gf13211113 小时前
【精确查找python脚本是否在运行】
linux·前端·python
Sunny Boy 0013 小时前
linux环境编译Pro*C 源文件(.pc文件)
linux·c语言·oracle