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权限也无法读取 - 有
x无r:可以cd进入,但不能ls查看内容 - 有
w权限:即使不是文件所有者,也可以删除目录中的文件!
八、粘滞位(Sticky Bit)
为什么需要粘滞位?
用户如果有目录的w权限,就可以删除目录中的任何文件(无论是否为自己创建),这存在安全隐患。
粘滞位的作用
设置粘滞位后,目录下的文件只能由以下人员删除:
- 超级管理员(root)
- 该目录的所有者
- 该文件的所有者
设置方法
bash
chmod +t /home/ # 给/home目录添加粘滞位
ls -ld /home/ # 查看,权限末尾会显示't'
# 输出:drwxrwxrwxt ...
九、sudo 权限分配
配置文件
/etc/sudoers(需用visudo或vi编辑)
格式
接受权限的用户 登陆的主机 = (执行命令的用户) 命令
使用示例
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 |
设置粘滞位 | 保护目录下文件 |