我正在尝试在安装的 Fedora 20 上运行以下脚本。
#!/bin/bash
password={password}
echo "$password" | sudo -Sk /bin/bash -c '[[ $EUID -eq 0 ]]'
[[ $? -ne 0 ]] && zenity --error --text failed. || zenity --error --text success.
当尝试从终端模拟器运行时,它会报告成功,但当从文件管理器(本例中为 Thunar)双击脚本时,它会报告失败。
在其他一些发行版(例如 Debian Wheezy)上,我得到了一致的行为。
为什么会出现这种情况?我应该怎样做才能解决这个问题?
答案1
在 /etc/sudoers 文件(可使用 visudo 访问)中,查找requiretty
.您可以通过以下方式为程序关闭此功能:
Defaults!/path/to/program !requiretty
在你的情况下 - 你正在使用 bash,所以这个路径将是你从 获得的任何路径which bash
。
答案2
您应该验证 sudo 不需要/etc/sudoers
文件中的 tty (requiretty
不应设置)。