首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >标准输入通过sudo

标准输入通过sudo
EN

Stack Overflow用户
提问于 2020-09-26 12:32:56
回答 1查看 36关注 0票数 0

我正在编写一个调用其他程序的Java程序,其中一些程序需要作为root运行。

我想把整个JAR作为root运行,但这听起来像一个安全风险,我宁愿只运行一些程序作为root。

目前,我创建一个ProcessBuilder,并使用它的getStandardOutput方法在命令sudo -S pacman <...>上实例化一个Writer。(-S的意思是“从标准输入读取”)。

然后,我使用该读取器插入密码并刷新它,到目前为止还不错。

但是,当pacman期望输入(例如,当询问一个交互式的是/否问题时),并且我再次尝试写到Writer时,它会在IOException中失败,因为流是关闭的。

我如何才能获得一个能将字符实际发送到pacman和其他以root用户身份运行的程序的作家?

这个程序只能在UNIX (Arch、Debian、MacOS和Window的WSL)上运行,所以UNIX特定的解决方案是可以的,如果可能的话,我宁愿不使用JNI,因为它需要多次编译,但如果这是唯一的解决方案,也可以。我也可以用其他的东西代替sudo,只要它仍然以root的形式运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-26 16:09:43

如果这不是一个长期存在的服务,您可以运行sudo -vsudo缓存凭证,然后在您的sudo程序中调用sudo而不需要输入密码。如果您以如下方式调用Java程序,这将是最有效的:

代码语言:javascript
运行
复制
#!/bin/bash

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

https://stackoverflow.com/questions/64077708

复制
相关文章

相似问题

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