对主目录中的配置文件进行权限检查:应该这样做吗?

对主目录中的配置文件进行权限检查:应该这样做吗?

假设我正在实现一种具有交互模式的编程语言,并且该交互模式读取~/.foo_rc用户主目录中的某些文件。该文件包含该语言的代码,可用于自定义某些首选项。读取此文件时,该语言未沙箱化;该文件可以做“任何事情”。

我应该对文件进行权限检查吗?喜欢:

$ foo -i
Not reading ~/.foo_rc because it is world-writable, you goof!
P.S. you don't even own it; someone else put it there.
> _

我正在查看 Bash 源代码,它并不关心权限检查~/.bash_profile(除了它存在并且可读,这是使用它做任何事情的先决条件)。

[更新]

在考虑了 thrig 的答案后,我对文件进行了以下检查:

  • 如果该文件不属于调用者的有效用户 ID,则该文件不安全。

  • 如果该文件对其他人是可写的,则它是不安全的。

  • 如果该文件对于所属组是可写的,那么如果该组包含调用者以外的用户,则该文件是不安全的。 (即该组必须为空,或者将调用者作为其唯一的成员)。

  • 否则就被认为是安全的。

请注意,组检查不会假设数字用户 ID 和组 ID 或其名称之间的任何对应关系;它基于检查姓名用户的 被列为唯一成员。

(执行此检查的函数的文档中添加了一条注释,表明它受到检查时间到使用时间竞争条件的影响。应用检查后,无辜的超级用户可以使用其他成员扩展组,可能是恶意的,并在访问文件时修改该文件。)

答案1

合理且谨慎,前提是有关于哪个文件失败以及原因的明确警告,以便用户可以修复权限问题。bash可能是从一个更加信任(和恶作剧)的日子开始的。请注意,如果站点具有每个用户进入只有该用户所在的组的策略,则用户文件可以合法地为组可写,否则则不然。

(父目录检查也可能是谨慎的,以发现chmod 777 $HOME错误。)

相关内容