本来 html 文件默认是 Chrome 打开的,每次启动百度网盘后都会被它重新设置。在 Ubutu 上配置默认启动应用的文件位于 ~/.config/mimeapps.list
考虑如何阻止 /opt/baidunetdisk/baidunetdisk 修改这个文件,进一步引申到如何限制一个进程能够访问的文件?
在 Linux 上权限边界是 User 而不是应用,任何在当前用户下运行的应用都能获得当前登录用户的所有权限,所以 chmod 设置读写权限没用,它能改回来。
考虑利用 Sandbox 机制,对进程访问文件系统进行隔离,比如利用 chroot 或者 docker ,但是这这玩意只有通过 .deb 包的形式安装。另外 Ubuntu 上有一种 AppArmor 机制可以对进程的资源访问进行限制,可以配置进程允许访问资源的 profile 并让进程在此 profile 下运行。
另外就是直接把文件设置为 unmutable, 可以通过命令 chattr +i ~/.config/mimeapps.list 完成,这样除了 root 用户其他用户都不能修改此文件,但是这样正常默认应用设置也会受限制,也比较麻烦。
总之 Linux 上好像没有自带按照进程细分的文件访问权限管理办法,还有其他思路吗?
1
loveqianool 2022-11-10 02:24:17 +08:00
新建一个百度用户来运行
|
2
jinliming2 2022-11-10 02:31:38 +08:00 via iPhone
可以放 docker 里跑的,docker 里装上之后把 X11 或者 Wayland 转发一下就能正常用。
chroot 也是可以的,但是要搞一个比较完整的系统,比较麻烦。我 steam 就是用这个方案,因为系统里不想装 multilib ,32 位库。 另外,纯主机的方案,可以考虑试试 selinux ? |
3
FindHao 2022-11-10 08:17:30 +08:00
一个异想天开的思路是不再用这个文件来管理默认类型,而是用一个程序。手动设置白名单或者黑名单来管理其他程序对于文件类型的修改。
|
4
aloxaf 2022-11-10 09:06:45 +08:00
好奇地看了下 AUR 里的 baidunetdisk-bin 包的做法
HOME="${HOME:-/tmp}/.local/share/baidu" exec /usr/lib/baidunetdisk/baidunetdisk "$@" 实在是简单粗暴……但有效( |
5
bjzhush 2023-01-28 18:41:16 +08:00
百度网盘真 TM 流氓,一个网盘居然来劫持 html 文件
|