FreeBSD 标志、immutable 和 unlink 之间有什么区别?

FreeBSD 标志、immutable 和 unlink 之间有什么区别?

FreeBSD 标志 simmutable/uimmutable 和 sunlink/uunlink 之间有什么区别或相似之处?

阅读手动更改标志,我看到这些标志:

schg, schange, simmutable
    set the system immutable flag (super-user only)
sunlnk, sunlink
    set the system undeletable flag (super-user only)
uchg, uchange, uimmutable
    set the user immutable flag (owner or super-user only)
uunlnk, uunlink
    set the user undeletable flag (owner or super-user only)

我目前对不可变属性的理解与 Linux 手册页描述的方式相同chattr

具有“i”属性的文件无法修改:无法删除或重命名,无法创建到该文件的链接,也无法向该文件写入任何数据。只有超级用户或拥有 CAP_LINUX_IMMUTABLE 能力的进程才能设置或清除该属性。

FreeBSD 中“不可变”和“不可删除”有何不同?

答案1

来自系统调用的联机帮助页更改标志(2):

SF_IMMUTABLE   The file may not be changed.
SF_NOUNLINK    The file may not be renamed or deleted.
[...]
UF_IMMUTABLE   The file may not be changed.
UF_NOUNLINK    The file may not be renamed or deleted.

带有前缀的标志SF_只能由超级用户设置或取消设置。其他前缀为UF_可以由文件所有者或超级用户设置或取消设置。

笔记:如果设置了其中一个SF_标志,则非超级用户无法更改任何标志,甚至超级用户也只能在 securelevel 为 0 时更改标志。

可以使用 sysctl(8) 对 kern.securelevel 变量设置安全级别。

相关内容