"คุณลองซ่อมแซมสิทธิ์แล้วหรือยัง?" เป็นเคล็ดลับการแก้ไขปัญหา Mac มาตรฐานที่ลอยลอยมาบนเว็บมานานนับปี สำหรับผู้ใช้หลายคน นี่ดูเหมือนจะแก้ปัญหาแปลกๆ หลายอย่าง แต่เมื่อ OS X El Capitan (10.11) เปิดตัว ตัวเลือก Repair Disk Permission หายไปทันทีจากแอป Disk Utility
หมายความว่า Apple แก้ปัญหาที่เกี่ยวข้องกับสิทธิ์ใน macOS แล้วหรือเป็นอย่างอื่น? เราจะถอดรหัสปริศนานี้และแสดงให้คุณเห็นว่าสิทธิ์ดิสก์ทำงานอย่างไรบน Mac ของคุณ
วิธีการทำงานของสิทธิ์ใน macOS
ทุกรายการบน Mac ของคุณ ไม่ว่าจะเป็นไฟล์หรือโฟลเดอร์ มีชุดสิทธิ์เหล่านี้ควบคุมว่าบัญชีผู้ใช้ไหนสามารถเข้าถึงได้ และพวกเขามีการเข้าถึงแบบไหน สิทธิ์ประกอบด้วยกิจกรรม 3 อย่าง (อ่าน เขียน และรัน) ที่ทำโดยผู้ใช้ 3 ประเภท (เจ้าของ กลุ่ม และทุกคน)
คุณสามารถกำหนดกฎสิทธิแยกต่างหากสำหรับแต่ละระดับการเป็นเจ้าของ สิทธิ์ ร่วมกับบัญชีและการเป็นเจ้าของ ให้คุณความปลอดภัย เปิดใช้งานการแชร์ที่ควบคุมได้ ตั้งการเข้าถึงจำกัดหรือไม่มีการเข้าถึงไฟล์ และรักษาความสมบูรณ์ของระบบ
ดูสิทธิ์ระบบไฟล์
ผู้ใช้ทุกคนสามารถดูสิทธิ์ไฟล์และโฟลเดอร์โดยใช้หน้าต่าง Info ของ Finder หรือ Terminal ใน Finder ให้คลิกขวาที่ไฟล์หรือโฟลเดอร์ และเลือก Get Info จากเมนูบริบท คลิกสามเหลี่ยม Sharing & Permissions เพื่อขยายสิทธิ์ของรายการ
เพื่อดูข้อมูลนี้ใน Terminal ให้พิมพ์ต่อไปนี้:
ls -l "path to your file"
ตัวอักษรหลังจากขีดคือ L เล็ก และแสดงการเป็นเจ้าของและสิทธิ์ของไฟล์ของคุณ บนบรรทัดคำสั่ง ตัวย่อสำหรับสิทธิ์อ่านคือ r ในขณะที่เขียนคือ w และรันคือ x
เจ้าของ กลุ่ม และทุกคน
มาแยกประเภทผู้ใช้ 3 ประเภทที่ปรากฏในฟิลด์สิทธิ์ของ Mac:
- Owner (เจ้าของ): เจ้าของรายการคือผู้ใช้ที่สร้างรายการหรือคัดลอกมันไปที่ Mac ผู้ใช้มักเป็นเจ้าของรายการส่วนใหญ่ในโฟลเดอร์บ้านของพวกเขา
- Group (กลุ่ม): ทุกรายการยังเป็นของกลุ่ม กลุ่มคือชุดบัญชีผู้ใช้รวมเข้าด้วยกัน เพื่อให้สิทธิ์นำไปใช้กับสมาชิกทุกคน
- Everyone (ทุกคน): ใช้การตั้งค่าสิทธิ์นี้เพื่อกำหนดการเข้าถึงสำหรับทุกคน รวมถึงผู้ใช้ท้องถิ่น การแชร์ และผู้ใช้แขก
อ่าน เขียน และรัน
ต่อไป มาดู 3 ประเภทของสิทธิ์ที่ผู้ใช้เหล่านี้สามารถมีได้:
- Read (อ่าน): ผู้ใช้หรือสมาชิกกลุ่มสามารถเปิดไฟล์ได้ แต่ไม่สามารถบันทึกการเปลี่ยนแปลง หากเป็นโฟลเดอร์ คุณสามารถเรียกดูรายการไอเท็มได้
- Write (เขียน): ผู้ใช้หรือสมาชิกกลุ่มสามารถแก้ไขหรือลบไฟล์ สำหรับโฟลเดอร์ คุณสามารถเปลี่ยนแปลงเนื้อหาโฟลเดอร์ได้
- Execute (รัน): ไฟล์ที่มีสิทธิ์รันสามารถทำงานเป็นโปรแกรมหรือสคริปต์ กรณีของโฟลเดอร์ รันหมายถึงใครบางคนสามารถแสดงรายการเนื้อหาได้ หากสิทธิ์อ่านก็เปิดใช้งานอยู่
ปัจจัยที่ทำให้เกิดปัญหาสิทธิ์
ใน OS X Yosemite และก่อนหน้า Disk Utility สามารถตรวจสอบและซ่อมแซมสิทธิ์บนไฟล์และโฟลเดอร์บางส่วนได้ อย่างไรก็ตาม ในความเป็นจริง แอปไม่ได้ซ่อมแซมสิทธิ์ มันเพียงแค่รีเซ็ตมัน
เพิ่มเติม การพูดว่า Disk Utility ซ่อมแซม สิทธิ์ ทำให้ดูเหมือนว่าสิทธิ์สามารถเสียหายหรือเสียหายไปตามเวลา แต่สิ่งนี้ไม่จริง สิทธิ์คงที่จนกว่าจะมีบางอย่างหรือบางคนมาทำให้มันเปลี่ยน มีหลายเหตุผลที่สิ่งนี้เกิดขึ้น:
- App Installers (โปรแกรมติดตั้ง): โปรแกรมติดตั้งบางตัวเปลี่ยนสิทธิ์บนรายการที่มีอยู่เป็นส่วนจำเป็นของกระบวนการติดตั้ง แต่ล้มเหลวในการคืนค่ามันกลับไปที่การตั้งค่าที่เหมาะสม
- User error (ข้อผิดพลาดของผู้ใช้): หากคุณกำลังจัดการสิทธิ์ใน Terminal หรือผ่านแอปบุคคลที่สาม ข้อผิดพลาดอาจนำไปสู่ปัญหา ตัวอย่างเช่น การใช้คำสั่ง chmod อย่างไม่ถูกต้องสามารถเปลี่ยนการตั้งค่าสิทธิ์ของรายการได้
- Sharing a folder (แชร์โฟลเดอร์): ผู้ใช้ทุกคนบนคอมพิวเตอร์มีสิทธิ์เข้าถึงรายการในโฟลเดอร์ Shared หากคุณใช้โฟลเดอร์นี้เป็นที่เก็บไฟล์ระหว่างทาง ปัญหาสิทธิ์ไม่น่าจะเกิดขึ้น แต่หากคุณจัดเก็บรายการเพื่อใช้โดยหลายคนอย่างถาวร ปัญหาอาจเกิดขึ้น
- Permissions on Copied Items (สิทธิ์บนรายการที่คัดลอก): ยากที่จะคาดการณ์ว่า macOS จะกำหนดสิทธิ์อะไรเมื่อคุณคัดลอกไฟล์ผ่านโวล륨ภายนอก SMB หรือ FTP คุณอาจต้องใช้วิธีทดลองและผิดพลาดเพื่อแก้ปัญหานี้
อะไรเกิดขึ้นหลัง OS X El Capitan?
ใน OS X El Capitan Apple นำเสนอ System Integrity Protection (SIP) ให้กับไฟล์ระบบ โฟลเดอร์ และแม้แต่แอปที่รวมอยู่ด้วย มันปกป้องเนื้อหาระบบจากการแก้ไขโดยเจตนาหรือโดยไม่ได้ตั้งใจ ในขณะที่ยังคงการตั้งค่าสิทธิ์เริ่มต้นไว้ SIP ป้องกันไดเรกทอรีต่อไปนี้: /System, /usr, /bin, และ /sbin
เมื่อคุณอัปเดตแอป Apple หรืออัปเกรด macOS โปรแกรมติดตั้งจะตรวจสอบและรีเซ็ตสิทธิ์ของรายการใดๆ หากจำเป็น ไม่มีแอปบุคคลที่สาม (ไม่ว่าจะพฤติกรรมแย่แค่ไหน) สามารถเปลี่ยนสิทธิ์ได้ เว้นแต่คุณจะปิด SIP เราขุดลึกเพิ่มเติมเกี่ยวกับสิ่งที่ SIP ทำ หากคุณสนใจ
โฟลเดอร์ผู้ใช้และโฟลเดอร์บ้านเป็นอย่างไร?
System Integrity Protection ไม่ป้องกันรายการในโฟลเดอร์ /Library แอปใน /Applications และทุกอย่างใน Home folder ของคุณ โฟลเดอร์ ~/Library มีความสำคัญโดยเฉพาะ เนื่องจากประกอบด้วยไฟล์การตั้งค่าระบบหลัก การตั้งค่าแอปบุคคลที่สาม ข้อมูล Keychain และอื่นๆ
หากสิทธิ์ถูกเปลี่ยนแปลงบนไฟล์หรือโฟลเดอร์ใดๆ ของเหล่านี้ คุณสามารถคาดการณ์ได้ว่าจะมีปัญหาแปลกๆ หลายอย่างบน Mac ของคุณ ปัญหาที่อาจเกิดขึ้นเนื่องจากสิทธิ์ไม่ถูกต้องรวมถึง:
- การเปลี่ยนแปลงที่คุณทำกับ Finder, System Preferences หรือ Dock ไม่ได้รับการบันทึก
- หน้าต่างที่เปิดอยู่ครั้งล่าสุดที่คุณล็อกเอาท์หรือปิดแอป เปิดอีกครั้งหลังจากล็อกอิน
- คุณถูกขอรหัสผ่านผู้ดูแลระบบขณะย้ายรายการบางอย่างในโฟลเดอร์ Home
- คุณได้รับข้อความ "macOS needs to repair your Library to run applications" ซ้ำๆ
- เมื่อบันทึกไฟล์ คุณจะได้ข้อความว่าไฟล์ถูกล็อกหรือไม่มีสิทธิ์ที่จำเป็น เกิดขึ้นบ่อยกับเอกสาร Microsoft Office
- แอปเริ่มต้นหรือบุคคลที่สามอาจล้มเหลวตอนเปิด บางแอปอาจไม่สามารถอัปเดตได้
- Firefox หรือ Chrome ไม่โหลดการตั้งค่าของคุณ และระบุ "Unable to load your profile"
- รูปภาพและวิดีโอที่คุณนำเข้าไปใน Photos ไม่ปรากฏในแอป หรือคุณได้ข้อความให้เลือกไลบรารี Photos เริ่มต้นทุกครั้งที่คุณเปิดแอป
รีเซ็ตสิทธิ์สำหรับโฟลเดอร์ Home
จากแถบด้านข้างของ Finder ให้คลิกขวาโฟลเดอร์ Home ของคุณ และเลือก Get Info คลิกสามเหลี่ยมดรอปดาวน์ Sharing & Permissions เพื่อดูสิทธิ์ของมัน
คลิกปุ่ม Lock ที่ด้านล่างของหน้าต่าง และป้อนรหัสผ่านผู้ดูแลระบบ จากนั้นเลือกปุ่ม action menu และเลือก Apply to enclosed items
คลิก OK เพื่อยืนยันการดำเนินการ สิทธิ์ที่อัปเดตจะเผยแพร่ผ่านโฟลเดอร์ Home ของคุณ
ต่อไป เปิดแอป Terminal และพิมพ์ต่อไปนี้:
diskutil resetUserPermissions / `id -u`
ตัวเลือกนี้รีเซ็ตสิทธิ์ผู้ใช้บน root volume (/) ให้เป็น ID ผู้ใช้ปัจจุบัน หากทุกอย่างเป็นไปอย่างดี ให้รีบูท Mac ของคุณ
แต่หากคุณได้ error 69841 ให้ทำตามขั้นตอนเหล่านี้:
บน macOS High Sierra หรือเก่ากว่า
- เปิดแอป Terminal และป้อนต่อไปนี้:
chflags -R nouchg ~ - จากนั้นป้อนคำสั่งนี้อีกครั้ง:
diskutil resetUserPermissions / `id -u` - รีสตาร์ท Mac ของคุณ
บน macOS Mojave และใหม่กว่า
ขั้นตอนสำหรับ Mojave และใหม่กว่าเหมือนข้างต้น แต่คุณต้องเพิ่ม Terminal ให้ Full Disk Access ก่อนดำเนินการ ในการทำเช่นนี้ ให้ไปที่ System Preferences > Security & Privacy และคลิกแท็บ Privacy คลิกไอคอน Lock และป้อนรหัสผ่านผู้ดูแลระบบเพื่อทำการเปลี่ยนแปลง
ต่อไป เลือกแท็บ Full Disk Access จากนั้นคลิกปุ่ม Plus และเพิ่มแอป Terminal
หลังจากทำเช่นนี้ ให้ดำเนินการต่อผ่านคำสั่ง Terminal ที่กล่าวมาสำหรับ High Sierra และเก่ากว่า
การเข้าใจบัญชีผู้ใช้ Mac
เมื่อตัวเลือกซ่อมแซมสิทธิ์ดิสก์หายไปจากแอป Disk Utility เราไม่คิดมากนัก เพราะมันไม่เคยเป็นขั้นตอนการแก้ไขปัญหาที่สำคัญ แต่เมื่อเห็นประเภทของปัญหาที่คุณอาจเจอเนื่องจากสิทธิ์ไม่ถูกต้อง จึงชัดเจนว่าการรีเซ็ตสิทธิ์สำหรับโฟลเดอร์ Home เป็นทางออกสุดท้ายเมื่อปัญหาเหล่านี้เกิดขึ้น
น่าประหลาดใจที่ Apple ไม่รวมตัวเลือกนี้อีกต่อไป แต่จำไว้ คุณควรใช้ขั้นตอนเหล่านี้เฉพาะเมื่อจำเป็น การเข้าใจสิทธิ์เป็นหัวข้อที่ซับซ้อน หากคุณเข้าใจว่าบัญชีผู้ใช้ macOS ทำงานอย่างไร มันจะกลายเป็นเรื่องง่ายขึ้นมาก อ่านคู่มือการตั้งค่าบัญชีผู้ใช้หลายบัญชีบน Mac เพื่อเรียนรู้เพิ่มเติม