无法创建目录错误
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 辅助 | grepprogramm 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':没有这样的文件或目录错误