仅允许 root 更改文件系统

仅允许 root 更改文件系统

我管理的 VPS 使用简单的硬链接 rsync 存档每日备份系统,保存到循环文件中。这很棒,因为每个备份仅占用每天更改内容的空间,并且所有用户/组权限都保留。

我希望让用户直接访问每个备份中的主目录,但我担心备份数据会被故意或意外破坏,因为目前用户实际上可以更改、破坏或添加他们最初拥有的备份数据。我一直在寻找一种类似于 ro 安装选项的方法来安装此文件系统,但仍允许 root 具有 rw 访问权限,但我完全没有运气。换句话说,我希望用户能够查看和复制他们的备份数据,而实际上不能更改它,并让这些数据保持原始权限。

就文件系统而言,我没有真正的偏好,只要它是一个标准的 unix 文件系统,可以保留权限、支持硬链接并拒绝用户的写访问,而无需实际剥夺所有内容的 w 权限。

答案1

将备份挂载到只有 root 可以访问的位置,并设置用户可访问的只读绑定挂载。例如,

%chown root:root /root/.private
%chmod 700 /root/.private
%安装-o rw [...] /root/.private/mnt

%安装--bind /root/.private/mnt /export/mnt
%安装-o重新安装,ro /导出/ mnt

现在/root/.private/mnt仅对 root 具有读写权限,/export/mnt对所有人则为只读。

只读绑定挂载需要 Linux 内核 2.6.26 或更高版本。请注意,绑定后必须执行重新挂载才能更改挂载选项。


我不知道有什么方法可以执行重新挂载fstab;我的rc.local设置是调用如下所示的脚本:

#!/usr/bin/perl -an
BEGIN{@ARGV=qw(/etc/fstab /proc/mounts)}/#/,or$o{$F[1]}[@ARGV]=",$F[3],"}{$$b[0]=~/,rw,/&&$$b[1]=~/,ro,/&&system qw(mount -o remount,ro),$a while($a,$b)=each%o

相当糟糕的代码(表明我经常太平洋海岸警卫队对我来说太频繁了),但它从未打算被共享……基本上是强制在 中remount,ro的所有内容,但在 中。我已经编写了脚本,因为我有十几个这样的东西;如果你只有一个,我会在一个简单的 shell 脚本中对其进行硬编码。ro/etc/fstabrw/proc/mounts

相关内容