如何在不使用“sudo”的情况下更改系统范围的默认 Java 运行时?

如何在不使用“sudo”的情况下更改系统范围的默认 Java 运行时?

抱歉我的英语不好,但我真的在努力变得更好。好的。我在 Ubuntu 12.04 上创建了一个新的命令/别名(changejava),只有当我输入“$changejava”时,我才需要跳过“sudo password”。如果我使用终端输入“$changejava”,Ubuntu 会向我展示我可以做什么。我只需要按 0、1 或 2。但是如果我按任何东西,终端都会显示:

"update-alternatives: to use /usr/lib/jvm/java-6-sun/jre/bin/java to provide /usr/bin/java (java). update-alternatives: error: Could not create file '/var/lib/dpkg/alternatives/java.dpkg-tmp': Denied. "

如果我尝试“$sudo changejava”,我会得到:“输入 jessegaspar 密码”,然后奇迹就会发生。如果没有“sudo”,就不会发生。我尝试使用以下命令编辑 /etc/sudoers:

%sudo ALL=NOPASSWD: ALL

...但是所有用户都拥有“sudo”的总权限。:/ :/

谢谢。

答案1

首先我想重申您不需要更改系统范围的默认 Java 运行时以便使用非默认 Java 运行时运行程序。

例如,Eclipse 和 NetBeans 有配置文件,您可以在其中指定应该使用哪个 Java 运行时。

Java 应用程序的另一个典型特征是遵守$JAVA_HOME环境变量。因此,在 shell 中,只需运行JAVA_HOME=/usr/lib/jvm/java-6-sun/ fooJAVA_HOME=/usr/lib/jvm/java-7-oracle/ bar执行应用程序酒吧。您甚至可以将其放入脚本中,这样就不必每次都输入它。


由于您专注于更改系统范围的默认 Java 运行时,因此可以阅读有关 sudo 的 Ubuntu 社区文档:https://help.ubuntu.com/community/Sudoers

手册页(即man sudoers)是另一个:http://www.sudo.ws/sudo/sudoers.man.html

%sudo ALL=NOPASSWD: ALL你说得对,你不想sudoers文件。请尝试以下方法:

    jessegaspar caelum-sala1-9 = (root) NOPASSWD:/usr/local/bin/changejava

这可能比您真正想要的限制更多,但这只是一个例子。列出命令的完整路径可能是一种很好的做法,但这可能不是您系统上脚本的路径。

答案2

打开终端窗口并输入:

sudo visudo

在文件底部(“ #includedir /etc/sudoers.d”之后)输入以下内容:

username ALL=(ALL) NOPASSWD: ALL

终端

希望有帮助!这仅适用于终端命令,正常操作不会受到影响。

相关内容