![更新:](https://linux22.com/image/60051/%E6%9B%B4%E6%96%B0%EF%BC%9A.png)
我的中有以下行/etc/fstab
:
/dev/mapper/tmp /tmp ext4 noexec,nodev,nosuid,mode=1777 0 0
当我尝试安装时/tmp
,出现以下错误dmesg
:
EXT4-fs (dm-1): Unrecognized mount option "mode=1777" or missing value
我如何指定/tmp
将具有权限1777
?我每次启动时都会重新创建(格式化)文件系统/dev/mapper/tmp
,因此权限无法在重新启动后保留。
从我谷歌搜索的内容来看,mode=1777
应该可以完成这项工作。但这对我不起作用。
更新:
为了使情况更具说明性,这是我正在使用的脚本:
cryptsetup --key-file /dev/urandom create tmp /dev/sda2
mkfs.ext4 /dev/mapper/tmp > /dev/null 2>&1
该脚本在引导序列期间运行,之后checkroot
。然后,稍后当bootall
想要挂载时/tmp
,它会在 fstab 中看到该条目并挂载/dev/mapper/tmp
为/tmp
。
由于我在每次启动期间创建LUKS
设备,因此每次都必须格式化分区。与一些人在这里评论的相反,权限不要格式化后仍然存在。明显地。
答案1
通过systemd
启用的系统,您可以使用tmpfiles
.man 5 tmpfiles.d
详情请参阅。
/etc/tmpfiles.d/tmp.conf
创建一个包含以下内容的文件:
d /tmp 1777 root root - -
systemd-tmpfiles-setup.service
会照顾你的权限。
答案2
/tmp
除非您需要的空间大于可用 RAM+交换空间的大小,否则您可以考虑使用基于tmpfs
-based 的/tmp
磁盘(本质上是 RAM 磁盘),并使用之前分配的磁盘空间来/tmp
增加交换空间。
它只会使用当前内容所需的 RAM,并且如果 RAM 变低,则会将最近最少使用的内容移至交换区。
你只需要/etc/fstab
这样一行:
tmpfs /tmp tmpfs rw,mode=1777 0 0
默认最大大小限制是可用 RAM 的 50%。您可以使用该size=
选项指定另一个最大大小,可以是可用 RAM 的百分比,也可以是字节数(带有可选的k
,m
或g
后缀,表示基于 1024 的千/兆/千兆字节)。
如果您已经在使用每次重新启动时都会重新加密的加密交换,这将为您提供有效的类似/tmp
免费重新加密,如果您有足够的 RAM 来保存/tmp
.
答案3
将行更改/etc/fstab
为:
/dev/mapper/tmp /tmp ext4 noexec,nodev,nosuid 0 0
然后登录并发出:
chmod 1777 /dev/mapper/tmp
下次重新启动/etc/fstab
就足够了,因为它chmod
是永久的。您正在尝试在本机 Linux 文件系统 (ext4) 中使用专为 Windows 安装(fat、ntfs 等)设计的选项。相反,您可以使用 chmod 更改文件夹的权限。
您不能在 中使用模式ext4
。因此,您可能需要以其他方式挂载您创建的文件系统。您可以ext3
在其他地方创建分区。