我有一个本地shell脚本,在交付有效负载之前,在远程主机上执行一些testing; 其中一个testing是用户是否具有sudo特权,只需使用sudo -v进行检查,但这需要用户input密码。 此外,远程主机似乎有即时sudo超时,所以每个新的连接都需要密码input,这是我没有改变(作为一个政策)的权限。
我当然可以testing用户是否属于某些组,但是这对于远程主机configuration不是不可知的,所以我希望有一种方法可以检查是否需要假设用户组不需要用户input?
谢谢!
更新:为了回应我的评论,我只想testing用户是否可以sudo,而不需要用户交互的testing。
恐怕唯一可以testing的是如果用户没有密码的sudo权限。
执行
sudo -n true
如果$? 是0,用户有没有密码sudo访问,如果$? 是1,用户需要密码。
如果你需要validation一个特定的程序,改变你的程序的true ,程序不会做任何事情,比如chmod --help
如果您有一个使用sudo访问的用户,例如“root”,则可以使用它来检查其他login。 作为具有访问权的用户运行:
sudo -n -l -U foo 2>&1 | egrep -c -i“不允许运行sudo |不知名的用户”
如果它返回零,“foo”有权限。 否则,它不具有sudo访问权限。
sudo -l
这应该足以决定你是否拥有你想要/需要的特权。