无法创建目录错误

Posted

技术标签:

【中文标题】无法创建目录错误【英文标题】:Unable to create the directory error 【发布时间】:2015-04-01 00:11:14 【问题描述】:

我创建了一个新的子域并将WAR文件上传到它的目录,但是服务器返回以下错误。

java.io.IOException: Unable to create the directory[/home/jack/public_html/WAR/MYWAR]
.....

WAR文件夹和WAR文件的权限为0755。

drwxr-xr-x  4 jack jack      4096 Feb  2 02:43 ./
drwxr-xr-x 10 jack nobody     4096 Jan 25 01:48 ../
drwxr-xr-x  2 jack jack      4096 Jan 24 22:38 cgi-bin/
-rwxr-xr-x  1 jack jack  82135738 Feb  2 02:23 MYWAR.war*
drwxr-xr-x  4 jack jack      4096 Jan 25 01:31 WEB-INF/

ps -aux | grep tomcat

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root      1239  0.0  0.0 103240   864 pts/2    S+   04:38   0:00 grep tomcat
root      1330  0.0  0.0  10436   352 ?        Ss   Feb01   0:00 jsvc.exec -user tomcat -cp ./bootstrap.jar -Djava.endorsed.dirs=../common/endorsed -outfile ../logs/catalina.out -errfile ../logs/catalina.err -verbose org.apache.catalina.startup.Bootstrap start
tomcat    1334  0.2 14.9 1566688 151852 ?      Sl   Feb01   1:38 jsvc.exec -user tomcat -cp ./bootstrap.jar -Djava.endorsed.dirs=../common/endorsed -outfile ../logs/catalina.out -errfile ../logs/catalina.err -verbose org.apache.catalina.startup.Bootstrap start

【问题讨论】:

运行这个程序的用户是什么,要创建的目录的上层目录的所有者是什么? 我在哪里可以找到这些信息? ps 辅助 | grep programm name, 对于目录 ls -al @armnotstrong 输出是 root 1196 0.0 0.0 103240 864 pts/2 S+ 04:35 0:00 grep MYWAR 尝试 ps -aux | grep tomcat 【参考方案1】:

0755 是 rwxr-xr-x。如果您不是目录的所有者(通常是用户nobody),则不能在目录中写入。您需要是目录或根目录的所有者才能在该位置写入。

【讨论】:

谢谢,请问如何解决这个问题?我刚刚更新了问题 ls -l 将向您显示 linux 机器上的权限和所有者 也许是sudo chmod g+w the_directory_in_which_you_want_write? (如果您只是在目录所有者的组中:最好只允许对全世界的组)【参考方案2】:

我们需要确保 Tomcat 有权完全访问这些文件夹。首先确定 Tomcat 在哪个用户或组中运行。接下来授予该用户和/或组所有权。例如,以下代码将更改目录 test 文件夹及其下所有内容的所有权:

sudo chown -R owner:group /home/blabla/test

这将赋予所有者和组执行命令的所有权。 http://www.computerhope.com/unix/uchown.htm

接下来我们使用 chmod 来授予权限,该权限定义了文件所有者(“用户”)、拥有该文件的组的成员(“组”)的权限

http://www.computerhope.com/unix/uchmod.htm

【讨论】:

谢谢,请阅读我的 cmets 提出的问题,我已经将 tomcat 添加到一个组并授予对该组的完全访问权限,但它还没有解决问题。 @Jack 无法创建目录“/home/jack/public_html/WAR/MYWAR”。我怀疑您的“MYWAR”目录已经存在,因此无法再次创建它。如果是这种情况,请先删除 MYWAR 目录。 不,不是目录中只有一个 MYWAR.war 文件。 好的,能不能通过chmod把WAR目录的权限从775改成777,看看能不能用 你能做到吗?这是命令:sudo chmod 777 /home/jack/public_html/WAR【参考方案3】:

尝试:

sudo chown -R tomcat:tomcat /home/jack/public_html/

您可能不需要更改整个public_html,但您可以尝试查看它是否有效,然后将权限限制为您想要的文件夹。

【讨论】:

【参考方案4】:

看来你需要

授予组对 WAR 目录的完全访问权限

sudo chmod 775 /home/jack/public_html/WAR/

然后将目录的组改为tomcat

chown -R jack:tomcat /home/jack/public_html/WAR/

【讨论】:

【参考方案5】:

如果权限,用户和组是正确的。也许答案是selinux。

【讨论】:

【参考方案6】:

首先检查tomcat根目录的权限和所有权。在我的情况下 /usr/share/tomcat/

chown -R tomcat:tomcat /usr/share/tomcat

检查 selinux。

获取强制

如果它会返回 Enforcing set selinux to Permissive

setenforce 0

然后重新启动 tomcat 并从 tomcat 重新加载应用程序。问题将得到解决。

【讨论】:

以上是关于无法创建目录错误的主要内容,如果未能解决你的问题,请参考以下文章

无法安装软件 错误提示:无法创建目录和文件!急急!!

无法创建颤振项目:没有为输出目录错误指定选项

mkdir:无法创建目录:协议错误:Virtualbox 共享文件夹

Android内核编译-cp:无法创建常规文件'..img/zImage':没有这样的文件或目录错误

创建虚拟目录 http://localhost:1001/ 失败,错误: 无法创建网站

msbuild 错误 MSB3191:在远程服务器中发布时无法创建目录