如何防止自动追加到.bashrc生效?

Fra*_*ona 28 bash

我正在寻找一种方法来消除某些安装程序的不良行为,这些安装程序会附加代码以.bashrc自动强制加载其环境。这个问题出现过几次,主要是在 Conda 上,在某些情况下,用户最终会遇到帐户损坏而无法再登录的情况。

我尝试在 .bashrc 末尾添加一个未关闭的此处文档,如下所示:

# .bashrc

#...

: <<'__END__'
Run Code Online (Sandbox Code Playgroud)

它有效,但会生成解析错误并发出恼人的警告。

什么是一个干净的方法来做到这一点(不使 .bashrc 只读)?

Ste*_*itt 46

如果你结束你的.bashrc

\n
return 0\n
Run Code Online (Sandbox Code Playgroud)\n

Bash 将忽略此后添加的任何行,因为.bashrc它的处理方式类似于源脚本:

\n
\n

return.也可用于终止使用( ) 内置函数执行的脚本的执行source,返回n或脚本内执行的最后一个命令的退出状态作为脚本的退出状态。

\n
\n

exit 0导致 shell 退出,这不是您想要的\xe2\x80\x99。)

\n


R..*_*ICE 6

虽然 Stephen 的技巧确实有效,但这里的根本问题是安装程序以允许其修改您的.bashrc. 如果这样做,它可能会对其他事物进行各种不需要的更改,这些更改可能会导致交互中断或完全恶意(从故意发送的回拨间谍软件到来自供应链妥协或内部威胁的彻底恶意软件)。

正确的解决方案是不要以任何权限运行“安装程序”。相反,您可以在一次性容器或用户帐户中运行它们,然后仅将所需的文件从“暂存”环境复制到您想要使用它们的环境中。我使用我编写的工具usand执行类似的操作,该工具用于unshare创建新用户并挂载命名空间,阻止网络访问以及对当前目录及其下所有内容之外的文件的写入访问。虽然目前还不是很灵活,但可以应用许多相同的概念来完成适合您特定工作流程的操作。

  • 如果您不信任安装程序,为什么还要使用该软件? (18认同)
  • @B.Kaatz 这个答案似乎是在谈论在沙盒环境中运行安装程序,然后将生成的文件移出沙盒。这是没有意义的,因为恶意安装程序只能生成恶意可执行文件。据我所知,这与从源代码编译软件无关,因为您不信任预构建的二进制文件。 (12认同)
  • @eesiraed:实际上,安装和更改您不想要的垃圾的商业或其他非自由软件往往是通过安装程序来完成的,*而不是*通过让主程序每次都重做它。显然,这并不能防御真正的恶意攻击,但可能有助于防御一些不道德的安装者安装其他正常的软件。IDK,我很少安装任何非免费的东西,而且已经有一段时间没有安装了。 (4认同)