Ita*_*not 134
是的,您可以将文件的属性更改为只读。
命令是:
chattr +i filename
Run Code Online (Sandbox Code Playgroud)
并禁用它:
chattr -i filename
Run Code Online (Sandbox Code Playgroud)
来自man chattr:
具有该
i属性的文件无法修改:无法删除或重命名,无法创建指向该文件的链接,也无法将数据写入该文件。只有超级用户或拥有该CAP_LINUX_IMMUTABLE能力的进程才能设置或清除该属性。
Tho*_*sen 84
将其刻录到 CD。将 CD 放入 CD-ROM 驱动器并从那里访问它。
小智 29
例子:
# 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
Run Code Online (Sandbox Code Playgroud)
小智 7
您还应该为该文件创建多个硬链接。这些应该位于普通用户无法访问的各个位置。
这样,即使他们确实设法覆盖了您的 chattr 保护,数据仍将保留,您可以轻松地将其恢复到您的应用程序正在查找的位置。
Linux 有所谓的绑定挂载选项,这是一个非常强大且有用的功能,需要了解:
% cd $TMP && mkdir usebindmountluke && cd usebindmountluke
% echo usebindmountluke > preciousfile
% sudo mount -B preciousfile preciousfile
% sudo mount -oremount,ro preciousfile
% echo sowhat > preciousfile
zsh: read-only file system: preciousfile
% rm preciousfile
rm: cannot remove ‘preciousfile’: Read-only file system
Run Code Online (Sandbox Code Playgroud)
— 这里所做的是绑定挂载文件到它自己(是的,你可以在 Linux 中这样做),然后它在 R/O 模式下重新挂载。当然,这也可以对目录进行。
其他人已经按照你的要求回答了你的问题。正如@Sven 在评论中提到的,问题的一般解决方案是“如何确保我永远不会丢失文件?” 是创建文件的备份。制作文件的副本并将其存储在多个位置。此外,如果文件非常重要,并且您的公司有使用备份服务备份重要数据的策略,您可能会考虑将此文件包含在服务中。
在 Linux 上,不可变标志仅在某些类型的文件系统上受支持(大多数本地文件系统,如ext4, xfs, btrfs...)
在不支持它的文件系统上,另一种选择是以只读模式绑定挂载文件。这必须分两步完成:
mount --bind file file
mount -o remount,bind,ro file
Run Code Online (Sandbox Code Playgroud)
不过,这必须在每次启动时完成,例如通过/etc/fstab.
| 归档时间: |
|
| 查看次数: |
39567 次 |
| 最近记录: |