假设在目录上正确设置了user
和的权限。该目录的group
0 权限是否可以对该目录的文件和子目录提供有效的访问控制?other
有需要考虑的问题吗?
当您创建rw
供其他人使用的文件(例如使用 Unix 域套接字)时,人们会将其视为安全问题,因为在将适当的权限应用于文件之前,恶意用户可以利用竞争条件。这就是为什么我正在寻找一种“原子”方式来进行基本许可。
答案1
“其他”权限的 3 位如果为 000(二进制)或 0(八进制,在 chmod 中以数字形式输入的基数)或---
如 中所示,将拒绝所有访问ls -l
。请注意,“所有访问权限”与文件相关。如果允许访问该文件所在的目录,则仍然可以看到该文件的存在。您可以chmod o-rwx filename
取消其他人的权限,同时不更改组成员和所有者的权限。
要以原子方式设置权限,可以在使用系统调用绑定执行程序时在编程级别完成此操作。否则,使用 shell 的命令为 shell 进程设置 umask umask
,该命令由 shell 启动的进程继承。 umask 的位是在将导致创建的文件中的相应位变为 0。这是您正在寻找的原子方法,不会留下任何漏洞利用机会。 umask 为 022 通常会为文件授予 644 ( ) 权限rw-r--r--
,为目录授予 755 ( ) 权限rwxr-xr-x
。 umask 027 将授予 640 ( rw-r-----
) 和 750 ( rwxr-x---
) 权限。
答案2
要访问文件,您需要访问其上方的目录。如您所述,禁用对该目录的访问将保护该文件。如果用户有权访问该目录,即使他们无法访问文件的内容,他们也可以查看文件。
访问位:
x
允许访问目录的内容;r
允许列出目录的内容;和w
允许更改目录的内容。
可以链接同一磁盘上多个目录中的同一文件。您需要确保所有目录都受到保护。
清除其他人的访问权限仍允许用户和目录组成员进行访问。