linux怎么设置文件和目录权限 初学者如何玩转(1)

与其他操作系统一样,多个用户可以为每个用户创建用户帐户并共享运行 Linux 操作系统的同一台机器。 但是,只要以共享方式使用任何东西,就会出现隐私问题。 第一个用户可能不希望下一个用户查看/编辑/删除他的文件。

Linux Terminal 在处理文件权限方面拥有一些超能力。 我们可以从 Linux 终端授予/撤销每个文件和目录的权限。

什么是文件权限?

文件权限控制用户可以执行的操作。 读取、写入和执行是每个文件可能的 3 个操作。 用户分为 3 大类。 他们是普通用户、组和其他人。 Linux 允许用户在非常细粒度的级别上设置权限。 您可以在文件系统的每个可能位置保护您的文件或目录。

好像很有趣吧?

这里面涉及到三个重要的命令

  1. chmod(更改模式)*
  2. chown(更改所有权)
  3. chgrp(更改组)

其中 chmod 是最重要的命令之一。 在这篇文章中我们只讨论 chmod 命令,其他命令将在以后的文章中继续讨论。

让我们深入研究 chmod 命令。

文件

在我们继续之前,我想确保您清楚文件的读取、写入和执行操作。 前 2 个(读和写)是不言自明的。 它确定用户是否可以读/写文件。

但是,什么是可执行文件?

如果文件中包含一系列指令,则称该文件是可执行的。 一个更好的例子是脚本文件(Shell Scripts)。

什么是 chmod 命令?

chmod 是一个命令,用于将文件或目录的权限更改为对应权限类型。

这是 chmod 命令的语法。

chmod

您需要通过替换上述命令中的操作来授予或撤销权限。

操作

上述语法中的操作分为两类。 让我们在下面探索它们。

用户级别

控制用户级别的权限。

u - 授予用户权限

g - 授予一组权限(一组用户)

o - 授予其他人(不属于上述任何一种情况的人)的许可。

注意:

如果此选项留空,权限将应用于登录用户。 大多数时候它会留空。

文件级别

控制文件级别的权限。

r - 授予读取权限

w - 授予写入权限

x - 授予执行权限

这些操作需要在前面加上“ ”或“-”运算符。

“ ”表示添加新权限,“-”表示删除现有权限。

例如:

chmod r sample.txt

上面的命令为 sample.txt 文件添加了读取权限。

是不是很简单? 让我们继续。

如何使文件可执行?

作为一名开发人员,Linux 是我们团队的默认操作系统。 我们最近聘请了一名实习生,他对 Linux 的了解为零,但对学习和探索充满好奇。 我们最初是通过让他写一些 shell 脚本来训练他的。 因为大多数服务器都运行 Linux 操作系统。 他在互联网上找到了整个代码并复制了它(我们故意给了这样的任务)。

他保存了文件,但无法运行脚本。 他不知道真正的问题。 他开始删除几个代码块并尝试一次又一次地运行。

他反复收到“找不到命令(Command not found)”的错误。

终于,他到达了第一行。 他用打印语句(“echo”命令)替换了该行并运行该文件,希望能看到输出。 但是,他仍然没有超越那个错误。

带着挫败感,他寻求帮助。

我们现在来看问题。

基本上,我们可以通过以下命令执行 .sh 文件。

./install.sh

他运行了相同的命令,但没有用。 因为文件不是可执行格式。 所以我运行了魔法命令来使文件可执行。

chmod x install.sh

linux怎么设置文件和目录权限 初学者如何玩转(2)

现在它是可执行的。 他盯着我看,好像我是个黑客。 理想情况下,这是一个非常简单和基本的概念。

如何从文件中删除权限?

每次我都会被我的同事Divad愚弄,我们在内部做很多爱好项目,我们写了一些shell脚本来快速部署。 每当他写一些脚本时,他总是从该文件中删除所有权限并将更改推送到远程仓库。 因此,每次我必须使用上述命令为我必须执行的操作授予权限时。

让我们快速看一下他用来删除文件权限的命令。

这里我们有一个名为 install.sh 的文件,它具有所有权限(读、写、执行)。 让我们删除这个脚本文件的执行权限。

