ทำไม chown รายงาน“ ไม่อนุญาตให้ใช้งาน” ใน OS X


64

ฉันพยายามทำสิ่งต่อไปนี้บน Mac ของฉัน (10.6.7):

sudo chown myusername:wheel ./entries

แต่ Unix / Mac กำลังส่งคืน "ไม่อนุญาตให้ใช้งาน" เมื่อฉันls -lashไฟล์ผู้ร้ายมันมีลักษณะดังนี้:

8 -rwxrwxrwx   1 myusername  staff   394B Apr 26 23:26 entries

ฉันพยายามsudoแล้วsudo su; ไม่มีอะไรทำงาน มีความคิดเห็นอะไรบ้าง

ฉันพยายามchmodไฟล์ที่ฉันคัดลอกมาจากกล่อง Ubuntu เก่าของฉัน ไฟล์ส่วนใหญ่ประสบความสำเร็จในการchmodเรียกซ้ำแล้วซ้ำอีก แค่อันนี้ติดอยู่และฉันไม่เข้าใจว่าทำไม


1
คุณเคยลองsudo chgrp wheel ./entriesไหม
squircle

1
ทำการตรวจสอบระบบไฟล์ เปิด Disk Utility เลือกระดับเสียงของคุณและคลิกตรวจสอบดิสก์แล้วถ้าจำเป็นซ่อมแซมดิสก์
Daniel Beck

ตรวจสอบให้แน่ใจว่าไฟล์ไม่ได้ถูกล็อคใน Finder (ไม่มีตราสัญลักษณ์ล็อคที่ไอคอน) ที่จะเปลี่ยนมันเปิดรับข้อมูลโต้ตอบและยกเลิกการล็อค
Daniel Beck

หากเป็นโวลุ่ม "ภายนอก" (เช่นไม่ใช่โวลุ่มระบบ) คุณอาจต้องลบตัวเลือก "เพิกเฉยความเป็นเจ้าของในโวลุ่มนี้" (ดูที่ด้านล่างของหน้าต่างรับข้อมูลสำหรับระดับเสียงเอง)
mivk

คำตอบ:


84

ใช่ Mac มีการปรับปรุงมากมายสำหรับ Unix ในส่วนของไฟล์ ไม่สนใจสิ่งที่แยกทรัพยากรทั้งหมดซึ่งไม่ได้ใช้อีกต่อไปมี:

  • สิทธิ์ Unix มาตรฐาน ugo rwxและอื่น ๆ ใช้เครื่องมือ Unix ปกติ
  • ACL 's ซึ่งสามารถดูได้ด้วยและอาจมีการเปลี่ยนแปลงด้วยls -lechmod [ -a | +a | =a ]
  • แฟล็กไฟล์ที่สามารถดูได้ด้วยls -lO(ทุนโอ้ไม่เป็นศูนย์) และสามารถเปลี่ยนแปลงchflagsได้
  • แอตทริบิวต์เพิ่มเติมสามารถดูได้ด้วยls -l@(เฉพาะปุ่มแอตทริบิวต์) และสามารถดูและเปลี่ยนแปลงxattrได้ (ใช้xattr -hเพื่อขอความช่วยเหลือหากman xattrไม่ให้อะไรคุณ)
  • เริ่มต้นด้วย OS X 10.11 "El Capitan" ระบบ Integrity คุ้มครอง (SIP) ต่อไปปกป้องไฟล์จากการเปลี่ยนแปลงจากกระบวนการสามัญแม้เมื่อใช้ให้ทำงานเป็นsudo rootไฟล์ที่ได้รับการป้องกันโดย SIP จะถูกแสดงรายการโดยระบุls -lOว่ามีการrestrictedตั้งค่าสถานะและ / หรือแสดงรายการโดยls -l@มีcom.apple.rootlessแอตทริบิวต์

คุณสามารถปฏิเสธการดำเนินการกับไฟล์ได้เนื่องจากสิทธิ์ Unix, ACLs, แฟล็กไฟล์หรือ SIP วิธีปลดล็อกไฟล์อย่างสมบูรณ์:

