我编写了一个自定义的 .desktop 文件,其中包含一个 Exec 行
#!/usr/bin/env xdg-open
[Desktop Entry]
(...)
Exec=gksudo /my/path/to/bash_script.sh
(...)
该脚本启动了一些 zenity 调用。
然后我让这个桌面文件出现在 unity-2d 启动器侧栏中。
我的问题是每次我使用这个启动器快捷方式时它都会不断要求我输入密码...而预期的行为是询问一次,然后记住一段时间。它在 gnome/Lucid 中的表现就是这样的,所以有些事情已经改变,但是改变什么呢?
(我也尝试了“-k”选项,但这并没有改变我的问题)
如果从终端尝试该命令行(作为我的普通用户)
gksudo /my/path/to/bash_script.sh
它的工作方式与预期相同(=与 Lucid 中的行为相同):仅在第一次启动时询问密码。
我在这里遗漏了什么?
答案1
据我所知,它是在一定时间内记住密码的终端环境。
例如,命令
gksudo nautilus
终端中的 只会在特定时间范围内询问一次密码。而alt+f2启动器中的相同命令每次都会询问密码。
无论如何,如果你想以 root 身份运行某些命令,每次都会询问你的密码,这并不奇怪。这样你就知道你将以 root 身份运行该命令。
答案2
这绝对正常。在终端中,您始终拥有相同的“会话”,因此它会记住身份验证,但 .desktop 启动器则不同。
我建议你只需添加一个文件到/etc/sudoers.d(将其命名为 my_script 或类似名称),这样您就可以始终使用没有密码的命令(如果您的脚本不接受应该是安全的参数) - 但是自行承担风险:
创建包含以下内容的新文件
your_username ALL=(ALL) NOPASSWD: /my/path/to/bash_script.sh
当我用 gksu 测试它时,它直接就开始工作了,但如果不工作,请尝试再次登录并退出或重新启动。