chmod -x install.sh

您将无法执行此文件并尝试这样做会给您一个错误,如上一个屏幕截图所示。

让我们从文件中删除读取权限。

chmod -r install.sh

读取权限已被删除。 让我们尝试使用 nano(Linux 终端的文件编辑器)读取该文件。 您将能够在底部看到“权限被拒绝”错误。

linux怎么设置文件和目录权限 初学者如何玩转(3)

linux怎么设置文件和目录权限 初学者如何玩转(4)

这同样适用于删除文件的写入权限。

chmod -w install.sh

linux怎么设置文件和目录权限 初学者如何玩转(5)

您可以使用以下命令一起实现上述所有项目。

chmod -rwx install.sh

这是处理文件权限的核心部分,记住我们只是触及了它的皮毛。 尝试理解它并尝试一些示例文件。 因为,谁知道将来,您可能会得到像 Divad 这样的同事。

如何添加/删除目录(文件夹)的权限?

我希望你们中的大多数人在切换到 Linux 后可能会遇到一些目录,例如 /etc、/var、/opt 等。您可能不知道为什么存在这些目录。 但是,您可能会注意到所有这些文件夹都有一个共同点。 也就是说,如果没有 root 权限,您将无法在这些目录中创建文件或文件夹。

安装 Linux 操作系统时,系统会预先配置此设置。

但是,我可以将我的文件夹限制在类似于上述目录的 /home 目录中吗? 答案是肯定的。 您可以通过使用 chmod 命令更改目录的权限来实现此目的。

让我们用一个例子来理解这一点。

我创建了一个名为 locked_directory 的目录,并从该目录中删除了读取权限。 如果我尝试使用 ls 命令读取文件夹的内容,我最终会看到“权限被拒绝”错误消息。

chmod -r locked_directory/

linux怎么设置文件和目录权限 初学者如何玩转(6)

但是,你知道吗,我可以在 locked_directory 中创建另一个名为 dir1 的目录,并读取 dir1 中的文件和文件夹。

linux怎么设置文件和目录权限 初学者如何玩转(7)

那么我们刚才运行的命令的目的是什么? 删除父目录的读取权限应该也删除子目录的读取权限吗?

的确。 这正是我之前告诉你的。 Linux 管理文件权限的粒度级别。

如果要将权限应用于父目录及其所有子目录,则需要使用 chmod 命令传递一个独占标志。

即-R。 它基本上意味着将相同的权限递归地应用于所有子目录(子目录)。 因此,此权限将适用于文件/目录的最终子项。

这是语法,

sudo chmod -R

记住运行命令进行递归操作需要 root 权限。 所以需要在这条命令的开头加上sudo。

sudo chmod -R -r locked_directory

linux怎么设置文件和目录权限 初学者如何玩转(8)

从上面的截图可以看出,递归去除父目录的读权限后,尝试查看子目录文件失败。

处理文件权限的替代方法

或者,您可以使用八进制表示来控制文件权限。

linux怎么设置文件和目录权限 初学者如何玩转(9)

希望你感到困惑。 进一步阅读以清楚地理解。

让我们考虑一个场景。

您想为用户授予读、写和执行权限,为组和其他人授予对install.sh 文件的只读权限?

让我们看看如何使用上述两种方法来实现这一点。

使用符号模式

chmod u rwx,go r install.sh

让我们拆解每个部分并尝试理解它们,

u rwx - 代表为用户增加读、写、执行权限

go r - 代表为群组和其他人添加读取权限

使用八进制模式

chmod 744 install.sh

让我们分解每个数字并尝试理解它们,

第一个数字 (7) 代表用户的权限 — 7 = ( 4 ( read) 2 ( write) 1( execute) )

第二个数字 (4) 代表组的权限 — 4(读取)

第三个数字(4)代表对其他人的许可——4(读)

总结

在本文中,您了解了如何处理基本的文件和文件夹权限。

我希望你们喜欢这个文章。 我对所有人有一个要求,请自己尝试一些复杂的场景,例如具有权限的排列和组合。 这绝对会对您的整个职业生涯有所帮助。

如果您喜欢并学到了新东西,请拍手。

,