Java代码访问根文件夹获取访问被拒绝错误

时间:2019-07-02 11:11:51

标签: java

我正在尝试使用Java在Linux系统(Ubuntu)的根文件夹中创建文本文件。我的问题是我收到访问被拒绝的消息。我的用户是普通用户,所以我试图用root用户创建文件,但是我被卡在这里。

这是我的代码:

package --------.com;
import java.io.File;
import java.io.IOException;

public class CreateFileDemo
{
   public static void main( String[] args )
   {    
      try {
         File file = new File("/root/newfile.txt");

             boolean fvar = file.createNewFile();
         if (fvar){
              System.out.println("File has been created successfully");
         }
         else{
              System.out.println("File already present at the specified location");
         }
        } catch (IOException e) {
            System.out.println("Exception Occurred:");
            e.printStackTrace();
      }
   }
}

2 个答案:

答案 0 :(得分:0)

我认为您应该首先了解Linux文件系统权限: 通常:

  • 根文件夹/属于 root (惊奇),而不是单个用户。
  • 个人用户没有有权直接在/下创建或修改文件。

因此,首先,让普通用户在/下创建文件的想法很简单:错误。您不应该打开那扇锁着的门。

现在,仍然可以做到这一点:

  • 使用sudo(作为root进程)运行整个JVM:显然,这打开了一大堆与安全性相关的蠕虫。所以:不要那样做。因为在该JVM中发生的任何事情都是通过root权限完成的。
  • 或者:您可以可以运行诸如sudo touch /root/newfile.txt之类的系统命令,然后使用诸如sudoers之类的系统命令来避免被询问,而不是使用Java API创建该文件输入密码。

换句话说:您要么必须将整个JVM作为root进程运行(禁止使用),要么必须具有“ root”权限进行系统调用。

答案 1 :(得分:0)

只需使用$ chmod 777 file_name.txt