【译】如何使用文件标志修改 macOS 中的文件行为

2024-08-31  本文已影响0人  AlphaHinex

原文地址:https://alphahinex.github.io/2024/09/01/macos-file-flags/


description: "macOS 中可以使用文件标志(flags)来限制文件被修改的方式。可以使用 chflags 来更改标志,ls 来查看标志"
date: 2024.09.01 10:34
categories:
- Mac
tags: [Mac, Linux]
keywords: flags, macOS, file, chflags, ls, hidden, nodump, sappnd, schg, uappnd, uchg, hidden, opaque, immutable, append, chattr, lsattr, arch


在 macOS 中,可以使用文件标志(flags)来限制文件被修改的方式。它们与文件权限不同,并且与 chownchmod 等命令并行运行。您将使用 chflags 来更改标志,以及使用 ls 来查看标志。Unix 运行一个类似的系统,但是选项更多,称为“属性”,而不是标志。

在 macOS 上查看已设置的标志

在终端中,您可以使用 ls 命令来查看任何已设置的标志。

$ ls -lO 
drwx------@ 88  alexander staff hidden 2992 Jan 25 14:01 Library

如果文件或文件夹没有设置标志,则会显示一个短横线。

$ ls -lO ~/Library/Caches
drwx------+ 234 alexander staff   -    7956 Jan 25 13:03 Caches

已设置的标志可以使用它们的相反形式来删除,就如下面描述的那样。

在 macOS 上设置和清除标志

文件标志通常以问题形式出现。因为它们会设置额外的权限,且很容易被忽略。您是否发现自己有一个无法删除的文件,无论您的用户权限有多高?您可能需要清除一个或两个标志。

可以在 macOS 上设置的标志如下所示。这是可用选项的完整列表,以及它们的功能说明。大多数标志只能由文件的所有者或超级用户设置;sappndschg 只能由超级用户设置,因为它们是系统级标志。只有隐藏标志可以在不升级权限的情况下设置。

在 macOS 上设置标志

在 macOS 上设置标志时,请使用以下命令。递归标志 -R 可用于目录级操作:

$ sudo chflags -R [标志] /usr/bin/local
$ sudo chflags [标志] /usr/bin/local/mnt.sh
$ chflags -R hidden ~/Desktop

将设置适当的标志。例如,以下命令将设置 nodump 标志:

sudo chflags nodump /usr/bin/local/tty.sh

每个 chflags 命令只能设置或删除一个标志。

译注:除上述选项外,还有 arch, archived 用于设置存档标志(仅超级用户)。完整选项列表可见 man chflags

在 macOS 上清除标志

要清除给定的标志,请设置其相反标志。在大多数情况下,这意味着在命令前加上“no”。对于 nodump,使用 dump 标志来清除,如下所示:

sudo chflags dump /usr/bin/local/oty.sh

更多标准选项可以使用“no”前缀进行反转,如下所示:

sudo chflags nosappnd /usr/bin/local/oty.sh

与 chmod 一样,递归标志也可用:

chflags -R nohidden ~/Desktop

清除标志后,您将可以按预期更改文件的所有权和权限。

在 Unix 上使用属性

Unix 在后台运行类似的系统,但是使用不同的命令处理。在最流行的 Linux 平台上,您将使用 chattrlsattr 来更改和查看“属性”,这也是文件标志在大多数其他 Unix 系统中的体现。

可以使用 lsattr 查看属性:

lsattr /path/to/file.txt

更改属性依赖于一组首字母缩写,并在 chattr man 页面 中列出:

“The letters ‘acdeijstuADST’ select the new attributes for the files: append only (a), compressed (c), no dump (d), extent format (e), immutable (i), data journalling (j), secure deletion (s), no tail-merging (t), undeletable (u), no atime updates (A), synchronous directory updates (D), synchronous updates (S), and top of directory hierarchy (T).”

“字母 ‘acdeijstuADST’ 选择文件的新属性:追加(a),压缩(c),不转储(d),扩展格式(e),不可变(i),数据日志(j),安全删除(s),不合并尾部(t),不可删除(u),不更新访问时间(A),同步目录更新(D),同步更新(S)和目录层次结构顶部(T)。”

命令如下所示:

chattr +s /file/name.txt

这将为指定路径设置安全删除属性。

总结

在限制谁可以更改文件时,标志非常有用。通过锁定文件,您可以在文件系统级别防止篡改或意外编辑。除非升级为 root 或文件所有者,否则无法更改这些权限,因此它们具有适度的安全性。

上一篇下一篇

猜你喜欢

热点阅读