如何通过 fstab 将 tmpfs 安装到 /tmp,并且对任何人都可写?

Chr*_*ger 4 linux raspberry-pi

我想挂载一个 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
Run Code Online (Sandbox Code Playgroud)

这始终会产生以下权限:

$ ls -alh /tmp
total 36K
drwxr-xr-x 14 root  root   500 Jul 19 10:17 .
Run Code Online (Sandbox Code Playgroud)

但是如果我将 tmpfs 安装到任何其他位置而不是/tmp(例如/var/opt),则每个人都可以写入:

$ ls -alh /var/opt
total 4.0K
drwxrwxrwt  2 root root   40 Jul  3 12:18 .
Run Code Online (Sandbox Code Playgroud)

如何挂载 tmpfs 以/tmp使其对每个人都可写?

输出mount

tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
tmpfs on /var/opt type tmpfs (rw,nosuid,nodev,relatime)
Run Code Online (Sandbox Code Playgroud)

如果使用所有 uid、gid 和模式选项进行安装:

tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,noatime,uid=1000,gid=1001)
Run Code Online (Sandbox Code Playgroud)

编辑:是否有任何 Linux 服务在启动时将目录的权限设置为 755 /tmp?因为即使我只是符号链接/tmp到,这些权限也会被设置/var/opt,它本身对任何人都是可写的。/tmp使用来自to 的符号链接启动后/var/opt,权限/var/opt设置为 755。

bit*_*ant 7

您的原始/etc/fstab行是正确的:

tmpfs /tmp tmpfs nosuid,nodev,noatime 0 0
Run Code Online (Sandbox Code Playgroud)

对于 的符号链接/tmp,例如/var/spool/var/tmp,也许/var/opt(不确定),请删除符号链接,将其替换为空目录,然后添加一个新行以/etc/fstab创建另一个挂载,例如:

tmpfs /var/spool tmpfs  defaults,noatime,nosuid,nodev,noexec,mode=0755,size=64M 0 0
Run Code Online (Sandbox Code Playgroud)

要查找所有此类符号链接:

sudo find / -lname '/tmp*' 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

这是必要的原因是,在启动时,某些目录的权限(例如)/var/spool会更改,并且chmod符号链接的权限会更改目标目录。

另请参阅为什么 /tmp 挂载权限为 0755,而 fstab 的权限为 1777?


Bil*_*hor 5

我的 tmpfs 设置是:

tmpfs           /tmp            tmpfs   rw,mode=1777,size=12g
Run Code Online (Sandbox Code Playgroud)

该大小适用于您可能拥有更多内存和交换空间的系统。 noatime或者relatime应该不重要,因为索引节点将是内存结构并且不太可能写入磁盘。 tmpfs如有必要,将被调出以进行交换。

755 的权限/tmp可能是挂载点上的默认权限。传统权限为 1777,允许任何人创建文件,但保护它们不被其他用户操纵。