sudo chown ล้มเหลวด้วยการดำเนินการที่ไม่ได้รับอนุญาต


8

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

ถ้าฉันทำ:

sudo chown <username> main.m

ฉันได้รับการดำเนินการที่ไม่อนุญาตให้เกิดข้อผิดพลาด

วิธีแก้ไขปัญหาทั่วไปสำหรับข้อผิดพลาดก่อนหน้าคือ:

sudo chflags nouchg main.m

เพื่อล้างธงล็อค อย่างไรก็ตามหลังจากทำสิ่งนี้ฉันยังคงไม่สามารถ chown ไฟล์ได้ ฉันได้ลองด้วย:

chflags noschg main.m

ในโหมดผู้ใช้คนเดียวโดยไม่มีโชค - ฉันได้รับการดำเนินการที่ไม่ได้รับอนุญาตข้อผิดพลาด

หากใครมีความคิดฉันจะสนใจ


สิ่งพื้นฐานที่คุณพยายามทำคืออะไร? อาจมีเหตุผลที่ไฟล์นั้นมีการล็อค
Tamara Wijsman

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

1
ระบบไฟล์ประเภทใดที่ไฟล์เปิดอยู่? คุณไม่ได้พยายามใช้chownกับระบบไฟล์ NTFS / FAT ใช่ไหม
Zoredache

@ericgorr: ส่วนใหญ่อยู่เหนือหัวฉัน; ฉันไม่ทราบว่าเครื่องมือผู้ช่วยที่ปลอดภัยนั้นคืออะไร แต่อย่างที่คุณพูดมันเป็นเพียงข้อมูลทดสอบที่สร้างขึ้น คุณปิดแฟ้มทดสอบในรหัสของคุณอย่างถูกต้องหรือไม่
Tamara Wijsman

@Tom เครื่องมือช่วยเหลือเป็นวิธีการของ OS X ในการให้สิทธิ์การยกระดับแอปพลิเคชันในขณะที่รักษาสิทธิ์ - ดังนั้นหากแอปต้องการแก้ไขไฟล์ที่ปลอดภัยเช่นมันบอกเครื่องมือช่วย (อนุญาต) เพื่อแก้ไขไฟล์ ฉันเดาว่า ericgorr ต้องการหลีกเลี่ยงการเพิ่มแอปพลิเคชันของเขา / เธอหรือบางสิ่งบางอย่างเพื่อหลีกเลี่ยงการดีบักที่เข้มงวดซึ่งมาพร้อมกับสิ่งนั้น
พลังมาก

คำตอบ:


8

สามารถป้องกันไฟล์ Mac ได้สี่ วิธีสามวิธีที่ฉันทราบ:

  1. มาตรฐาน Unix กรรมสิทธิ์และสิทธิ์เช่น R / w / x สำหรับผู้ใช้ / กลุ่ม / อื่น ๆ ที่คุณเห็นด้วยls -lและแก้ไขปัญหาด้วยและchown(1)chmod(1)
  2. ธงไฟล์ชอบuchgและschgที่คุณเห็นด้วยและแก้ไขปัญหาด้วยls -lOchflags(1)
  3. การค้นหาข้อมูลเมตาเก่า "ล็อคบิต" GetFileInfo filenameที่คุณเห็นกับ นอกจากนี้คุณยังสามารถดูการปรากฏตัวของเมตาดาต้า Finder ls -l@แต่ไม่ได้ความหมายของมันด้วย SetFile(1)คุณสามารถแก้ไขได้ด้วย ไม่เป็นไรสิ่งนี้จะถูกแมปกับuchgค่าสถานะตอนนี้
  4. รายการควบคุมการเข้าถึง (ACL) ที่คุณเห็นด้วยls -leและแก้ไขปัญหาที่มีข้อโต้แย้ง ACL chmod(1)ที่เกี่ยวข้องกับการ

ดังนั้นเรามาดูว่ามีอะไรเกิดขึ้นกับไฟล์ของคุณโดยการรวมค่าสถานะทั้งหมดเหล่านี้เป็นls:

ls -lO@e main.m

ดูเหมือนคุณจะรู้วิธีจัดการกับ # 1 และ # 2 แล้ว

หากคุณเห็น ACL (# 4), คุณสามารถแก้ไขได้ด้วยการขัดแย้ง ACL chmod(1)ที่เกี่ยวข้องกับ

หากคุณยังคงนิ่งงันอยู่ให้อัปเดตคำตอบของคุณด้วยเอาต์พุตจากlsคำสั่งรวมที่ฉันแนะนำไว้ข้างต้นเพื่อให้เราเห็นว่าเกิดอะไรขึ้น


ปัญหานี้ปรากฏขึ้นพร้อมกับ ACL ฉันคิดว่ามันน่าสนใจที่ sudo ไม่ได้ล็อคไว้ นอกจากนี้ chmod -R -a # 0 * ได้ลบ ACLs ออกจากไฟล์ส่วนใหญ่ในลำดับชั้น แต่ไม่สามารถลบออกจากบางไฟล์ - การใช้ sudo กับ chmod ไม่ได้ช่วยอะไร
ericg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.