6

我不确定在这种情况下我使用 Ubuntu Server 是否重要。当我尝试使用 File.mkdirs() 方法创建文件夹时,它不会抛出异常,只是永远不会工作。

可以在此处找到对特定代码引用问题的更大解释:无法在服务器上创建目录。权限问题?

我写一个新问题的原因是因为我想知道我是否因为权限而在服务器上创建目录时遇到问题。

String path = /home/username/foldertocreate;
File file = new File(path);
file.mkdirs();

所以我试图在 /home/username 目录中创建一个文件夹。当我在我的开发盒和 Eclipse 内的 tomcat 实例上以开发模式运行时,这工作得很好,但是当代码在服务器上运行时失败。这可能是因为在开发框中,用户已登录,因此打开了写入 /home/username 文件夹的权限?在服务器上,程序运行时用户实际上并未登录......

是否有我可以写入的特定文件夹?

我检查了当前设置为 700 的文件夹的权限。这可能是问题吗?将此文件夹设置为 666 或 777 是否安全?即使用户未登录,此文件夹是否可写?

更新:尝试将文件夹权限更改为 755,但没有成功。

4

1 回答 1

6

如果您使用的是 ubuntu 的打包版本的 tomcat,则它在不同的用户帐户下运行 - 很可能名为“tomcat”。仔细检查ps aux | grep catalina- 这将显示 Tomcat 正在运行的用户名,如第一列所示。正是这个用户帐户需要能够创建目录/文件。

出于这个原因,您可能不想打开任意主目录以使其可全局写入,而是在某处配置特定目录以供 tomcat 用户访问。设置 755 权限为所有者提供读/写/执行权限,而其他所有人都获得读/执行权限。如果 'tomcat' 不是所有者,它将无法在这些目录中创建任何内容。但不要落入陷阱chmod 777——除非是为了快速测试。

于 2013-05-26T08:40:34.037 回答