V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
t41372
V2EX  ›  操作系统

很讨厌桌面端系统的权限管理模式

  •  
  •   t41372 · 13 天前 · 1680 次点击

    在日常使用桌面操作系统时,干什么都要提供管理员权限。在电脑上随便安装/更新个软件就要求管理员权限,玩个游戏要管理员,随便安装个软件要管理员。很多软件做的事其实根本就不应该要求用户提供管理员权限。操作系统在权限设计上就不应该要求软件必须这么频繁的要求管理员权限。

    假如这个软件除了安装自己以外,还会偷偷的读取你浏览器保存的密码呢(这其实不需要管理员)?或是帮你安装根证书呢? 偶然发现奇游加速器会在系统里植入根证书? 或是给你做个 memory dump ,获取你密码管理器里的主密码?Most Password Managers Store Secrets in Plaintext in Memory还有各种软件在电脑上拉屎,装后门,扫盘的行为。更不用说这让很多用户对提供管理员权限这一个本该十分敏感的权限脱敏了。

    最小权限原则在 1974 年就提出了。50 年了,广大用户依旧在裸奔,依旧在任何事情上提供自己能提供的最高的权限。很多人会说用户就不该运行不信任的代码,我觉得这只是在摆烂罢了。难道你打算让用户审查运行在自己电脑上的每一行代码?还是你不安装第三方软件?能出问题的地方太多了。

    防毒软件的作用确实就体现在这,但是这更多是一种亡羊补牢的办法: 设计上就有洞,防毒软件只是站在哪边盯着洞看而已。而且,有很多绕过防毒软件的方法,比如往执行档里面塞空白内容,让档案大小超过防毒软件的上限等等。

    咩,但讨厌归讨厌,微软 200%不会改,因为这大概率会对兼容性造成毁灭性的打击。macOS 要好一些,但没有主动杀毒软件还是会让人觉得有点慌。

    11 条回复    2024-04-30 20:49:03 +08:00
    xtreme1
        1
    xtreme1  
       13 天前
    selinux 不就是干这个的, 你完全可以用于桌面
    blinue
        2
    blinue  
       13 天前   ❤️ 1
    历史包袱太重。传统软件都安装在 Program Files 里,这个文件夹需要管理员权限才能写。有些游戏要求管理员权限是为了防外挂或快速申请内存。微软做了很多努力,比如 UWP 、MSIX 、AppContainer 等,都没有普及开。
    orangie
        3
    orangie  
       13 天前   ❤️ 2
    macOS 也有主动杀毒软件,比如某大厂使用赛门铁克、迈克菲,只不过一般个人使用 macOS 不用杀毒软件。因为一方面有沙箱机制,另一方面很多不复杂的常用软件都可以从经审核的应用商店下载,其他渠道默认情况下必须是受信任的开发者发布的软件才能运行。即便先前的安装步骤已经输入过密码,安装证书等敏感操作也还会单独弹出提示并要求再次给密码,并且警告提示明确简要。macOS 出现安全问题基本就是有漏洞、有开发者遭到供应链攻击、shell 终端里的 unix 程序病毒以及破解软件携带病毒,一般用户正常渠道使用并且更新系统就行了(比 Windows 更新的体验好太多了),需要特别渠道软件从而关心这些问题的软件开发者也基本能够正确认识这些问题。

    Windows 的权限管理最大的问题是这么多年安装软件还是需要管理员权限,不会提示说明为什么需要,导致用户对这个权限申请具体要做什么都不清楚。如果个个都像 chrome 一样不用管理员权限,甚至类似于绿色软件,那确实对安全性的提升,至少是赋予管理员权限的随意程度有很大改善。scoop 能够解决部分开源软件的问题,但是众多平常使用的软件还是没办法。

    Linux 发行版的包管理器其实也没好到哪去,安装软件包总是需要 root 权限,尽管只是为了能够在过程中修改配置。但是有时候明明可以只下载和释放文件就行,比如自己手动下载 nginx 并且配置就不需要 root 权限。在 Linux 上使用 homebrew 可以改善一下,但毕竟 brew 不是为了 Linux 而生的,很多时候还是不够好。

    总体来说管理员权限的最小化使用方面还是 macOS 做的最好,软件开发者几乎都把软件做成绿色软件(对比 Windows 的非绿色),并且 macOS 上的软件配置都是用户级别的(对比 Linux 包管理器的系统全局配置/etc ),多数情况改配置不需要管理员权限。
    codehz
        4
    codehz  
       12 天前   ❤️ 1
    @orangie
    mac 表面绿色,实际也只是打包到一起而已,/Application 目录有特殊权限魔法(用户可以复制.app 进去,但之后就无法修改里面的文件),但主要还是靠内核强制的签名验证和强制强化运行时
    linux: 不用 root 也可以偷你底裤,至今没有一个靠谱的软件签名方案,很多软件包括 shell 甚至是把不用签名即可运行作为一个特性,唯一可靠的只有依赖可信执行环境,没有普及不说,但仍然有很多方法欺骗本地运行的程序(虽然不能直接偷取可信环境里的密钥,但依旧可以在退出可信环境后把解密的数据偷出来),再加上 linux 社区对可信计算的负面情绪,这个问题几乎没有解决的可能性,比如现在 linux tpm 环境测量结果几乎完全可以被伪造
    life90
        5
    life90  
       12 天前 via Android
    有些不规范的软件,用的开发环境就是 Administrator 账户。用的人只能被迫。没有这个权限,程序无法运行。所知的某个国企,全员 Administrator 账户。系统坏了就重装,反正都交给外包了。然后大多数人都是图方便,最高权限没那么多提示,程序运行成功的概率多一些。别说 Windows, Linux 很多默认都是 root 。哪怕用的 sudo ,也要把这个命令改成不用输密码的。
    coala
        6
    coala  
       12 天前
    @life90 额 用 sudo 的确没怎么输过密码,这个事怎么说呢, 不然真的麻烦, 就几个人用...
    subframe75361
        7
    subframe75361  
       12 天前
    然而事实上,大多数人都不在意或者不知道权限,而且会因为嫌麻烦而手动关闭 UAC
    ysc3839
        8
    ysc3839  
       12 天前 via Android
    最小权限原则在 1974 年就提出了,50 年了,广大操作系统依旧在裸奔。个人觉得这是操作系统开发者的责任,然而传统桌面 Linux 几乎没有这方面的改进。而微软至少有尝试推动 AppX ,但是影响力太弱而没有实际效果。
    @xtreme1 个人认为 SELinux 过于复杂,不适合给最终用户使用,适合给 Android 等系统作为实现沙盒的底层机制。
    @orangie macOS 有沙盒机制,是三大桌面操作系统中做得最好的了,录音录屏录像都需要授权。但是对于非商店应用,只会限制访问桌面、下载等几个特定的文件夹,并不会限制访问其他许多用户数据,沙盒不够严密。
    kuanat
        9
    kuanat  
       12 天前
    这事还真的是历史包袱,而且不推翻重来的话,看不到什么改善的空间。

    以 Linux 为例,权限系统设计的时候是沿袭自 mainframe/terminal 的多用户单主机模式,权限服务的是隔离设备的所有者(巨型机的所有者或者管理员,赋予 root 权限)和用户(终端登录,普通权限)。所以凡是涉及到对于硬件的操作,都要高权限。

    但是当今环境里,电脑几乎都是“个人”的,安全威胁模型也逐渐转变成为,隔离不同的应用程序,于是有了沙盒等配套机制。要让这套系统良好运作,需要的是所有应用程序主动按照权限机制重写。
    wsseo
        10
    wsseo  
       12 天前
    分这么细,搞怎么麻烦,没多少好处。
    kuanat
        11
    kuanat  
       10 天前
    追加提一句作为我 #9 回复的补充。

    systemd 提供了一个 sudo 的替代品叫 run0 ,今天刚发布,某种成都上是解决 sudo 是为传统多用户设计,不适合现代个人 PC 场景问题的新思路。(当然要实现沙盒化的权限机制,软件适配还是无法避免的。)

    技术上 sudo 是 SUID 实现的,除去安全问题之外(任何人都可以执行 SUID 应用,所以额外需要 sudoers 配置文件),这套权限体系是不区分人和应用程序的。这就造成人控制硬件设备还要 sudo 非常麻烦,而应用获得权限反倒可以为所欲为的现状。

    run0 不依赖 SUID ,而是通过 PID 1 来 fork 出一个隔离的 pty 执行相关命令和应用,权限部分由 polkit 控制。

    好处就是大部分之前依赖 sudo 的硬件控制功能,都可以在已登录用户 session 的情况下无感授权。尽管还做不到像手机上那样基于隐私的权限体系,但已经可以把相对危险的操作隔离开了。

    只是目前看它还是 systemd 的一部分,想要完全替代 sudo 还需要时间来验证。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6007 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:21 · PVG 14:21 · LAX 23:21 · JFK 02:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.