有一个外壳脚本(/ bin / sh的,而不是bash)的需要根权限执行。

如果它是由跑普通用户应该要求用户的密码来获得root权限,然后重新运行本身。

现在它使用以下代码:

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

这工作得很好,但也有一些像Ubuntu操作系统,在所有没有根密码。在另一方面,许多系统使用须藤根权限。

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

有帮助吗?

解决方案

有没有这样做的防弹方式,因为任何分布在它想要的任何方式打下文件。 Debian和Ubuntu经常把系统文件比红帽的其他目录,例如。这是很容易定制脚本它安装在操作系统。

其他提示

它不应该。如果脚本需要root权限,它应该以root身份运行。这是用户的业务他如何去实现这一目标 - 利用苏,须藤或其他一些机制

如果您关心安全问题,不想做的一切,从根,你可以将这些零件root权限。

您可以设置帐户不是需要一个密码在/ etc / sudoers文件sudo的:

yourusername ALL=(ALL) NOPASSWD: ALL

如果你不想这样做,你可以迫使他们运行脚本以root身份。加入这样的事情你的shell脚本的顶部:

if [ "$UID" -ne 0 ]; then
    echo "You must be root to run this script"
    exit 1
fi

此方式,用户可以得到是根然而他们选择(su或须藤)。

从这个文件创建一个更sh文件调用您的原始.sh文件一样 -

su - oracle /u01/enlightics/Enlightiks/UploadFTP/ExportScript2.sh

检查是否已安装sudo

SU='su'
which sudo > /dev/null && SU='sudo'

虽然这并不能完全回答你的问题,但值得注意的是,您可以检查是否是使用以下安装sudo包:

Debian的基础的系统:

dpkg -s sudo

RPM为基础的系统:

rpm -q sudo
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top