这是一个同事刚刚发现的奇怪的事情。作为标题,/ var / tmp具有777权限。我们有一个我们必须使用的库(但是没有源访问权限,令人失望),当使用它时创建一个临时文件来完成它的工作(不知道它实际上是用这个文件做什么),然后立即删除它。至少,那是应该发生的事情。 当/ var / tmp是root:root所有时,文件永远不会被删除,永远不会被关闭。如果我们将所有者更改为用户:用户它完美地工作,则创建和删除文件的速度比检测到的速度快。 这只发生在他的Ubuntu 14.04 32位机器上。我们还有一个Ubuntu 12.04 64位,Debian 7 32和64位,CentOS6 32和64位,以及CentOS5 32位,这种行为在其他任何一个都没有出现,无论谁拥有/ var /,它们都完全符合预期TMP
这是一个问题,因为在这个库大约1000次执行之后,该进程会达到文件限制并拒绝继续。
任何人都可以想到一个目录可以拥有777权限的情况(虽然由root拥有),允许用户进程创建文件,但是然后无法删除该文件?
非常感谢!
编辑:进程以/ var / tmp所拥有的用户身份运行,以使其正常工作。
$ ls -ltrd /var/tmp/*
drwxr-xr-x 2 user user 4096 Oct 7 2013 /var/tmp/audacity-user
drwx------ 2 root root 4096 Nov 28 2013 /var/tmp/kdecache-root
drwx------ 3 user user 4096 Apr 25 18:07 /var/tmp/kdecache-user
-rw------- 1 root root 3 Jul 3 11:07 /var/tmp/zhanceqDC3256C54D298DEE.dat
-rw------- 1 user user 3 Jul 3 14:25 /var/tmp/homjeaocAADD02BC6EDB687D.tmp
我正试图让我的同事在问题发生时给出类似的目录列表,但他突然走了出来,直到明天才可能回来。
答案 0 :(得分:0)
没关系,问题已被发现。不知道完整的事件序列,但问题是“zhanceqDC3256C54D298DEE.dat”文件。显然这个库也会创建这个文件并可能删除它:当目录由root拥有时,即使拥有777权限也无法删除该文件。当目录由用户拥有时,它可以。 修复它的另一种方法是简单地sudo rm文件并让库自己创建它。 这个过程只是以用户身份运行,从不作为root用户运行,而只是为了测试它我以root用户身份运行它(以及第三个用户),并且在每种情况下它都会创建一个具有相关用户所有权的不同文件(某种用户)用户绑定guid我猜),所以这个人如何设法进入这种情况可能会永远不为人知。