Linux chmod命令教程为初学者

有时你在Linux机器上创建一个bash脚本。 但是当您尝试运行它时,您会收到权限错误。 你是做什么? 简单,假设你在Ubuntu上,右键单击文件的图标,转到“权限”选项卡,并启用“允许执行文件作为程序”选项。 但是如果要求是从命令行进行这种改变呢?

如果您是Linux的新手,并且正在寻找通过命令行更改文件/目录权限的方法,您将很高兴知道存在一个命令 - 配置chmod - 可以让您轻松实现。 在本教程中,我们将讨论此命令的基础知识,并提供说明如何在各种场景中使用的示例。

请注意,本教程中提到的所有示例和说明都已在Ubuntu 16.04LTS上进行了测试,而我们使用的chmod版本为8.25。

Chmod基础知识

考虑以下ls命令示例:

输出中的第一列是我们的兴趣。 留下初始的“ - ”(表示文件的类型),列中的剩余字段可以进一步细分为:rw-,rw-和r--。 这些是文件所有者,文件所属的组以及其他文件所涉及的权限。

这意味着,所有者具有读取(r)和写入(w)权限。 群组也是如此。 但是,其他的只有文件的读取权限。 请注意,我们假设该文件是由当前用户拥有的。

现在假设要求是给予所有人执行此文件的权利。 以下是如何做到这一点:

chmod +x script.sh

现在有权限:

所有者,组以及其他人的权限中的额外“x”表示现在每个人都有该文件的执行访问权限。

但是,更有可能的是,您可能不希望每个人对文件执行访问。 如果要求仅授予所有者/当前用户对script.sh的执行访问权限,该怎么办?

那么,为此,现在的第一步是收回所有人的执行访问权限,使用以下命令可以执行以下操作:

chmod -x script.sh

然后明确授予业主:

chmod u+x script.sh

正如你所猜测的,'u + x'表示授予(+)所有者/当前用户(u)执行(x)访问该文件。 同样,对于组,你可以使用'g',而对于其他人你可以使用'o'。

请注意,只要您想/全部授予/撤销一组常用权限,您可以使用'a'而不是'ugo'。 我的意思是,这个:

chmod ugo-x script.sh

可以替换为:

chmod a-x script.sh

另外,请记住,如果没有这些('u','g','o'和'a')被明确指定,那么默认值也被假定为'a'。

继续,如果你愿意,你也可以简单地复制授予所有者/当前用户的权限,并让他们为组或其他人授予。 为此,使用符号'='。

例如,要将所有者/用户权限复制到组,请使用以下命令:

chmod g=u script.sh

另一种情况可能是复制特定文件的权限并将其用于您的文件。 为此,请使用--reference命令行选项。 以下是使用此命令行选项的一般模板:

chmod --reference=[source-file] [destination file]

在上述命令中, source-file是要复制其权限位的文件, destination-file是要更改其权限位的文件。

进一步说,还有一个数字符号(也称为八进制表示),您可以使用它来告诉chmod更改权限。 在这种模式下,您可以使用三个数字:4,2和1.当4是读取时,另外两个数字分别用于写入和执行。

例如,考虑以下示例:

现在,假设任务是为所有者/用户添加执行权限,删除写权限,但添加执行权限组,并删除其他人的所有权限。 这可以做到如下:

chmod 750 script.sh

在上述命令中,'7'是用户,这是4 + 2 + 1的结果,因为用户的要求是具有所有权限。 类似地,'5'用于组,其中4 + 0 + 1的结果作为要求是仅给出分组的读取和执行权限。 最后,0是0 + 0 + 0的结果,因为要求是撤销其他人的所有权限。

对于那些处理符号链接的人来说,值得一提的是:

chmod never changes the permissions of symbolic links; the chmod system call cannot change their permissions.  This is not a problem since  the
permissions  of  symbolic links are never used.  However, for each symbolic link listed on the command line, chmod changes the permissions of
the pointed-to file.  In contrast, chmod ignores symbolic links encountered during recursive directory traversals.

结论

chmod命令可能不是您每天可能需要的命令,但它是一个非常有用/重要的工具,您应该了解。 在本教程中,我们讨论了与此工具相关的大部分基础知识,我们讨论的示例旨在使这些基础知识清晰。

请注意,我们的讨论主要集中在文件上。 在使用chmod和目录时,应该注意一些细节。 对于所有这些信息(以及关于chmod的更多细节),请转到该工具的手册页

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