检测命令是否可由sudo执行

时间:2013-06-04 16:14:42

标签: shell sudo io-redirection

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

但是,某些系统有旧版本的sudo,其中-l“Command”不可用。我想做的另一种方法是尝试运行命令然后查看sudo是否提示输入密码。但是,我没有看到一个简单的方法,因为sudo将密码提示写入TTY而不是通过stdout。

有没有其他人知道这样做的直接方式?

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

仅供参考,“难度”版本的sudo似乎是版本1.6.8

2 个答案:

答案 0 :(得分:0)

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

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

这是sudoers man page以获取更多信息。

答案 1 :(得分:0)

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

$ sudo -n <command>

E.g。

$ sudo -n echo
sudo: sorry, a password is required to run sudo