我有一个当前位于 的脚本文件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