停止强制保存具有只读权限的文件

停止强制保存具有只读权限的文件

我有一个当前位于 的脚本文件sudoers,为了安全起见,我希望该文件是只读的...所以我发出了以下 chmod:

chmod 555 test.sh

现在该文件的权限是

-r-xr-xr-x  

然而,当我去 vi 这个文件时,即使它说W10: Warning: Changing a readonly file,我仍然可以做“w!”强制保存它。我怎样才能禁用强制保存,以便普通用户根本无法写入此文件?

答案1

在 Linux 系统上,设置不可变文件属性查特尔

sudo chattr +i file

具有“i”属性的文件无法修改:无法删除或重命名,无法创建到该文件的链接,无法修改该文件的大部分元数据,并且无法以写入模式打开该文件。只有超级用户或拥有 CAP_LINUX_IMMUTABLE 能力的进程才能设置或清除该属性。

用于lsattr列出文件的属性。

lsattr -l myfile
myfile    Immutable

这样做的缺点是,即使作为超级用户(root),您也无法写入该文件。您需要首先删除不可变属性:

sudo chattr -i file

在 macOS 上,chflags命令用于设置和重置不可变标志。设置:

chflags uchg file

并取消设置或清除:

chflags nouchg file

这些操作可以由文件所有者或超级用户执行。

对于 macOS,使用-Ol标志显示设置时ls的不可变标志。uchg

相关内容