su和sudo在shell脚本中

zse*_*rge 6 linux shell sudo su

有一个shell脚本(/ bin/sh,而不是bash)需要root权限才能执行.

如果它由普通用户运行,它应该询问用户密码以获得root访问权并重新运行.

现在它使用以下代码:

if [ $(id -u) -ne 0 ]; then su root -- $0 $@ ; ... fi

这工作正常,但有一些像Ubuntu的操作系统根本没有root密码.另一方面,许多系统使用sudo进行root权限.

问题是:脚本如何检测是否使用susudo不要求用户输入太多密码(例如输入sudo密码,如果失败 - 运行su).

Rom*_*aka 6

它不应该.如果脚本需要root权限,则应以root身份运行.这是用户的业务,他将如何实现这一目标 - 使用su,sudo或其他一些机制.

如果您担心安全问题并且不想从root执行所有操作,则可以删除这些部分的root权限.


wil*_*ell 3

没有一种万无一失的方法可以做到这一点,因为任何发行版都可以按照它想要的任何方式放置文件。例如,Debian 和 Ubuntu 经常将系统文件放置在 Red Hat 以外的目录中。为所安装的操作系统自定义脚本要容易得多。