sudo chmod -N file        # Remove ACLs from file
sudo chmod ugo+rw file    # Give everyone read-write permission to file
sudo chflags nouchg file  # Clear the user immutable flag from file
sudo chflags norestricted file  # Remove the SIP protection from file
sudo xattr -d com.apple.rootless file # Remove SIP protection from file

หากเปิดใช้งานการป้องกันความสมบูรณ์ของระบบ (SIP) sudo chflags norestrictedและsudo xattr -d com.apple.rootlessจะส่งคืนข้อผิดพลาด "ไม่อนุญาตการดำเนินการ" เพื่อล้างธงและ / หรือแอตทริบิวต์ที่คุณจำเป็นต้องบูตเข้าMacOS การกู้คืนและทั้งเรียกใช้คำสั่งจากเทอร์ (คุณอาจจะต้องใช้งานครั้งแรก Disk Utility เพื่อปลดล็อคและติดบูตไดรฟ์ของคุณแล้วจำได้ว่าไฟล์ของคุณจะอยู่ภายใต้/Volumes/Macintosh HDหรือสิ่งที่บูตของคุณ ชื่อไดรฟ์) หรือปิดการใช้งาน SIP ทั้งหมดจากนั้นรีบูทและคำสั่งควรใช้งานได้ อย่างไรก็ตามโปรดทราบว่าการอัปเดตระบบปฏิบัติการในอนาคตมีแนวโน้มที่จะกู้คืนrestrictedแฟล็กและcom.apple.rootlessแอตทริบิวต์ไปยังไฟล์ใด ๆ ที่คุณลบออก

ไม่แนะนำให้ปิดใช้งาน SIPเนื่องจากจะกำจัดการป้องกันมัลแวร์และความเสียหายจากอุบัติเหตุจำนวนมากรวมทั้งไม่จำเป็นเมื่อคุณสามารถลบการป้องกันบนพื้นฐานต่อไฟล์ หากคุณปิดใช้งาน SIP ให้เปิดใช้งานอีกครั้งเมื่อคุณทำการเปลี่ยนแปลงเสร็จสิ้น

โปรดทราบว่าหากls -lOแสดงการschgตั้งค่าสถานะคุณต้องเข้าสู่โหมดผู้ใช้คนเดียวเพื่อยกเลิกการตั้งค่า ฉันจะไม่เข้าไปที่นี่เพราะมีคำถามที่ใหญ่กว่าเกี่ยวกับสาเหตุที่ไฟล์มีการตั้งค่าสถานะนั้นและทำไมคุณพยายามยุ่งกับมันและผลที่ตามมาจะเป็นอย่างไร


7
เมื่อเพิ่มสิ่งนี้ค่าสถานะอื่น ๆ อาจทำให้คุณไม่สามารถเปลี่ยนไฟล์ ในสคริปต์ของฉันฉันใส่sudo chflags -R nouchg,noschg,nouappnd,nosappnd,noopaque,dump .
djjeck

1
หมายเหตุ: หากมีบางสิ่งที่มีสถานะ "ไม่สามารถเปลี่ยนแปลงได้" ช่องทำเครื่องหมายล็อคในรับข้อมูลจะถูกตรวจสอบและเป็นสีเทา "sudo chflags nouchg" แก้ไขได้
ฟูบาร์

1
ฉันไม่สามารถทำ-Nและugo+rwทั้งสองครั้ง (ผมได้Failed to clear ACL on file ugo+rw: No such file or directory) แต่การทำงานพวกเขาทำงานได้ดีเป็นรายบุคคล หากต้องการเรียกซ้ำจะ-Rต้องเป็นอาร์กิวเมนต์แรก
owenfi

