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。
您的原始/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?
我的 tmpfs 设置是:
tmpfs /tmp tmpfs rw,mode=1777,size=12g
Run Code Online (Sandbox Code Playgroud)
该大小适用于您可能拥有更多内存和交换空间的系统。 noatime或者relatime应该不重要,因为索引节点将是内存结构并且不太可能写入磁盘。 tmpfs如有必要,将被调出以进行交换。
755 的权限/tmp可能是挂载点上的默认权限。传统权限为 1777,允许任何人创建文件,但保护它们不被其他用户操纵。
| 归档时间: |
|
| 查看次数: |
37109 次 |
| 最近记录: |