Unix/Linux - 文件权限/访问模式

你好,有抱负的程序员们!今天,我们将深入探索Unix和Linux文件权限的迷人世界。如果你是新手,不用担心;在本教程结束时,你将成为文件权限专家!让我们一起踏上这段激动人心的旅程。

Unix / Linux - File Permission

权限指示符

想象你是宝箱的守护者。你需要决定谁能打开它,谁能放入东西,以及谁能取出东西。这基本上就是Unix和Linux中文件权限的全部内容!

当你使用ls -l命令列出文件时,你会看到类似这样的内容:

-rwxr-xr-x 1 john users 2048 Jan 15 2023 myfile.txt

让我们分解一下开头的那些神秘字母:

  • 第一个字符表示文件类型(-表示普通文件,d表示目录)
  • 接下来的9个字符代表用户、组和其它人的权限

下面是一个方便记忆的表格,说明每个字母的含义:

字母 含义
r 读权限
w 写权限
x 执行权限
- 无权限

文件访问模式

现在,让我们谈谈这些权限实际上允许你如何操作文件:

  1. 读(r):查看文件内容
  2. 写(w):修改或删除文件
  3. 执行(x):将文件作为程序或脚本运行

这里有一个有趣的方式来记忆:将“r”视为“阅读食谱”,“w”视为“编写食谱”,而“x”视为“执行食谱”(烹饪菜肴)!

目录访问模式

目录有类似的权限,但它们的工作方式略有不同:

  1. 读(r):列出目录内容
  2. 写(w):在目录中添加或删除文件
  3. 执行(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