Linux 中的任何用户帐户都可以调用命令 chmod 吗?

Linux 中的任何用户帐户都可以调用命令 chmod 吗?

由于权限很敏感,因此明确是否允许特定用户运行命令至关重要吗chmod

答案1

不,任何用户都可以运行此命令并且应该能够这样做。此命令是用户如何操作目录或文件上的权限位,这对于使 shell 脚本可执行或使用户可能所属的组可以访问目录至关重要。

例子

  1. 可执行脚本

    $ ls -l reset*
    -rwxrwxr-x 1 saml saml   378 Sep  2 02:46 reset_raw_sorted.bash
    
  2. 访问目录

    $ ls -ld adir
    drwxrwxr-x 2 saml saml 4096 Oct 19 21:28 adir
    

    现在禁用该目录的执行位

    $ chmod -x adir
    $ ls -ld adir
    drw-rw-r-- 2 saml saml 4096 Oct 19 21:28 adir
    

    现在我无法cd进入这个目录

    $ cd adir/
    bash: cd: adir/: Permission denied
    
  3. 控制组对文件和目录的访问

    假设我在这些组中有一个用户

    $ groups
    saml vboxusers jupiter newgrp blah
    

    我想授予 blah 组中的其他用户访问权限adir

    $ ls -ld adir
    drwx---r-x 2 saml blah 4096 Oct 19 21:28 adir
    

    我可以用来chmod删除其他用户权限并限制对用户saml和组的访问blah,如下所示

    $ chmod o-rwx,g+rwx adir
    $ ls -ld adir
    drwxrwx--- 2 saml blah 4096 Oct 19 21:28 adir
    

答案2

任何用户都可以调用chmod并更改他们拥有的任何文件的权限(像往常一样,root 当然可以更改任何文件的权限)。用户不得更改不属于他们的文件的权限 - 这将彻底破坏文件安全!文件的写权限仅适用于文件的内容,不适用于其元数据(例如权限)。

Unix实现自主访问控制:文件的所有者可以自由地允许其他用户访问该文件。

有多种形式的强制访问控制,例如 Linux 的安全框架(SELinux、AppArmor 等),它允许 root 以非 root 用户无法覆盖的方式限制对某些资源的访问。然而,这些旨在隔离作为专用用户运行的应用程序,并限制它们在受到损害时可能造成的损害。它们不利于在系统用户之间实施强制访问控制。如果您需要 MAC,那么具有多个用户的 Unix 系统并不是合适的环境,您需要一个没有网络或非常严格控制的网络、没有可移动驱动器等的封闭系统,并且每个用户都有自己的计算机。

相关内容