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

在Java应用程序中编辑/etc/hosts/,java,Java,所以,这有点不传统,但我基本上是在制作一个Java应用程序,我需要访问/etc/hosts文件 如果没有根权限,显然无法编辑此文件。这个程序是为家长设计的,这样他们就可以禁止孩子浏览某些网站。如何实现此根目录访问 我在某个地方读到,我可能可以在MacOSX的终端行中以root用户身份打开应用程序,但我用Java编写这个程序的原因是,我可以将它分发给一些不懂计算机的亲密朋友,他们可以轻松地运行它 我是否可以在应用程序开始时请求root priv?我假设您使用的是基于unix的系统 您可以要求用户将

所以,这有点不传统,但我基本上是在制作一个Java应用程序,我需要访问
/etc/hosts
文件

如果没有根权限,显然无法编辑此文件。这个程序是为家长设计的,这样他们就可以禁止孩子浏览某些网站。如何实现此根目录访问

我在某个地方读到,我可能可以在MacOSX的终端行中以root用户身份打开应用程序,但我用Java编写这个程序的原因是,我可以将它分发给一些不懂计算机的亲密朋友,他们可以轻松地运行它


我是否可以在应用程序开始时请求root priv?

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

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

更正:显然,您无法将SUID应用于java程序(脚本几乎不一样)

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

#include <unistd.h>

int main(){  
system("java main"); 
return 0; }
#包括
int main(){
系统(“java main”);
返回0;}

有关SUID位的更多详细信息。

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

sudo your-app
必须允许用户使用超级用户权限。在执行命令之前,系统会提示他输入密码。有关
sudo
的更多信息,请浏览本网站


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

这是Mac OS X唯一的东西吗?这是限制访问网站的最佳方式吗?当然,代理服务器方法更灵活、更易于运行?问题是缺少有关目标操作系统的信息。我相信代理服务器会更有效,但这是一种非常快速、自制的方法。