Flags (cờ) được macOS dùng giới hạn cách file được thay đổi. Chúng đặt khác quyền (permissions) và chạy song song cấu trúc lệnh như chown và chmod. Bạn dùng chflags thay đổi flags, và ls xem flags. Unix chạy hệ thống tương tự, nhưng nhiều tùy chọn hơn gọi "attributes" (thuộc tính) thay vì flags.
Xem flags đã đặt trên macOS
Trong Terminal, dùng flag ls xem flags hiện có.
ls -lO ~/Library drwx------@ 88 alexander staff hidden 2992 Jan 25 14:01 Library
Nếu không flag nào set cho file/thư mục, dấu gạch ngang hiển thị.
ls -lO ~/Library/Caches drwx------+ 234 alexander staff - 7956 Jan 25 13:03 Caches
Flags đã set gỡ bằng nghịch đảo, như mô tả dưới.
Đặt và xóa Flags trên macOS
Flags thường xuất hiện như vấn đề. Vì đặt quyền bổ sung, dễ bỏ lỡ. Bạn thấy file không xóa được, dù quyền user cao đến đâu? Có cần xóa một hai flag.
Flags có thể set trên macOS liệt kê dưới. Đây danh sách đầy đủ tùy chọn và giải thích chức năng. Hầu hết flag chỉ owner file hoặc superuser set được; sappnd và schg chỉ superuser set, vì flag cấp hệ thống. Chỉ flag hidden set được không cần leo quyền.
Đặt Flags trên macOS
Khi đặt flag trên macOS, dùng lệnh dưới. Flag đệ quy -R dùng cho thao tác cấp thư mục:
sudo chflags -R [flag] /usr/bin/local sudo chflags [flag] /usr/bin/local/mnt.sh chflags -R hidden ~/Desktop
sẽ đặt flag thích hợp. Ví dụ, sau đặt flag nodump:
sudo chflags nodump /usr/bin/local/tty.sh
Chỉ một flag set hoặc xóa mỗi lệnh chflags.
- opaque đặt thư mục mờ khi nhìn qua union mount, cách cũ xem nhiều thư mục cùng lúc.
- nodump ngăn file/thư mục bị dump khi dùng lệnh
dumpbackup hệ thống. - sappnd, sappend đặt flag system append-only, cho thêm file nhưng không sửa/xóa. Gỡ flag này yêu cầu vào single user mode.
- schg, schange, simmutable đặt flag system immutable, khóa mọi thay đổi file bởi user mọi quyền. Gỡ flag yêu cầu single user mode.
- uappnd, uappend đặt flag user append-only. Owner set được và unset không leo quyền. Vì khóa file với
sappndhoặcschgbảo mật thấp hơn, dùng nhiều hơn. - uchg, uchange, uimmutable đặt flag user immutable, mối quan hệ với system immutable như
uappndvớisappnd. - hidden đặt flag hidden. Ẩn mục trong Finder GUI và lệnh ls.
Xóa Flags trên macOS
Để xóa flag, đặt nghịch đảo. Hầu hết trường hợp, thêm "no" trước lệnh. Trường hợp nodump, dùng flag dump xóa:
sudo chflags dump /usr/bin/local/oty.sh
Thuật ngữ tiêu chuẩn đảo với tiền tố "no":
sudo chflags nosappnd /usr/bin/local/oty.sh
Giống chmod, flag đệ quy có sẵn:
chflags -R nohidden ~/Desktop
Sau xóa flag, bạn tự do thay đổi ownership và permission file như kỳ vọng.
Dùng Attributes trên Unix
Unix chạy hệ thống tương tự backend, nhưng lệnh khác. Phổ biến Linux, dùng chattr và lsattr. Flags này đổi và xem "attributes", tên gọi flags trên hầu hết Unix khác.
Xem attributes với lsattr:
lsattr /path/to/file.txt
Thay đổi attributes dùng mã viết tắt, liệt kê trang man chattr:
"Chữ cái 'acdeijstuADST' chọn attributes mới cho file: 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), top of directory hierarchy (T)."
Lệnh trông như:
chattr +s /file/name.txt
Đặt attribute secure deletion cho đường dẫn chỉ định.
Tổng kết
Flags hữu ích nhất khi giới hạn ai thay đổi file. Bằng cách khóa file, ngăn chặn can thiệp hoặc chỉnh sửa ngẫu nhiên cấp filesystem. Không leo quyền root hoặc owner file, đặc quyền không đổi, nên an toàn vừa phải.