Unix/Linux - 文件权限/访问模式
你好,有抱负的程序员们!今天,我们将深入探索Unix和Linux文件权限的迷人世界。如果你是新手,不用担心;在本教程结束时,你将成为文件权限专家!让我们一起踏上这段激动人心的旅程。
权限指示符
想象你是宝箱的守护者。你需要决定谁能打开它,谁能放入东西,以及谁能取出东西。这基本上就是Unix和Linux中文件权限的全部内容!
当你使用ls -l
命令列出文件时,你会看到类似这样的内容:
-rwxr-xr-x 1 john users 2048 Jan 15 2023 myfile.txt
让我们分解一下开头的那些神秘字母:
- 第一个字符表示文件类型(
-
表示普通文件,d
表示目录) - 接下来的9个字符代表用户、组和其它人的权限
下面是一个方便记忆的表格,说明每个字母的含义:
字母 | 含义 |
---|---|
r | 读权限 |
w | 写权限 |
x | 执行权限 |
- | 无权限 |
文件访问模式
现在,让我们谈谈这些权限实际上允许你如何操作文件:
- 读(r):查看文件内容
- 写(w):修改或删除文件
- 执行(x):将文件作为程序或脚本运行
这里有一个有趣的方式来记忆:将“r”视为“阅读食谱”,“w”视为“编写食谱”,而“x”视为“执行食谱”(烹饪菜肴)!
目录访问模式
目录有类似的权限,但它们的工作方式略有不同:
- 读(r):列出目录内容
- 写(w):在目录中添加或删除文件
- 执行(x):访问目录及其内容
将目录想象为一个房间。“r”让你窥视内部,“w”让你添加或移除家具,而“x”让你进入房间。
更改权限
现在我们理解了权限,让我们学习如何更改它们!我们使用chmod
命令来执行此操作。chmod
有两种使用方式:符号模式和绝对模式。
符号模式
这就像给出添加或删除权限的指令。以下是基本语法:
chmod [who][+,-,=][permissions] filename
-
who
可以是u(用户)、g(组)、o(其它人)或a(所有人) -
+
添加权限,-
移除权限,=
精确设置 -
permissions
是r、w或x
例如:
chmod u+x myfile.txt
这为用户添加了执行权限。
使用chmod设置绝对权限
绝对模式使用数字来设置权限。每个权限都有一个值:
- r = 4
- w = 2
- x = 1
我们将这些数字相加,为每个类别(用户、组、其它人)设置权限。下面是一个帮助你理解的表格:
数字 | 权限 |
---|---|
0 | --- |
1 | --x |
2 | -w- |
3 | -wx |
4 | r-- |
5 | r-x |
6 | rw- |
7 | rwx |
例如:
chmod 755 myfile.txt
这为用户设置了rwx权限,为组和其它人设置了rx权限。
更改所有者和组
有时,你需要更改文件的所有者或它所属的组。让我们看看如何操作。
更改所有者
要更改文件的所有者,我们使用chown
命令:
chown newowner filename
例如:
chown alice myfile.txt
这将myfile.txt的所有者更改为alice。
更改组所有者
要更改组,我们使用chgrp
命令:
chgrp newgroup filename
例如:
chgrp developers myfile.txt
这将myfile.txt的组更改为developers。
SUID和SGID文件权限
现在,让我们谈谈一些特殊权限:SUID(设置用户ID)和SGID(设置组ID)。这些就像是文件的超级能力!
- SUID:当在可执行文件上设置时,它将以所有者的权限运行。
- SGID:当在可执行文件上设置时,它将以组的权限运行。
要设置这些权限,我们使用带有特殊数字的chmod
:
chmod 4755 myfile # 设置SUID
chmod 2755 myfile # 设置SGID
开头的4设置SUID,2设置SGID。
就这样!你现在对Unix/Linux文件权限有了深入了解。记住,能力越大,责任越大。明智地使用这些权限,以保持你的文件安全。
熟能生巧,所以不要害怕在安全的环境中实验。在你意识到之前,你将像专业人士一样管理文件权限!
Credits: Image by storyset