如果用户已经拥有文件的读写权限,他们难道不能复制该文件的内容,删除它,然后重新创建它以允许自己执行权限吗?缺少“x”位是否会阻止用户执行文件的内容?
答案1
如果用户是文件的所有者,他们可以将其设置为可读,然后读取,即使没有读取权限。他们可以将其设置为可写并进行编辑。如果他们能够对包含的目录具有可写位,他们就可以删除它。所以按照你的逻辑,“w”和“r”位似乎也没什么用。
那些被称为文件模式, 不只是权限因为某种原因。当我们谈论访问时,它们才成为权限其他用户给定的文件。
用户运行程序通常不会出现问题。最后,这就是计算机存在的原因,为了让用户能够运行程序。有时,用户自己编写自己的程序(或脚本),他们可能需要能够构建和运行它们。系统的设计必须使在普通用户权限下运行的程序不能对其他用户造成太大伤害。有些程序具有更高的特权(例如,有些程序可以是 SUID),但用户无法自己创建这样的程序,他们需要超级用户在文件上设置敏感的特殊模式位。
但是,如果您的目标是创建一个非常有限的环境,不允许用户运行任意程序,而只能运行您以管理员身份安装的程序,则您需要使用其他措施。这些措施包括:
- 将所有用户可写目录(homes、tmp 等)挂载为不可执行,因此用户无法创建“可执行”文件。然而,这并不能完全阻止它。用户仍然运行自己的带有已安装解释器前缀的脚本,通常这足以完成他们想做的任何事情。
- 使用 SELinux 等强制访问控制。这是非常安全的,但是也很麻烦。