使用ghc 8.0.2如果我在启动ghci时在项目目录中创建.ghci文件模式644,则会发出以下警告:
*** WARNING: .ghci is writable by someone else, IGNORING!
Suggested fix: execute 'chmod go-w .ghci'
采用这个建议时,在启动ghci时我们得到:
*** WARNING: . is writable by someone else, IGNORING!
Suggested fix: execute 'chmod go-w .'
采用这一建议会使警告消失。这很好,但这很乏味和烦人,特别是因为使用堆栈默认创建的目录权限不是ghci似乎想要的。
为什么添加.ghci文件会导致此行为,ghci担心的是什么?没有本地目录.ghci文件ghci不会抗议权限。
答案 0 :(得分:0)
可悲的是,我现在发现这是一个被拒绝修复的问题:
答案 1 :(得分:0)
为什么添加.ghci文件会导致此行为,ghci担心的是什么?没有本地目录.ghci文件ghci不会抗议权限。
我猜你的umask
被设置为默认情况下所有新创建的文件都是可写组的。这允许系统中的任何用户写入它。一些GHCi命令允许运行任何命令。因此,任何可以写入.ghci
文件的人都可以在您启动GHCi后立即劫持您的帐户。
GHCi试图通过拒绝解释其他人可写的文件来防止此攻击。是否应该是这种情况是有争议的。
一方面,更改权限很简单,除非重新生成.ghci
,否则只需执行一次。即使您自动重新生成它,也可以使用可以为您执行chmod
的脚本。或者,可能更好,更严格地设置umask
以便新文件获得严格的权限(我认为你应该使用umask 002
) - 这只需要为每个shell运行一次,或者可以是放入shell init文件。
另一方面,GHCi在这里有点谨慎,不像大多数unix使用(使用?)给你所有挂绳所需的绳索,正如俗话所说。也许标志ghci --ignore-config-permissions
会很有用。