学习 chmod命令设置Linux文件或目录访问权限

2023年 7月 10日 33.5k 0

UNIX/Linux系统中,每个文件或目录都关联着3种类型的权限,这些权限控制着对它们的访问权限。这些权限是读取、写入和执行。这允许或防止用户读取文件或向文件写入。执行权限允许用户将文件作为脚本或可执行文件运行。

在本教程中,我们将学习Linux中的chmod命令。

什么是chmod命令

chmod命令用于更改Linux中文件系统对象(如文件和目录)的访问权限。它也用于更改特殊标志,如SUID、SGID和粘着位。

您可以使用ls -l命令来检查由r、w和x表示的文件模式。

Linux文件权限

在Linux/Unix等类Unix操作系统中,每个文件和目录都由用户和组拥有。当我们谈论Linux文件权限时,涉及到文件所有者、组所有者和权限。

有三个基于用户的权限组:

  • 所有者 - 拥有文件或目录的用户。默认情况下,当用户创建文件或目录时,相同的用户将成为其所有者。
  • 组 - 拥有文件或目录的组。组中的所有成员将在文件或目录上具有相同的访问权限。
  • 其他 - 不是文件或目录所有者且不属于组的用户。这意味着“所有人”或以另一种方式说的“世界”。

使用chown命令可以更改文件和目录的所有权。要仅更改文件或目录的组,可以使用chgrp命令。默认的文件和目录权限基于umask设置。

每个文件或目录有三种文件权限类型:

  • 读取
  • 写入
  • 执行

字符表示读取是r,表示写入是w,表示执行是x

读取权限

文件的读取权限表示可以打开和读取文件。

目录(文件夹)的读取权限表示用户可以列出目录的内容。

写入权限

文件的写入权限表示可以更改文件(更改或修改)。

目录的写入权限表示可以更改目录内容。例如,用户可以在目录中创建新文件、删除或重命名文件。

执行权限

文件的执行权限表示可以执行文件。例如,用户可以执行程序或shell脚本文件。

目录的执行权限表示用户可以更改(cd)到目录。但这不会允许用户列出目录内容。

特殊权限模式

除了读取、写入和执行外,您还可以为文件和目录分配一些特殊权限模式。特殊权限模式包括SUID(setUID)、SGID(setGID)和粘着位。

当文件上设置了SUID位时,文件始终以拥有文件的用户身份运行,而不是以启动程序的用户身份运行。使用SUID的Linux命令的一个示例是ls -l /usr/bin/passwd,当普通用户运行该命令时,会获得提升的特权。

当文件上设置了SGID时,有效组将设置为文件的组。在执行程序时,用户将获得文件组权限。

粘着位通常设置在目录上。一旦在目录上设置了粘着位,则该目录内的文件或目录只能由文件所有者或root更改。

如何在Linux中执行chmod

chmod使用符号模式或数字模式来指定权限。您需要root、文件所有者或sudo用户特权才能更改文件权限。

使用数字模式更改文件/目录权限的chmod

chmod数字模式也称为绝对模式。这是最常用的方法。

读取、写入和执行分配具有特定值的数字,如下所示:

  • 读取权限:4
  • 写入权限:2
  • 执行权限:1

这些数字可以组合在一起来表示权限组合,例如:

  • 读取和写入权限:4+2=6
  • 读取、写入和执行权限:4+2+1=7

然后,将这些数字用于每个用户类别的权限组合,例如:

  • 文件所有者:7
  • 文件所属组:6
  • 其他用户:5

要使用数字模式更改文件/目录权限,请按照以下步骤操作:

  • 使用ls -l命令查看文件/目录的当前权限。
  • 使用数字模式指定要更改的权限。例如,要将文件的所有者权限更改为读取、写入和执行,请使用数字模式chmod 700 filename
  • 再次使用ls -l命令检查文件/目录的新权限是否已应用。
  • 使用符号模式更改文件/目录权限的chmod

    符号模式是根据当前权限状态和指示符更改文件/目录权限的一种方法。符号模式包括以下指示符:

    • + 添加权限
    • - 删除权限
    • = 设置权限

    符号模式还使用以下字符表示用户类别:

    • u 文件所有者
    • g 文件所属组
    • o 其他用户
    • a 所有用户

    要使用符号模式更改文件/目录权限,请按照以下步骤操作:

  • 使用ls -l命令查看文件/目录的当前权限。
  • 使用符号模式指定要更改的权限。例如,要将文件的所有者权限更改为读取、写入和执行,请使用符号模式chmod u+rwx filename
  • 再次使用ls -l命令检查文件/目录的新权限是否已应用。
  • 有用的chmod命令示例

    让我们通过数字和符号方法检查一些使用chmod命令更改权限的示例。

    chmod 755 目录名
    

    这相当于 chmod u=rwx,go=rx。为所有者设置读、写和执行权限(完全权限),为其他用户设置读和执行权限。

    chmod +x 文件名
    

    这相当于 chmod ugo+x 或 chmod u+x,g+x,o+x。为所有者、组和其他用户设置执行权限。

    chmod 750 目录名
    

    这相当于 chmod u+rwx,g=rx,o=。为所有者设置完全权限,为组设置读和执行权限,为其他用户设置无权限。

    chmod u+rwx 目录名
    

    忽略所有权限,为所有者设置读、写和执行权限。

    chmod -R 700 目录名
    

    递归地为目录的所有者设置完全权限。

    chmod go-rwx 文件名
    

    从文件中删除组和其他用户的读、写和执行权限。

    chmod 644 文件名
    

    为所有者分配读和写权限,并为文件的组和其他用户分配只读权限。

    chmod g+x 文件名
    

    将组成员的执行权限分配给文件。

    chmod go-rw 文件名
    

    为文件删除用户和组类的读和写权限。

    结论

    在本教程中,我们学习了Linux中的chmod命令。我们已经学习了Linux权限以及如何更改它们。

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论