macOS ใช้แฟล็กเพื่อจำกัดวิธีการเปลี่ยนไฟล์ มีการตั้งค่าแตกต่างจากการอนุญาตและทำงานในโครงสร้างแบบขนานควบคู่ไปกับคำสั่งเช่น chown
และ chmod
. คุณจะใช้ chflags
เพื่อเปลี่ยนแฟล็กเช่นเดียวกับ ls
เพื่อดูธง Unix ใช้งานระบบที่คล้ายคลึงกัน แต่มีตัวเลือกมากมายที่เรียกว่า “แอตทริบิวต์” แทนที่จะเป็นแฟล็ก
การดูการตั้งค่าสถานะบน macOS
ใน Terminal คุณสามารถใช้ ls
ธงเพื่อดูธงที่ยังหลงเหลืออยู่
ls -lO ~/Librarydrwx------@ 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 มีดังต่อไปนี้ นี่คือรายการตัวเลือกทั้งหมดที่มี รวมถึงคำอธิบายเกี่ยวกับฟังก์ชันการทำงาน แฟล็กส่วนใหญ่สามารถตั้งค่าได้โดยเจ้าของไฟล์หรือ superuser เท่านั้น sappnd
และ schg
เฉพาะ superuser เท่านั้นที่สามารถตั้งค่าได้ เนื่องจากเป็นแฟล็กระดับระบบ ตั้งค่าสถานะที่ซ่อนอยู่เท่านั้นโดยไม่ต้องยกระดับสิทธิ์
การตั้งค่าสถานะบน macOS
เมื่อตั้งค่าสถานะบน macOS ให้ใช้คำสั่งด้านล่าง แฟล็กแบบเรียกซ้ำ -R
สามารถใช้ได้สำหรับการดำเนินการระดับไดเร็กทอรี:
sudo chflags -R [flag] /usr/bin/local sudo chflags [flag] /usr/bin/local/mnt.sh chflags -R hidden ~/Desktop
จะตั้งค่าสถานะที่เหมาะสม ตัวอย่างเช่น ค่าต่อไปนี้ตั้งค่าสถานะ nodump:
sudo chflags nodump /usr/bin/local/tty.sh
ตั้งค่าหรือลบแฟล็กได้เพียง 1 รายการต่อคำสั่ง chflags
- ทึบแสง ตั้งค่าให้โฟลเดอร์ไม่โปร่งใสเมื่อดูผ่านยูเนี่ยนเมาต์ ซึ่งเป็นวิธีการดูหลายไดเร็กทอรีแบบเก่าพร้อมกัน
- พยักหน้า ป้องกันไม่ให้ไฟล์หรือโฟลเดอร์ถูกดัมพ์ระหว่างการใช้งาน
dump
คำสั่งให้สำรองข้อมูลระบบของคุณ - เติม เติม ตั้งค่าแฟล็กต่อท้ายระบบเท่านั้น ซึ่งช่วยให้สามารถเพิ่มไฟล์ได้ แต่ไม่แก้ไขหรือลบ การนำแฟล็กนี้ออกต้องเข้าสู่โหมดผู้ใช้คนเดียว
- schg เปลี่ยน จำลอง ตั้งค่าสถานะที่ไม่เปลี่ยนรูปแบบของระบบ ซึ่งจะล็อกการเปลี่ยนแปลงไฟล์ทั้งหมดโดยผู้ใช้ทุกระดับสิทธิ์ใดๆ การนำแฟล็กนี้ออกต้องมีการป้อนโหมดผู้ใช้คนเดียว
- uappnd, uappend ตั้งค่าแฟล็กต่อท้ายผู้ใช้เท่านั้น เจ้าของไฟล์สามารถตั้งค่านี้ได้ และเจ้าของสามารถยกเลิกการตั้งค่าได้โดยไม่ต้องยกระดับสิทธิ์ เนื่องจากมันล็อคไฟล์ด้วย
sappnd
หรือschg
ที่ความปลอดภัยต่ำกว่า จึงมีการใช้งานบ่อยกว่ามาก - uchg, uchange, ไม่เปลี่ยนรูป ตั้งค่าสถานะที่ไม่เปลี่ยนรูปของผู้ใช้ซึ่งมีความสัมพันธ์เดียวกันกับแฟล็กที่ไม่เปลี่ยนรูปแบบของระบบเป็น
uappnd
แฟล็กต้องsappnd
. - ซ่อนอยู่ ตั้งค่าสถานะที่ซ่อนอยู่ สิ่งนี้จะซ่อนรายการภายในคำสั่ง Finder GUI และ ls
การล้างการตั้งค่าสถานะบน macOS
หากต้องการล้างแฟล็กที่กำหนด ให้ตั้งค่าตรงข้าม ในกรณีส่วนใหญ่ นี่หมายถึงการเติมคำว่า "ไม่" ไว้ข้างหน้าคำสั่งของคุณ ในกรณีของ nodump ให้ใช้แฟล็กดัมพ์เพื่อเคลียร์ดังนี้:
sudo chflags dump /usr/bin/local/oty.sh
เงื่อนไขมาตรฐานเพิ่มเติมสามารถย้อนกลับได้ด้วยคำนำหน้า "ไม่" เช่น:
sudo chflags nosappnd /usr/bin/local/oty.sh
เช่นเดียวกับ chmod มีการตั้งค่าสถานะแบบเรียกซ้ำ:
chflags -R nohidden ~/Desktop
เมื่อล้างแฟล็กแล้ว คุณจะเปลี่ยนความเป็นเจ้าของและการอนุญาตของไฟล์ได้ตามต้องการ
การใช้แอตทริบิวต์บน Unix
Unix ใช้งานระบบที่คล้ายกันในแบ็กเอนด์ แต่ได้รับการจัดการด้วยคำสั่งต่างๆ บนแพลตฟอร์ม Linux ยอดนิยม คุณจะสามารถเข้าถึง chattr
. แทนได้ และ lsattr
. แฟล็กเหล่านี้ใช้สำหรับเปลี่ยนและดู "แอตทริบิวต์" ซึ่งเป็นแฟล็กที่ใช้กับการติดตั้ง Unix อื่นๆ ส่วนใหญ่
สามารถดูแอตทริบิวต์ได้ด้วย lsattr
:
lsattr /path/to/file.txt
การเปลี่ยนแอตทริบิวต์ขึ้นอยู่กับรหัสของการเริ่มต้นและแสดงอยู่ในหน้า man ของ chattr:
“ตัวอักษร 'acdeijstuADST' เลือกแอตทริบิวต์ใหม่สำหรับไฟล์:ผนวกเท่านั้น (a), บีบอัด (c), ไม่มีการถ่ายโอนข้อมูล (d), รูปแบบการขยาย (e), ไม่เปลี่ยนรูป (i), การทำเจอร์นัลข้อมูล (j), การลบที่ปลอดภัย (s), ไม่มีการรวมหาง (t), ลบไม่ได้ (u), ไม่มีการอัปเดต atime (A), การอัปเดตไดเรกทอรีซิงโครนัส (D), การอัปเดตแบบซิงโครนัส (S) และด้านบนของลำดับชั้นไดเรกทอรี (T)”
คำสั่งมีลักษณะดังนี้:
chattr +s /file/name.txt
ที่ตั้งค่าแอตทริบิวต์การลบที่ปลอดภัยสำหรับเส้นทางที่ระบุ
บทสรุป
แฟล็กมีประโยชน์มากที่สุดเมื่อจำกัดว่าใครสามารถเปลี่ยนแปลงไฟล์ได้ การล็อกไฟล์ทำให้คุณสามารถป้องกันการปลอมแปลงหรือการแก้ไขโดยไม่ได้ตั้งใจในระดับระบบไฟล์ได้ หากไม่มีการส่งต่อไปยังรูทหรือเจ้าของไฟล์ สิทธิ์เหล่านี้จะไม่สามารถเปลี่ยนแปลงได้ จึงมีความปลอดภัยปานกลาง