由于权限很敏感,因此明确是否允许特定用户运行命令至关重要吗chmod
?
答案1
不,任何用户都可以运行此命令并且应该能够这样做。此命令是用户如何操作目录或文件上的权限位,这对于使 shell 脚本可执行或使用户可能所属的组可以访问目录至关重要。
例子
可执行脚本
$ ls -l reset* -rwxrwxr-x 1 saml saml 378 Sep 2 02:46 reset_raw_sorted.bash
访问目录
$ 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
控制组对文件和目录的访问
假设我在这些组中有一个用户
$ 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 系统并不是合适的环境,您需要一个没有网络或非常严格控制的网络、没有可移动驱动器等的封闭系统,并且每个用户都有自己的计算机。