如何设置 Linux 在需要 sudo 时请求 sudo?

如何设置 Linux 在需要 sudo 时请求 sudo?

每次我想运行一些命令时我都很累,执行完后Enter我发现这个操作需要sudo.所以我需要:

  1. 使用向上箭头检索我的最后一个命令
  2. 用于Home转到命令的开头
  3. sudo 在命令前添加
  4. Enter

这是一个沮丧的过程。如果命令需要,为什么不直接提示我授予 sudo 权限呢?我想这样的方式:

  1. 我运行一个需要的命令sudo,但我忘记添加前缀sudo
  2. 系统检测到这一点,并询问我是否要运行它sudo(我只需要输入Y)或要求我输入密码或其他任何内容,这样我就不必费心执行上述过程。

答案1

这样的事情不存在,而且我认为这是不可能的。思考这个问题:shell 或内核或其他什么东西如何知道您确实想使用 sudo 运行该命令?例如,如果一个文件被设置为 root 读/写,其他人只读,并且您打开了该文件,它怎么知道您想要编辑该文件而不仅仅是查看它?或者假设您执行“cp $HOME/myfile $HOME/myfile.bak”。 shell 能否知道您确实想要移动 /root 中的文件,因此您应该使用 sudo?

对于那些你清楚地知道你需要成为 root 的情况(例如“nano /etc/resolv.conf”),你要么必须重写 nano 来预先弄清楚这一点 - 通过将其替换为函数、别名或脚本——或者让 shell 以某种方式读取命令的输出,确定是否出现错误以及是否是由于不是 root 造成的,然后尝试使用 sudo 重新运行该命令。这将是一个非常大的“如果那么”语句,用于解释所有不同的命令及其所有不同的输出和工作方式等。

如果您确实设法编写了非常大的“if then”语句,则可能会出现一些潜在问题:

  • 它永远不会完全适用于某些命令,它只是尽力而为,
  • 总是会出现必须考虑的新命令,
  • 如果您尝试使命令像这样智能,那么它会破坏某些东西,但是然后您在管道或脚本中使用它,该管道或脚本期望命令只运行并且要么工作要么失败,而不是停止并提出问题(例如,如果你有一个脚本“cp”,将一个配置文件从一个地方复制到另一个地方,然后重新启动依赖于该文件的服务...最好让脚本完全失败,而不是认为 cp 实际上没有工作!) , 和
  • sudo 不仅仅适用于 root;你可以做'sudo -u bob vim /etc/bobsfile'...

所以我认为构建这样的东西是不切实际的。但请放心,您不是唯一希望有这样的事情的人!我使用 Linux 已有 20 年了,并且仍然希望如此。

有几件事可以提供帮助:

  1. 有些命令知道它们应该作为 sudo 运行,并且会执行类似于您所要求的操作。例如,systemd 命令。尝试一下systemctl restart cups,如果您尚未使用 sudo 运行它,它会自动询问您的 sudo 密码。
  2. 如果您在 bash 中运行本应使用 sudo 的命令,则可以立即键入sudo !!以使用 sudo 再次运行该命令。这 ”!!”替换为您在该 shell 中的最后一个命令。在我的系统上,我可以运行“man bash | grep -A75 -P '^HISTORY EXPANSION'”来查看其工作原理。您也可以打开“man bash”并搜索它。
  3. 我有一些我想运行的命令的别名。例如,alias yum='sudo yum '。我不必记住使用 sudo 来进行 yum 操作。我只需运行“yum”,它就会为我添加 sudo。

希望里面的东西可以帮助你。

相关内容