3
โปรดทราบว่า System Integrity Protection (rootless) สามารถทำให้เกิดปัญหานี้ได้ใน El Capitan และใหม่กว่า ในการแก้ไขปัญหานั้นให้บูตเข้าสู่โหมดการกู้คืน ( Cmd-R) เปิด Terminal และเรียกใช้csrutil disableจากนั้นรีสตาร์ท (เพื่อเปิดใช้งานอีกครั้งให้ใช้csrutil enable)
Erwin Wessels

ขอบคุณ ... ฉันไม่รู้เกี่ยวกับแฟล็กไฟล์ ตอนนี้ฉันเข้าใจแล้วว่าทำไมมันถึงพูดoverride rwxrwxrwx huttarl/staff uchg for green.html?
LarsH

18

ฉันมีปัญหาเดียวกัน. ปรากฎว่าไฟล์ที่ละเมิดนั้นถูกทำเครื่องหมายเป็น "ล็อค" โดยระบบปฏิบัติการ ฉันพบวิธีนี้และแก้ไขปัญหาได้ในไม่กี่วินาที:

http://explanatorygap.net/2005/07/10/unlocking-files-recursively-from-the-command-line/

ดูเหมือนว่าrmคำสั่งจะมีการเปลี่ยนแปลงใน Tiger เช่นถ้าคุณใช้rm -Rfด้วยสิทธิ์ระดับสูงมันจะปลดล็อกไฟล์โดยอัตโนมัติ

ใน OS X ก่อนหน้า Tiger: find /Volumes/Transit -flags +uchg -print0 | xargs -0 chflags nouchg

ใน OS X หลังจาก Tiger: sudo rm -Rf foldername/

นอกจากนี้แม้หลัง OS X 10.4 ก็อาจมีการตั้งค่าสถานะแฟ้มข้อมูลเมตาเช่นuchgและuappndซึ่งป้องกันการแก้ไขใด ๆ ของการอนุญาตหรือการเป็นเจ้าของไฟล์ chflagsสามารถลบธง บางส่วนของแอตทริบิวต์ของแฟ้ม / metadata และวิธีที่พวกเขาได้รับการจัดการโดยใช้เครื่องมือคัดลอกที่แตกต่างกันที่นี่


sudo rm -Rf foldername/ทำงานอย่างสมบูรณ์แบบบน OSX Mountain Lion
Aryo

5
@Aryo: rmลบไดเรกทอรี มีวิธีปลดล็อคทุกสิ่งโดยไม่ลบหรือไม่ เมื่อฉันมองuchgไม่ได้ตั้งค่าและฉันสามารถเปิดและปิดอีกครั้งตามที่คาดไว้ (ด้วยchflags [no]uchg) แต่ที่มีผลกระทบต่อไอคอนล็อกใน Finder chownหรือเกี่ยวกับความสามารถของฉันไป
orome

12

ฉันมีปัญหาเดียวกันกับ Crashplan.app

โซลูชั่นทั้งหมดที่ระบุไว้ที่นี่จะไม่ช่วยฉัน แต่อันนี้ทำเคล็ดลับ: http://forums.macrumors.com/showthread.php?t=1546163

คุณต้องเปลี่ยนระบบและการตั้งค่าสถานะที่ไม่เปลี่ยนรูปแบบของผู้ใช้:

ทำสิ่งนี้เพื่อดูว่าแฟลกใดที่ใช้งานไฟล์ / โฟลเดอร์ของคุณ:

ls -lhdO MyFile

การตอบสนองอาจมีลักษณะเช่นนี้:

drwxrwxr-x 3 root admin schg,uchg 102B Apr 8 2013 MyFile

schg , uchgเป็นธงที่ไม่เปลี่ยนรูปเหล่านั้น หนึ่งสำหรับระบบและหนึ่งสำหรับผู้ใช้ หากต้องการลบออกให้ทำดังต่อไปนี้:

chflags noschg CrashPlan.app # this removes system immutable flag
chflags nouchg CrashPlan.app # this removes the user immutable flags

อย่างน้อยสำหรับฉันไฟล์จะถูกปลดล็อคและคุณสามารถลบได้!


