这不是出于安全目的。
假设我想执行一个shell脚本,并尽最大努力的基础上,认为它没有留下任何副作用,除了之类的东西进程auditd记录,AVC报告,系统日志,等等。实际上,我想放弃所有的写入权限当前用户的整个 shell 会话。我对设置具有精心管理的文件权限的组和较低权限的用户不感兴趣。有哪些选择?
理想情况下,我想针对任何 posix shell,但我从 bash 开始,因为它是我最熟悉的。
通读 man bash,受限制的 shell看起来很有希望,但它们在错误的地方过于严格。例如,我仍然希望能够使用cd
并且它不会阻止诸如echo foo | tee /file
. 同样,bashset
选项也不够严格,因为它们也不会限制子进程的写入,例如(set -C; echo foo | tee /file)
无法完成我正在寻找的内容。
我还想避免使用overlayfs,因为我希望能够在单个 SSH 会话中进入/退出这种“只读”模式。
我得到的最接近的是将最大文件大小 ulimit 降为 0:
(ulimit -f 0; echo "blows up w/ signal SIGXFSZ" > file; ); echo $?
这似乎与我正在寻找的内容非常接近,并且可以在像dash
. 所以在上面的例子中,“文件”会被创建,但会是空的。
我觉得有一种方法可以将我与 SELinux 的用户会话限制在更严格的范围内,但可以使用指针来提供帮助。
还有其他选择吗?
我感兴趣的另一个选项是简单地监视进程中的任何 IO 写入。也许 cgroups 可以用于此,但我不熟悉它们。或者 systemd-run 也可能有用。