【问题标题】:What Folder(s) Can My Tomcat Application Write To on Ubuntu Server我的 Tomcat 应用程序可以在 Ubuntu 服务器上写入哪些文件夹
【发布时间】:2013-05-21 08:31:22
【问题描述】:

我不确定在这种情况下我使用 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 实例上以开发模式运行时,这工作得很好,但是当代码在服务器上运行时失败。这可能是因为在开发框中,用户已登录,因此打开了写入 /home/username 文件夹的权限?在服务器上,程序运行时用户实际上并未登录...

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

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

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

【问题讨论】:

    标签: java tomcat io ubuntu-server


    【解决方案1】:

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

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

    【讨论】:

    • 抱歉,这是我第一次运行生产服务器,但这是一次了不起的学习体验,诚然我对这个话题有点新鲜。因此,如果我在 home/username 文件夹中创建一个名为 appdata 或其他内容的目录并将其设置为 755,这不是安全威胁吗?
    • 附言。你完全正确,用户名是 tomcat7。我不知道它改变了用户名。希望我的例外提到...
    • 另外,如何在创建文件夹命令中使用用户名?我需要在某处设置密码吗?
    • 关于如何更改权限的有用问题:askubuntu.com/questions/6723/…
    猜你喜欢
    • 2014-03-05
    • 2010-10-22
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2012-05-05
    相关资源
    最近更新 更多