Alw*_*ner 13 linux java sudo sudoers
我已经在Stack Overflow 中问过这个问题,但我被要求在这里发布。所以做同样的事情。
我使用我的java程序运行了这个命令-
sudo -u <username> -S pwd
Run Code Online (Sandbox Code Playgroud)
我得到了这个输出-
command=sudo -u <username> -S pwd
exitCode=1
sudo: sorry, you must have a tty to run sudo
Run Code Online (Sandbox Code Playgroud)
我尝试编辑 /etc/sudoers 但它已经包含
<username> ALL=(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
然后,我了解到这可以通过在 /etc/sudoers 中注释掉以下代码来完成
# Defaults requiretty
Run Code Online (Sandbox Code Playgroud)
此外,默认情况下,当尝试以其他用户身份使用 执行命令时sudo,我们必须提供自己的密码。但这可以通过在 /etc/sudoers- 中进行以下更改来更改
Defaults targetpw
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否可以在 Java 中执行我的上述命令而无需在任何地方进行任何更改,即通过默认设置?
我不知道如何在 Java 中运行 shell 命令,但看看 ssh 命令的 -t 选项
-t force pseudo-tty allocation.
Run Code Online (Sandbox Code Playgroud)
这就是当我需要通过 ssh 以 root 身份运行命令时我所做的(直接 root 登录禁用和 sudo 所需的 tty)
| 归档时间: |
|
| 查看次数: |
18269 次 |
| 最近记录: |