我想挂载一个 tmpfs/tmp
并使其对用户(或特定用户)可写入。该机器是装有 Debian 8.0(Raspian)的 Raspberry Pi 3。无论我尝试什么,/tmp
它始终只具有权限root
。
我尝试过以下fstab
条目:
tmpfs /tmp tmpfs nosuid,nodev,noatime 0 0
tmpfs /tmp tmpfs nosuid,nodev,noatime,user,uid=1000,gid=1001,mode=1777 0 0
这总是会导致以下权限:
$ ls -alh /tmp
total 36K
drwxr-xr-x 14 root root 500 Jul 19 10:17 .
但是如果我将 tmpfs 安装到除/tmp
(例如/var/opt
)之外的任何其他位置,则每个人都可以写入:
$ ls -alh /var/opt
total 4.0K
drwxrwxrwt 2 root root 40 Jul 3 12:18 .
我如何挂载 tmpfs/tmp
以便每个人都可以写入?
输出mount
:
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
tmpfs on /var/opt type tmpfs (rw,nosuid,nodev,relatime)
如果使用所有 uid、gid 和 mode 选项进行挂载:
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,noatime,uid=1000,gid=1001)
编辑:是否有任何 Linux 服务在启动时将目录的权限设置为 755 /tmp
?因为即使我只是符号链接/tmp
到/var/opt
,也会设置这些权限,而这本身对任何人都是可写入的。使用从/tmp
到 的符号链接启动后/var/opt
, 上的权限/var/opt
设置为 755。
答案1
您的原始/etc/fstab
行是正确的:
tmpfs /tmp tmpfs nosuid,nodev,noatime 0 0
对于 的符号链接/tmp
,例如/var/spool
、/var/tmp
和可能/var/opt
(不确定),删除符号链接,将其替换为空目录,然后添加新行以/etc/fstab
创建另一个挂载,例如:
tmpfs /var/spool tmpfs defaults,noatime,nosuid,nodev,noexec,mode=0755,size=64M 0 0
要查找所有此类符号链接:
sudo find / -lname '/tmp*' 2>/dev/null
这样做的原因是,在启动时,某些目录的权限/var/spool
会发生改变,并且chmod
符号链接会改变目标目录。
答案2
我的 tmpfs 设置是:
tmpfs /tmp tmpfs rw,mode=1777,size=12g
该大小适用于您可能拥有的具有更多内存和交换的系统。 noatime
或者relatime
不应该有关系,因为 inode 将是内存结构并且不太可能写入磁盘。 tmpfs
如果需要,将被分页到交换区。
755 的权限/tmp
很可能是挂载点的默认权限。传统的权限是 1777,允许任何人创建文件,但确保文件不被其他用户操纵。