我是否可以配置 Fedora 22,以便任何需要 root 权限的操作都要求输入密码,而不是给出错误并需要我使用 sudo 重新运行?我什至不介意每次都必须输入密码,而不需要记住密码的几分钟(或其他什么)计时器。
即代替:
$ dnf history
You don't have access to the history DB.
它会:
$ dnf history
[sudo] password for <username>:
我认为某些 gui 应用程序可以做到这一点,例如我安装时的 gui yum 前端。
我认为不是......这将由每个应用程序来实现。但是,我希望应用程序可能会说需要root权限,并且在返回用户是否有权限之前,内核(或其他任何地方)可能有某种方式保持在阻塞输入阶段(密码)使用权。
答案1
你可以使用 python 脚本thefuck
可以在 github 上找到。该脚本旨在纠正您在一些用例中错误运行的最后一个命令,忘记使用sudo
就是其中之一。
从他们的例子来看:
➜ apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
➜ fuck
sudo apt-get install vim
[sudo] password for nvbn:
Reading package lists... Done
此行为来自您可以启用的 sudo 规则:
sudo – 如果由于权限原因而失败,则将 sudo 添加到上一个命令;
如果这不能开箱即用,那么dnf
创建自定义规则应该很简单。
答案2
一个简单的权宜之计是识别您运行的(总是)需要特权的命令,并为它们添加别名:
alias dnf="sudo dnf"
⋮ ⋮ ⋮
我建议不要对您使用的每个命令都这样做;尤其是那些可能造成伤害的内容(例如,cp
、mv
和rm
)。事实上,就我个人而言,我不会这样做ls
;如果我不是以 root 身份运行,我认为ls -l /root
失败是正确的。可以为 执行此操作find
,但请记住,您运行的任何程序都会继承正在运行的-exec
超级用户权限。find