技术解析

Linux 下隔离部分软件的文件访问权限
0
2021-06-15 07:42:02
idczone

Windows 下的 QQ 会扫描浏览器历史记录,Android 下的部分软件会在根目录乱建文件。Linux 下虽然暂时少有类似的情况,但随着国内大厂软件数量的增多,也要未雨绸缪。这里分享一种比 docker 更轻量的隔离软件文件权限的简易方法:

  1. 修正家目录下现有的权限:
chmod o-rwx ~  # even g-rwx to be more strict 
  1. 修复未来的权限,在.bash_profile中加入:
umask 007  # or even 077
  1. 新增专门用于不可信程序的用户,如untrusted
useradd -m -d /var/lib/untrusted -U untrusted
  1. 为避免频繁输入密码,执行visudo并在末尾加入:
my_user ALL=(untrusted) NOPASSWD: ALL
  1. 为了能在不同用户下执行 GUI 程序,在.xinitrc等类似文件中加入:
xhost si:localuser:untrusted
  1. 尝试执行不可信程序:
sudo -i -u untrusted program

注意此方法并不能建立真正安全的沙盒,但可以以成本较低的方式来防止部分软件扫描用户文件及在家目录下乱建文件的行为。沙盒的实现方式可参考 seccomp 。

P. S. 如果你最近在家目录下发现了.sys1og.conf文件,那是 wechat-uos 创建的。


直接 chroot 不行么?

也行,但是也需要 mount --bind

总感觉用 SElinux 或 Apparomor 更好一些。

的确更安全,但对我来说太重了

淦,才发现序号全乱掉了

firejail 感觉适中唉,还能用 apparmor 的

这个看起来不错

请问用什么方法 ( SElinux 或 Apparomor 或者 楼主介绍的方法 或者 其他 )可以对外接的 移动硬盘 /U 盘 (假设是 ntfs 格式 )设置禁止执行的权限 :unmask 移动硬盘 /U 盘 111 ?

mount 时加上 noexec flag 就行

firejail 的 blacklist/noblacklist/whitelist/nowhitelist 感觉难以理解,最终还是用回了自己的方法

谢谢 whenov 怎样才能知道哪些用户组才有执行 mount 这个命令的权限啊?

除非修改 fstab,否则只能用 root 来 mount

flatpak 或 snap 应该可以控制吧

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服