Linux:权限的理解
目录
引言:为何Linux需要权限?
一、用户分类与切换
1.1、用户角色
1.2、用户切换命令
二、权限的基础概念
2.1、文件属性
三、权限的管理指令
3.1、chmod:修改文件权限
3.2、chown与chgro:修改拥有者与所属组
四、粘滞位与umask
4.1、问题1:起始权限问题
4.2、关于目录权限
引言:为何Linux需要权限?
想象一下,你的私人日记被陌生人随意修改,或是公司服务器上的关键数据被误删——这类风险在Linux系统中通过权限机制得以有效防范。
作为多用户操作系统的核心安全特性,Linux权限不仅保护用户隐私,还确保系统稳定性。本文将带你深入理解权限管理的每个细节。
一、用户分类与切换
Linux中,不同用户有着不同的权限。所以在讲解权限之前,先了解用户概念:
1.1、用户角色
- 超级用户(root):
权限最高,可执行任何操作(如修改系统文件、管理用户)
类似windows的管理员,但权限比它更大。
- 普通用户:
Linux中除了root用户,其他都是普通用户。
普通用户受权限约束,操作受限。
1.2、用户切换命令
- su + 用户名 :切换用户身份(需要输入目标用户密码)
- exit或ctrl+D:退回原用户
- sudo命令:临时以root权限执行命令(需当前用户密码)
sudo apt update # 普通用户临时提权更新系统
不过目前我们用adduser新建的用户,没有办法执行sudo,因为系统不信任你。除非将普通用户添加到系统的白名单里。普通用户需被添加到/etc/sudoers文件才可使用。
userA ALL=(ALL:ALL) ALL # 允许userA使用sudo执行所有命令
二、权限的基础概念
2.1、文件属性
一个文件创建出来无非就是读/写,有些文件还可执行。
而每个文件/目录的权限由三组角色控制:
拥有者(Owner):文件创建者,拥有最高控制权。
所属组(Group):共享权限的用户组(如开发团队)。
其他人(Others):系统内其他所有用户。
文件类型:
d:文件夹-:普通文件(文本文件,二进制文件等)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
读(r)
文件:查看内容(如
cat test.txt
)。目录:列出内容(如
ls /dir
)。写(w)
文件:修改内容(如
vim test.txt
)。目录:创建或删除文件(需配合
x
权限)。执行(x)
文件:运行脚本或程序(如
./install.sh
)。目录:进入目录(如
cd /project
)。无权限(-)
通过ll指令查看文件属性,下面有详细说明:
以上图test.txt为例说明:
- test.txt:文件类型是普通文件,拥有者权限可读可写不可执行,所属组权限可读可写不可执行,其他人权限可读不可写不可执行
三、权限的管理指令
3.1、chmod:修改文件权限
符号模式:直观增删权限。
chmod u+rwx,g+rx,o-r test # 拥有者加rwx,组加rx,其他人去r
- u(user拥有者)、g(group所属组)、o(other其他)、a(所有角色)
数字模式(八进制):快速设置权限。
chmod 755 test # rwxr-xr-x(7=4+2+1, 5=4+1)
- r=4, w=2, x=1,按角色顺序组合。
3.2、chown与chgro:修改拥有者与所属组
修改拥有者与所属组:
chown alice:developers test.txt # 将文件拥有者设为alice,组设为developers
仅修改s所属组(需root权限):
sudo chgrp team /project/ # 将目录/project的组设为team
四、粘滞位与umask
4.1、问题1:起始权限问题
为什么我们创建普通文件的默认权限是:664,目录文件的默认权限是:775 ???
补充知识:
1、默认给普通文件的起始权限其实是6662、默认给目录文件的起始权限其实是777
3、权限掩码(umask):凡是在umask中出现的权限,不会再最终的文件权限中出现,默认权限掩码是0002
4、最终权限 = 起始权限 & (~umask)
4.2、关于目录权限
对于目录文件:
r:是否允许我们查看指定目录下的文件内容w:是否允许我们在当前目录下进行创建、更改、删除
x:是否允许用户进入对应的目录
mkdir demo
chmod 300 demo # 权限为-wx--x---(可进入但不可查看内容)
cd demo # 允许进入(有x)
touch file.txt # 失败!需目录的w权限
1、普通用户自己的家目录权限是700,这意味着我在我的家目录下创建的文件,别人都看不到
2、有时,我们多个用户想进行文件数据的共享。那么我们所建立的共享文件不能再任何一个人的家目录下
3、一个文件能否被删除,并不由文件本身决定,由这个文件所处的目录决定
4、如果我们去掉了共享文件目录的w权限,我们也无法创建文件,无法共享
5、粘滞位:给目录设置,一般是文件共享,大家可以在目录进行各自文件的增删查改,只允许文件拥有者或 root 能删这个文件,其他人一概不允许,t是一种特殊的x权限。