我的Tomcat应用程序可以在Ubuntu服务器上写什么文件夹

时间:2013-05-26 07:13:22

标签: java tomcat io ubuntu-server

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

可以在此处找到有关特定代码引用的问题的更大解释:Cannot Create Directory On Server. Permission Issue?

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

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

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

我能写一个特定的文件夹吗?

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

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

1 个答案:

答案 0 :(得分:6)

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

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