首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java gksudo持久化提升

java gksudo持久化提升
EN

Stack Overflow用户
提问于 2011-07-13 05:23:50
回答 1查看 408关注 0票数 1

我有一个java应用程序,它有一个定时器,该定时器执行一个需要提升特权的单独应用程序。我一直在这样做:

代码语言:javascript
复制
String command = "gksudo /home/bob/sensor";
Process child = Runtime.getRuntime().exec(command);

问题是,每次计时器启动时,它都会要求输入密码,所以我每隔两秒钟就会得到一次密码。有没有办法只请求一次密码,然后保持较高的密码,这样只要java应用程序在运行,它就不会再次询问?

我尝试使用gconf-editor来更改apps/gksu/save- to -keyring选项,但这并没有改变任何事情,而且我认为这可能是一个极端的选择。

EN

回答 1

Stack Overflow用户

发布于 2011-09-14 02:03:33

我认为这实际上是不可能的,因为gksudo不允许你传递密码。但是,susudo确实允许这样做(请参阅How to pass the password to su/sudo/ssh without overriding the TTY?)。

您可以使用gksudo -p来使用图形化的身份验证窗口并检索密码。那么下一次你就不需要gksudo了,因为你根本不想要密码。

可能看起来像这样

代码语言:javascript
复制
String sessionPassword = null;
String command = "/my/elevated/app";

void executeStuff() {
    // Get the password in case it does not exist yet
    if( sessionPassword == null )
      sessionPassword = exec("gksudo -p -m 'Please enter you password once.'");

    // Construct the command
    String elevatedCommand = "echo '"+ sessionPassword +"' | sudo -S " + command;

    // Launch elevated
    Process child = Runtime.getRuntime().exec(elevatedCommand);
}

我怀疑安全专家会因为我的建议(存储密码)而讨厌我,所以要小心使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6671331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档