#1 楼
是的,您可以将文件的属性更改为只读。命令是:
chattr +i filename
并禁用它:
chattr -i filename
来自
man chattr
:具有
i
属性的文件无法修改:无法删除或重命名,没有链接可以创建到该文件,并且不能将任何数据写入该文件。只有超级用户或具有CAP_LINUX_IMMUTABLE
功能的进程才能设置或清除此属性。评论
对于感兴趣的人,bsd等效项是chflags schg
–安德鲁·多马塞克(Andrew Domaszek)
2014年12月2日,16:10
请注意,具有root用户访问权限的用户可以取消设置该标志,然后删除该文件。这不太可能偶然发生,但不能防止故意删除。
–授予
2014年12月2日于16:42
@Grant,如果Securelevel设置得足够高则不会。引导过程会在启用网络之前将安全级别设置为2,因此重置标志需要本地计算机访问(但这意味着在此之前引导过程中使用的文件也必须是不变的)。
–西蒙·里希特(Simon Richter)
2014年12月2日在17:38
@Grant如果想将其发挥到极致,则无法防止在10 ^ 30年内删除分区或将磁盘放入熔炉或质子衰减...
–哈根·冯·埃岑
2014年12月2日在21:27
@Itai Ganot男人,我希望我4天前读过它。我参加的考试是一个问题= /
–vfbsilva
2014年12月3日20:41
#2 楼
将其刻录到CD。将CD放入CD-ROM驱动器中,然后从那里进行访问。评论
开箱即用的+1。而且,afaik在某些情况下也曾使用过它(带有cd的黑盒cdrom驱动器已运到目的地)。无论如何,如果有人能够断开驱动器,则可能不合适。
– Alex Mazzariol
2014年12月4日在16:49
吻。我喜欢它! +1
–MonkeyZeus
2014年12月4日20:56
我认为这是对这个问题的正确答案。更改文件属性(chattr -i)不能阻止恶意操作。
–布鲁诺·冯·巴黎
2014年12月5日在8:23
如今,内置读卡器中的全尺寸SD卡可能是一个更好的解决方案-更低的功耗,在许多情况下可以更快地访问以及在非写操作中更加耐用。
–克里斯H
2014年12月5日,9:53
@ jpmc26因此是CD-ROM驱动器。那些是只读的。
–特尔比约恩(ThorbjørnRavn Andersen)
2014年12月6日9:17
#3 楼
创建文件系统映像。
安装映像。
将文件复制到已安装的映像。
卸载该映像并将其重新安装为只读。
现在您无法删除它。
示例:
# dd if=/dev/zero of=readonly.img bs=1024 count=1024
# mkfs.ext2 readonly.img
# mkdir readonlyfolder
# mount readonly.img readonlyfolder/
# echo "can't delete this" > readonlyfolder/permanent.txt
# umount readonlyfolder
# mount -o ro readonly.img readonlyfolder
# cat readonlyfolder/permanent.txt
can't delete this
# rm readonlyfolder/permanent.txt
rm: cannot remove `readonlyfolder/permanent.txt': Read-only file system
评论
挂载-o重新挂载,rw readonlyfolder / && rm readonlyfolder / permanent.txt
–卡兹·沃尔夫(Kaz Wolfe)
2014年12月3日23:08
进一步讲,您可以使用压缩和只读的squashfs或cramfs。它需要一个特殊的工具来构建文件系统。
–赞·山猫
2014-12-5 17:44
这可能是一个愚蠢的问题,但是要阻止某人在未安装时删除readonly.img的原因是什么(如果需要,则需要事先卸下)?
–麦克·啮齿动物
20 Jan 25'at 11:23
#4 楼
您还应该创建指向该文件的多个硬链接。这些应该位于普通用户无法访问的各个位置。这样,即使他们确实设法覆盖了chattr保护,数据也会保留,并且您可以轻松地将其还原到应用程序所在的位置寻找它。
评论
硬链接不会保护文件的内容。
– 200_success
2014年12月3日上午8:02
但是,它们将提供附加的保护以防DELETION,这是最初的问题。
–烧烤
2014年12月5日20:28
@barbecue如果以应用程序查找文件的名称解除链接文件,则文件的内容以其他名称存在没有关系。对于使用所需名称查找文件的任何内容,该文件仍被删除。
–用户
2014年12月8日,12:36
我认为这是一个很好的解决方案,可能是同时保护措施之一。正如烧烤所说,问题特别是关于删除。其次,有人发现文件不存在的后果与文件是否被删除没有关系。场景:“ OMG,文件不见了!”,响应“检查其他硬链接”
–麦克·啮齿动物
20 Jan 25'at 11:27
#5 楼
Linux具有所谓的bind-mount选项,它是一个非常强大且有用的功能,它需要了解: ,您可以在Linux中执行此操作),然后将其重新安装为R / O模式。当然,这也可以在目录中完成。#6 楼
其他人已经按照您的要求回答了您的问题。正如@Sven在评论中提到的那样,该问题的一般解决方案是:“如何确保我永远不会丢失文件?”是创建文件的备份。复制文件并将其存储在多个位置。此外,如果文件非常重要,并且您的公司有使用备份服务备份重要数据的策略,则可以考虑将该文件包含在服务中。评论
好吧,当然可以定期备份文件了,我只想要另一层保护用户的权限,这些权限有时会在具有root用户权限的情况下运行。
–user256033
2014年12月3日8:37
#7 楼
在Linux上,不可变标志仅在某些类型的文件系统上受支持(大多数本机文件诸如ext4
,xfs
和btrfs
...)在不支持它的文件系统上,另一种选择是绑定-以只读模式在其自身上挂载文件。这必须分两步完成:mount --bind file file
mount -o remount,bind,ro file
但这必须在每次引导时完成,例如通过
/etc/fstab
。评论
我希望有人卸载该文件以再次获得写权限
–谁
17-10-24在3:18
#8 楼
杰里(Jerry)在对凯文(Kevin)答案的评论中提到:当然,该文件会定期备份,我只想再一层保护用户免受有时正在工作的影响在具有root用户权限的框中。 –
我将假设您无法更改此做法,因为这是一个非常非常糟糕的主意。
关于使用只读设备也有同样的问题-使其成为PITA,以便您在需要时进行合法更改。对于可锁定的驱动器(例如SD卡),您会遇到这样的问题:在解锁驱动器以进行更改时,您会突然变得脆弱。
我建议您进行设置作为NFS服务器的另一台计算机,并将具有重要文件的目录共享给用户所基于的计算机。将挂载共享为只读,这样您不信任用户的计算机就无法进行任何修改。当您需要合法地进行更改时,可以连接到NFS服务器并在此处进行更改。
我们将其用于我们的Web服务器,这样就无法成功利用Web Server进行攻击。插入或更改服务器随后将提供的任何文件,或更改配置。
请注意,可以以与所有与安装点相关的文件都可以使用的相同方式来绕过此文件:
制作受保护目录的副本
卸载目录
将副本移动到安装位置,或者如果该安装没有安装,则将其符号链接足够的空间。
评论
为什么定期备份重要文件并努力保护原始文件免遭意外删除是“一个非常糟糕的主意”?在OP的原始问题中,以及从OP对您引用的答案的评论中,很明显,所关注的不是恶意活动,而是意外/不称职的活动。
– Craig
2014年12月7日19:54
@Craig:让很多用户具有root用户是一个坏主意,特别是如果不信任他们不会破坏关键文件的话。
–乔H.
2014年12月8日在7:36
啊...当然是。 :-)但这不是OP问题的症结所在。 OP断言,应该保护某些具有root用户访问权限的用户,以防止他们意外删除文件。
– Craig
2014年12月8日在8:36
@Craig:这可能不是问题的症结,但这是问题的症结(XY问题?)……但我不知道他们作为root会做什么,因此如果他们可以使用setuid,和/或受限的sudo权限。您应该重新阅读该问题,因为杰瑞没有提到他只是想防止意外删除(“我需要确保它不会被删除”),而且他只提供了一个后续步骤,看到(触发了我的回应)。
–乔H.
2014年12月8日在8:46
请参阅OP对这个答案的回应
– Craig
2014年12月8日9:06
#9 楼
为什么不创建设计上只读的ISO 9660映像?安装ISO映像,它看起来像CD-ROM,但具有硬盘性能,并且挂载映像上的文件与删除物理CD-ROM上的文件一样安全。
将敏感文件刻录到CD并从CD-ROM上运行的想法很有趣,假设在文件上设置不可变位是不够的。
从物理CD上运行它有潜在的负面问题,包括性能(CD-ROM驱动器比硬盘慢很多,慢得多)驱动器或SSD)。好心人可能会将CD-ROM取出,并用他们需要访问的其他光盘代替。恶意方很可能只是将光盘取出并放入微波炉(或垃圾桶)中,从而“删除”文件。对于该文件和其他因素,必须拥有专用的硬件CD-ROM驱动器带来的不便。
但OP明确指出,主要目的是防止意外删除,而不是防止恶意行为,并且可以在发生事故时备份有问题的文件并且可以将其恢复,但是非常希望不要意外删除该文件。
似乎正在运行该文件从已装载的ISO映像中删除文件即可满足要求。
评论
根目录仍然可以通过直接操作图像来删除文件。这只是一个碰巧已挂载的普通文件。
–特尔比约恩(ThorbjørnRavn Andersen)
2014年12月9日下午0:24
@ThorbjørnRavnAndersen怎么回事? ISO 9660通过设计是不可变的。进行此更改的一方必须删除并替换整个ISO文件。不是说他们做不到。但是,即使没有,他们也无法在没有大量专业知识的情况下外科手术删除一个文件。从驱动器中删除物理CD-ROM并将其扔进垃圾箱会容易得多。 ;-)
– Craig
2014年12月9日下午0:29
无需复杂-只需用零覆盖图像文件即可。
–特尔比约恩(ThorbjørnRavn Andersen)
2014年12月9日,0:51
@ThorbjørnRavnAndersen我会很容易地承认这一点。需要注意的是,这将需要有意拆卸图像并覆盖它。彻底的调整会在那时将它切碎。但是,除非您拒绝对计算机的物理访问,将物理CD从驱动器中弹出并扔到垃圾箱中似乎比卸除和覆盖ISO文件要容易得多,尽管两者都很容易。 OP表示定期备份重要文件,因此这只是针对意外损坏的一种额外措施,而不是针对恶意捣蛋的一种额外措施。
– Craig
2014年12月9日在1:15
我已经指出了如何更改ISO9660映像,即使该映像无法更改也是如此。我的观点是,如果一点都可写,root可以写它。
–特尔比约恩(ThorbjørnRavn Andersen)
2014年12月9日12:43
评论
进行备份,以便可以将其还原...除此之外,chattr + i可能会有所帮助,但也会使该文件成为只读文件(并且可以用chattr -i覆盖),也可以尝试使用以下方法对其进行保护SELInux等root可以创建一个连root也无法杀死的进程吗?
@MarkGabriel是的。叉子炸弹。 :)
上帝,根,有什么区别?
硬件管理员可能会来取出磁盘,切碎,燃烧残留物并将其送入休斯。或者,更好的是,某些C(++)程序员可能会诱发一些鼻恶魔。对您而言重要的事情,请备份。两次。