3

我想在 shell 脚本中检测我要通过 sudo 运行的命令是否实际上可以通过 sudo 运行。在较新版本的 sudo 上,我可以执行 sudo -l "command" ,这正是我想要的结果。

但是,某些系统具有旧版本的 sudo,其中 -l "Command" 不可用。我正在考虑的另一种方法是尝试运行命令,然后查看 sudo 是否提示输入密码。但是,我没有看到一个简单的方法来做到这一点,因为 sudo 将密码提示写入 TTY 而不是通过标准输出。

还有其他人知道这样做的直接方法吗?

我还应该提到“期望”在具有较旧 sudo 修订版的系统上似乎也不可用。

仅供参考 sudo 的“困难”版本出现在版本 1.6.8

4

2 回答 2

0

如果您只想检查运行命令是否需要密码,那么您应该能够运行:

$ sudo -n <command>

例如

$ sudo -n echo
sudo: sorry, a password is required to run sudo
于 2013-06-04T18:52:46.143 回答
0

在 Linux 上,在(至少)类似 Debian 的系统上,您可以查看/etc/sudoers(以及可选/etc/sudoers.d/*文件,如果创建并包含在 main/etc/sudoers中)(以及其他)

  • 可以发出命令的位置(哪个目录)的搜索路径
  • sudo用户( root) 权限
  • 可以使用sudo的组及其权限

这是sudoers 手册页以获取更多信息。

于 2013-06-04T16:48:43.713 回答