ยอดเยี่ยมต้องchflagsใช้sudoแต่มันก็สมเหตุสมผล
Felipe

มีปัญหาเดียวกันกับ CrashPlan.app (ฉันมีdrwxrwxr-x@ 3 _BGMXPCHelper admin schg 96B 9 Jan 2018 CrashPlan.app) และอันนี้เป็นทางออกเดียวที่ทำให้ฉันลบได้ขอบคุณ!
webeno

12

ใน OS X 10.11 (El Capitan) นี้ยังอาจเกิดจากใหม่รากคุณลักษณะ ดูคำตอบนี้สำหรับคำอธิบาย

ในระยะสั้นสำหรับไดเรกทอรีที่สำคัญบางอย่างมีวิธีการปรับเปลี่ยนพวกเขาไม่ - ไม่ว่าคุณจะใช้sudo, หรือchown chmodสิ่งนี้มีผลกับ/usrไดเรกทอรี (แม้ว่าคุณจะได้รับอนุญาตให้แก้ไข/usr/local)

ในการปรับเปลี่ยนไดเรกทอรีที่ป้องกันแบบไม่มีรูทคุณต้องปิดการใช้งานรูท และแน่นอนเปิดใช้งานอีกครั้งหลังจากทำการปรับเปลี่ยนของคุณเพราะเป็นการปรับปรุงความปลอดภัยที่สำคัญ


1
ว้าว. นั่นทำให้ฉันถั่ว ยังไงก็เถอะฉันต้องคัดลอกบางสิ่งไปยัง / usr / lib ซึ่งไม่พบใน / usr / local / lib (อย่าถามฉันว่าทำไม) และนั่นก็เป็นกลอุบาย
qwerty_so

4
ที่จริงแล้วคุณไม่จำเป็นต้องปิดการใช้งาน Rootless เลยคุณสามารถบูตเข้าสู่โหมดการกู้คืน (ซึ่งคุณต้องทำเพื่อปิดการใช้งาน Rootless) และทำการเปลี่ยนแปลงที่คุณต้องการจาก Terminal
โปรเก่า

6

หลังจากการดิ้นรนมากมายนี่คือสิ่งที่ฉันต้องทำเพื่อแก้ไขปัญหา:

  • ย้ายไฟล์ไปที่ ~/Desktop
  • sudo chown myusername:staff ./entries
  • การย้ายไฟล์กลับไปที่ตำแหน่งเดิมใช้งานไม่ได้ (ไม่อนุญาตให้ใช้งานอีกต่อไป) ดังนั้น ...
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries

4

ฉันมีปัญหาเดียวกันเกี่ยวกับโฟลเดอร์บ้านของฉัน ในตอนท้ายฉันเพิ่งใช้ตัวค้นหาแบบนี้:

ไป -> คอมพิวเตอร์ -> ดิสก์ของคุณ -> ผู้ใช้ -> ชื่อผู้ใช้ของคุณ -> คลิกขวา -> รับข้อมูล

ฉันพบว่ามันถูกล็อคบางทีฉันอาจจะทำมันในอดีตและลืม ยกเลิกการทำเครื่องหมายที่ช่องทำเครื่องหมายถูกล็อคแล้วแก้ไขปัญหาแล้ว

ฉันสามารถแนะนำให้ใช้ 'รับข้อมูล' จากตัวค้นหาเพื่อจัดการกับปัญหาประเภทนี้

(OS X 10.8.3)


สิ่งนี้ช่วยฉันในการปลดล็อก.isoจากกล่องเสมือนจริง
Nakilon

1

ตรวจสอบให้แน่ใจว่าได้ปลดล็อคทั้งไฟล์และโฟลเดอร์แม่

ฉันประสบปัญหาคล้ายกันเมื่อพยายามลบไฟล์ลายเซ็นอีเมลของ Mac Mail ฉันไม่สามารถลบได้จนกว่าฉันจะปลดล็อคไฟล์รวมถึงโฟลเดอร์หลักของมัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.