我pipe理的VPS使用一个简单的硬链接rsync归档每日备份系统保存到一个循环文件。 这很好,因为每个备份只占用每天更改的空间,并保留所有的用户/组权限。
我想让用户在每个备份中直接访问他们的主目录,但是我担心有意或意外的备份数据被破坏,因为现在用户实际上可以更改,销毁或添加他们原来拥有的备份数据。 我一直在寻找一种方法来挂载这个类似于挂载选项的文件系统,但是仍然允许rw访问root的东西,但是我绝对没有运气。 换句话说,我希望用户能够查看和复制其备份的数据,而无需实际修改数据,并保持原始权限。
至于文件系统,我没有真正的喜好,只要它是一个标准的unix文件系统,可以保留权限,支持硬链接,并且拒绝对用户的写入访问,而不会实际上剥夺所有权限。
将备份挂载到只能以root身份访问的位置,并使用户可以访问只读绑定挂载。 例如,
%chown root:root /root/.private %chmod 700 /root/.private %mount -o rw [...] /root/.private/mnt %mount --bind /root/.private/mnt / export / mnt %mount -o remount,ro / export / 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
相当可怕的代码(显示我为了自己的利益而经常挂在PCG上 ),但是它并没有打算被共享……基本上强制remount,ro ro在/etc/fstab所有内容,但是是rw in /proc/mounts 。 我有它的脚本,因为我有一打这些; 如果你只有一个我只是硬编码在一个简单的shell脚本。