当向另一个人提供代码时,删除所有特定于海拔的代码似乎是一个很好的做法 - 即提供apt update
而不是sudo apt update
(或su -c 'apt update'
)。然而,这会给那些刚接触基于 UNIX 的权限提升的人带来各种各样的问题 — 我和我遇到的许多其他人过去只是使用上述实用程序以超级用户身份运行所有内容。
此外,当以编程方式调用某些命令时,在某些系统上需要超级用户提升,但在其他系统上则不需要。这意味着包含权限电梯可能会破坏某些系统上的配置,因为事物在不应该属于超级用户时开始由超级用户拥有。flatpak
是其中的一个示例(除了配置损坏)——我使用了 50% 的安装来调用其大部分命令,另外 50% 默认情况下没有使用必要的提升。
考虑到根据我的经验,Windows 7+ 上的 UAC 提升似乎工作得非常好,即使在边缘情况下,我感到非常惊讶的是,似乎不存在修复此问题的综合方法。
因此,我询问是否有人知道以编程方式确定命令是否需要用户提升才能调用它的任何方法。我知道在调用某些命令时切换用户可能会导致其行为影响该用户,但在这些情况下,我无法想象能够调用该命令的用户会受到限制(以免它变得无用)。
https://unix.stackexchange.com/search?q=define+whether+superuser+elevation+required不返回任何内容,尽管如何通过代码确定命令是否需要根提升?以及如何检查运行命令是否需要“sudo”权限?看起来好像他们在问我想知道什么,两者中可用的少数响应似乎都集中在 shell 脚本代码上以回避问题,而不是提供与语言无关的解决方案。