我需要以root身份执行给定的命令,并使用Java执行sudo用户。但是,我不确定我可以用来传递密码的方法。有没有办法将密码传递给终端?如何使用java运行时输入密码到sudo?
回答
你可以只下降西头一起,创建一个shell脚本的suid root用户,运行该网址。
chmod +s myscript && chown root myscript && chgrp root myscript
每当脚本调用时,它将以root身份运行。
您可以配置sudo来允许特定命令没有密码运行。这并不需要你知道密码。
具有其中必须在某个阶段明文程序root的密码实际上是不太安全恕我直言。
通常sudo通过直接在终端上操作来读取密码。你应该在这里使用sudo -S
。使用此选项时,它将尝试从标准输入中读取密码,然后可以通过在运行命令时从Runtime.exec()
创建的Process
获得的OutputStream
发送该密码。
但是,我需要在sudoers文件中禁用requiretty选项。 – 2012-03-21 07:26:54
,如果你在终端上创建一个脚本和(使用的Runtime.exec)
正如你们已经提到的,你可以使用sudo
仅如果您当前使用的配置在系统从Java调用它,它会更好一个可以运行sudo
。否则(一般情况下)你必须输入密码。
你必须输入密码,如果你想远程计算机上运行命令,使用ssh
以及或远程使用scp
复制文件。
一些命令可以接受的密码作为命令行的参数。例如,mysql
实用程序可以在开关-p
后接受密码。其他一些命令更为严格:它们不会在命令行中释放密码,甚至不允许您通过重定向进程标准输入提供密码。例子是ssh
和scp
。
,以确保你总是可以编程方式运行,需要输入密码的任何命令,唯一的办法就是仿效终端。这是实用程序expect
。以它的手册页一看:http://linux.die.net/man/1/expect
我在过去使用expect
。它是一个脚本驱动的实用程序,可以在用户使用终端时准确模拟用户的行为。我们使用ProcessBuilder
作为常规外部进程从java运行期望脚本。
获得从一台机器到其他使用ssh或scp可以,如果你配置无密码的SSH来完成。这是一种用于需要一起工作并由头节点控制的机器群集的方法。例如hadoop使用这种方法。
我需要使用ProcessBuilder来运行tcpdump。这是我如何做的:
visudo命令 myuser的ALL = NOPASSWD:/ usr/sbin目录/ tcpdump的
然后我的命令从Java是,这是从myuser的运行: 在/ usr /斌/须藤的/ usr/sbin/tcpdump -i eth0端口8561 ...
- 1. 如何从java程序运行没有密码的sudo命令?
- 2. 如何通过sudo运行命令并通过ssh .net输入密码c#
- 3. 如何在使用subprocess.call时键入sudo密码?
- 4. 使用apache commons-exec运行git clone:如何输入密码?
- 5. 如何执行cmd命令行提示输入密码时使用java
- 6. 使用sudo时提示用户使用对话窗口输入密码
- 7. 如何在mac中无密码运行Sudo代码
- 8. 如何在运行vncserver时自动输入密码:1?
- 9. 如何使用root密码从Java提供sudo?
- 10. Fabric运行bash脚本请求sudo密码 - 如何发送此密码
- 11. 如何在java中运行sudo poweroff
- 12. 如何使输入字段同时输入数字和密码?
- 13. 如何在密码字段中输入时禁用'使用密码:'?
- 14. 如何在输入密码错误时输入用户
- 15. 命令行提示输入密码,无法使用java eclipse发送密码
- 16. Mac OSX:运行一个避免输入sudo密码并在执行结束时关闭终端的脚本
- 17. sudo作为另一个用户从标准输入密码
- 18. 使用sudo运行shell脚本时,
- 19. 如何使用eclipse IDE从java程序运行sudo命令?
- 20. 使用System.Diagnostics.Process输入密码
- 21. 使用sudo运行命令并进入根(sudo -i)并运行命令
- 22. 是否可以将用户输入隐藏为“sudo”密码输入?
- 23. Java加密:Java Encription:javax.crypto.IllegalBlockSizeException:使用填充密码进行解密时,输入长度必须是8的倍数
- 24. C#如何运行cygwin scp并使用Process和StandardInputWriter输入密码?
- 25. Monodevelop - 仅使用sudo运行
- 26. Java - 如何使程序运行直到输入特定值
- 27. 如何在不输入密码的情况下运行Fabric任意的sudo命令?
- 28. 如何在密码输入时将密码转换为星号?
- 29. 为什么用户vagrant在不输入密码的情况下执行“sudo su - ”?
- 30. 在运行csh脚本时让python输入密码
这可能是有用的,但对我来说,我不会总是事先知道这是要通过sudo的执行脚本,因此不能设置sudoers文件对于要运行的每个脚本每次/ R配置sudo的。我假设我们在sudoers文件中设置该设置,对吧? – 2012-03-21 07:28:47
你可以让用户能够运行任何东西,但这听起来很危险。这允许一个受损系统运行任何事情,无论是否需要密码,这都是一个坏主意。 – 2012-03-21 08:45:32