我创建了一个寿命很短的临时目录,希望在几个用户之间共享几个小时:/some/path/tmp

不幸的是,我启动了sudo chown 777 -R /tmp而不是sudo chown 777 -R tmp,所以我的/tmp文件现在是完全公开的。

现在已经完全公开了,这是否引起安全问题?我应该将其更改回更安全的设置吗? /tmp的正确权限是什么?

评论

请注意,我在最初的答案中忘记了一些重要的事项:X11套接字需要可公开访问,否则您将无法启动新的GUI应用程序。我已经更新了答案。

是chown还是chmod?

@Melebius我对您的问题感到有些困惑:我没有提到chmod。 chown(类似于ch-own)是关于文件所有权的,该用户拥有文件。 chmod(例如ch-modifify)更多地涉及谁可以执行,内部写入或读取文件内容。

@StephaneRolland是的,这就是让我感到困惑的地方。您可以使用chown 777来将文件的所有权设置给ID 777的用户。但是,所有答案(包括已接受的答案)都可以与chmod一起使用。由于所有用户都将所有用户(所有者,组,其他)的权限设置为相同的值,因此文件所有权的大多数影响都变得无关紧要。但是,更正sudo chown 777 -R / tmp结果的正确命令应该是sudo chown root -R / tmp。

#1 楼

/tmp的常规设置为1777,ls显示为drwxrwxrwt。那就是:完全打开,只是只有文件的所有者才能删除它(这是对目录的额外t位的意思)。可能会删除您创建的文件并替换其选择的内容。

如果/tmp是tmpfs文件系统,则重新启动将恢复所有内容。否则,请运行/tmp

另外,chmod 1777 /tmp中的许多文件都需要私有。但是,至少有一个目录至关重要,它必须是世界可读的:/tmp,可能还需要其他一些类似的目录(/tmp/.X11-unix等)。以下命令通常应该设置正确的内容:

chmod 1777 /tmp
find /tmp -mindepth 1 -name '.*-unix' -exec chmod 1777 {} + -prune -o -exec chmod go-rwx {} +


即将所有文件和目录设为私有(删除组和其他用户的所有权限),但使X11套接字对所有人开放。这些套接字上的访问控制由服务器而不是文件许可权实施。可能还有其他套接字需要公开使用。运行/tmp/.XIM-unix来发现您可能需要使世界可访问的root拥有的套接字。也可能有其他系统用户拥有的套接字(例如,与系统总线进行通信);使用find /tmp -type s -user 0(其中find /tmp -type s ! -user $UID是您的用户ID)进行浏览。

评论


你能再解释第二个chmod吗?

–Bartlomiej Lewandowski
13年4月8日在8:38

@BartlomiejLewandowski go-rwx:没有群组和其他人的权限。这会将权限设置为rwx ------(除了自chmod以来创建的文件可能最终拥有较少的权限,例如rw -------)。换句话说,这些文件只能由其所有者访问。 /tmp/.[!.]*将包含/ tmp中通常存在的点文件。

–吉尔斯'所以-不再是邪恶的'
13年4月8日在9:28

+ t称为粘性位。这就是使所有者以外的任何人都无法删除文件的方法,即使许可权限为777,也是如此。粘性位最初是让内核在退出程序时将它们留在内存中,因此在下次运行时不必从磁盘中获取它们。我们正在谈论PDP11天。

–kurtm
13-10-8在21:51

@GabrielFair我将使用通配符的命令替换为使用find的命令,这不会遇到该问题。

–吉尔斯'所以-不再是邪恶的'
18年4月21日在8:58

@alper不,不要那样做。 / tmp本身是1777,每个人都可以写。 / tmp中的几乎所有目录只能由其所有者读取和写入。

–吉尔斯'所以-不再是邪恶的'
20年7月28日在7:06

#2 楼

/tmp/var/tmp应该具有对所有人的读取,写入和执行权限;但是您通常还会添加粘性位(o+t),以防止用户删除属于其他用户的文件/目录。因此,chmod a=rwx,o+t /tmp应该可以工作。

以递归方式更改权限...只要所有者/组保持文件和目录的原样,那应该不成问题。但是您可以通过删除其他人或该组的/tmp权限来更改rx下所有内容的权限(而不是/ tmp本身)以确保用户的隐私。

查找是一种很好的方法这个。以root用户身份执行:

cd /tmp
find . -type f -exec chmod u=rw,go= {} \;   # (or u=rw,g=r,o= {})
find . -type d -exec chmod u=rwx,go= {} \;  # (or u=rwx,g=rx,o= {})


评论


在典型的桌面系统上,最好也使/tmp/.X11-unix/*成为世界可读的,否则您将无法再启动X应用程序。

–吉尔斯'所以-不再是邪恶的'
13年4月8日在22:51

chmod a = rwX,o + t / tmp -R应该可以找到魔术。

–寒意
16年4月4日在22:12

@dhill,您的命令以奇怪的权限结束:-rw-rw-rwT这些不是原始权限

–rubo77
20年4月12日在4:29

#3 楼

[root@Niflheim tmp]# ls -alF .
total 1632
drwxrwxrwt 15 root root    4096 Apr  7 04:24 ./
drwxr-xr-x 28 root root    4096 Apr  2 21:02 ../
[root@Niflheim tmp]# stat -c '%A %a %n' .
drwxrwxrwt 1777 .


从CentOS 5.9计算机上。