在Java应用程序中编辑/ etc / hosts /

时间:2011-10-11 06:49:30

标签: java

所以,这有点不同寻常,但我基本上是在创建一个Java应用程序,我需要访问/etc/hosts文件。

如果没有root权限,显然无法编辑此文件。该计划适用于家长,因此他们可以禁止他们的孩子查看某些网站。如何进行root访问?

我已经阅读过某些地方,我可以在MacOSX的终端线上以root身份打开应用程序,但是我在Java中执行此程序的原因是我可以将它分发给我的一些非亲密朋友电脑很精明,他们可以很容易地运行它。

无论如何我可以在应用程序开头请求root权限吗?

2 个答案:

答案 0 :(得分:1)

您可以让用户使用sudo命令以超级用户权限启动应用。

sudo your-app

必须允许用户使用超级用户权限。在执行命令之前,将提示他输入密码。查看此网站,了解有关sudo的更多信息。

注意:另一种可能性是直接使用SUID位。这不是很聪明,因为启动应用程序的任何人都具有超级用户权限。 “sudo``是用于准确访问的首选包装器。

答案 1 :(得分:0)

我假设您使用基于unix的系统。

您可以要求用户将程序归root所有,并在其上放置SUID位(例如,文件上为chmod 4555)。 这样任何用户都可以启动它,程序将以root权限执行,并且易于使用。

更正:显然你不能将SUID应用于java程序according to this link(脚本几乎不一样)。

只需在C中使用SUID位执行包装:

#include <unistd.h>

int main(){  
system("java main"); 
return 0; }

有关SUID位check this out的详细信息。