เหตุใดฉันจึงได้รับข้อผิดพลาด“ ความเป็นเจ้าของที่น่าสงสัยของไฟล์” เมื่อเรียกใช้ Agent Agent เรียกใช้ไฟล์. plist ของฉัน


54

ฉันมีตัวแทนเปิดตัวกำหนดค่าให้รันไฟล์ .plist /Library/LaunchAgent/foo.plistตัวอย่างเช่น: ภายใน .plist นี้จะถูกตั้งค่าให้ทำงานในระหว่างและLoginWindowAqua

เมื่อฉันพยายามเปิดคอมพิวเตอร์และไปที่หน้าจอการเข้าสู่ระบบโปรแกรมนี้ควรทำงาน แต่ให้ข้อผิดพลาดต่อไปนี้ (ในคอนโซล) แทน:

launchctl: การเป็นเจ้าของที่น่าสงสัยในไฟล์ (ข้าม): /Library/LaunchAgents/foo.plist

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

ฉันจะซื่อสัตย์ฉันไม่รู้มากเกี่ยวกับสิทธิ์และการอนุญาตของ Mac OS X

ในการสร้างไฟล์ที่ผมเปิดมันขึ้นมาในemacsที่มีsudoอยู่ในบัญชีผู้ดูแลระบบ (เช่นโดยการใช้suคำสั่งตั้งแต่บัญชีอื่น ๆ ไม่มีสิทธิ์ sudo) และจากนั้นบันทึกไว้

ฉันต้องใช้บัญชีใดในการสร้างไฟล์เพื่อให้สามารถใช้งานได้กับผู้ใช้ทุกคน
ฉันจำเป็นต้องใช้คำสั่ง sudo หรือไม่
ฉันจำเป็นต้องเปลี่ยนการอนุญาตของไฟล์ (เช่นใช้chmod) หรือไม่?
มีวิธีง่ายๆในการใช้ไฟล์ที่มีอยู่และเปลี่ยนความเป็นเจ้าของแทนที่จะต้องสร้างไฟล์ใหม่หรือไม่?
ใครช่วยอธิบายหน่อยได้ว่าทำไมข้อผิดพลาดนี้ถึงเกิดขึ้น?


ls -l ให้อะไรกับ /Library/LaunchAgent/foo.plist
151019

1
@ Mark: มันให้สิ่งต่อไปนี้:-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
Senseful

อาจเป็นไปได้ที่จะบังคับให้โหลด ( -F)
kenorb

คำตอบ:


51

ถ้า Plist เป็นเจ้าของโดย root และผู้ใช้อื่นที่ไม่ใช่ root สามารถเขียนได้นั่นเป็นปัญหาด้านความปลอดภัย

คุณสามารถเปลี่ยนเจ้าของเป็นรูทด้วยsudo chown root <filename>และเปลี่ยนสิทธิ์ด้วยsudo chmod 644 <filename>(4 สำหรับการเข้าถึงแบบอ่าน, 2 สำหรับการเข้าถึงแบบเขียน, 1 สำหรับการเข้าถึงเพื่อดำเนินการ, เพิ่มขึ้นหมายเลขแรกคือสำหรับเจ้าของ, อันดับสองสำหรับกลุ่ม, อันดับที่สามสำหรับ ทุกคน.)


วิธีนี้ใช้ได้ผล ฉันแค่สับสนว่าทำไมฉันต้องเปลี่ยนเจ้าของเป็นรูท รูทผู้ใช้ที่ใช้สำหรับ LaunchAgents หรือไม่
เหตุผล

1
อืมฉันก็คิดแบบนั้น.
Michiel de Mare

1
ฉันรู้ว่านี่เป็นโพสต์เก่า แต่นี่คือคำตอบที่ดี! ฉันเปลี่ยนสิทธิ์บน /system/library/launchdaemons/com.apple.mdnsresponder เพื่อลองแก้ไขที่ Apple แนะนำ แต่ฉันจะได้รับข้อผิดพลาดดังกล่าวข้างต้นเมื่อพยายามโหลดภายหลัง การเปลี่ยนเจ้าของและการอนุญาตตามที่อธิบายไว้ข้างต้นเป็นวิธีเดียวที่จะทำให้การเชื่อมต่ออินเทอร์เน็ตของฉันกลับมา ขอบคุณ!

หันหน้าไปทางเดียวกันในขณะนี้และแก้ไข ฉันคิดว่าเจ้าของไฟล์ร้องขอlaunchctlมาก sudoฉันสร้างไฟล์เป็นผู้ใช้ปกติของฉันและได้รับการดำเนินการกับ ดังนั้นข้อผิดพลาด เนื่องจาก root ไม่ใช่เจ้าของไฟล์sudoจึงไม่จำเป็น ฉันวิ่งไปข้างนอกsudoและมันก็ใช้ได้ดี
Bibhas

14

จากlaunchctl (1) manpageคำอธิบาย ‘s ของloadsubcommand:

โปรดทราบว่าผู้ใช้โหลดไฟล์เหล่านั้น (LaunchAgents) daemons ทั่วทั้งระบบทั้งหมด (LaunchDaemons) ต้องเป็นเจ้าของโดย root ไฟล์การกำหนดค่าต้องไม่เป็นกลุ่มหรือเขียนได้ทั่วโลก ข้อ จำกัด เหล่านี้มีขึ้นเพื่อเหตุผลด้านความปลอดภัยเนื่องจากอนุญาตให้เขียนไฟล์การกำหนดค่า launchd ได้ซึ่งอนุญาตให้หนึ่งระบุว่าจะเรียกทำงานไฟล์ใดได้

launchctlมีข้อความ“ น่าสงสัย…” หลายข้อความ launchdสำหรับ 10.6.7 (ตัวอย่าง) มีสามข้อความดังกล่าวในของมันlaunchctl.c(ดูฟังก์ชั่นpath_goodness_check)

  1. Dubious permissions on file (skipping): <pathname>
  2. Dubious ownership on file (skipping): <pathname>
  3. Dubious path. Not a regular file or directory (skipping): <pathname>

เพื่อหลีกเลี่ยงข้อความเหล่านี้ชื่อพา ธ ต้องเป็น (# 3) ไฟล์หรือไดเรกทอรีปกติ1 (หรือ symlink ต่อหนึ่ง) ที่เป็น (# 1) ที่เป็นเจ้าของโดย root หรือผู้ใช้ที่กล่าวอ้างและ (# 2) ไม่ใช่ "กลุ่ม" หรือ "อื่น ๆ ” สามารถเขียนได้ (เช่นchmod go-w)

1 ไม่มีชื่อไปป์โหนดอุปกรณ์บล็อก / อักขระพิเศษซ็อกเก็ตโดเมนท้องถิ่น ฯลฯ


ไฟล์ของคุณอาจเป็นของผู้ใช้ admin เนื่องจากคุณบอกว่าคุณไม่ได้รับข้อความเมื่อเข้าสู่ระบบในฐานะผู้ใช้นั้น (ชื่อพา ธ นั้นเป็นของผู้ใช้ที่เรียกใช้ในกรณีนั้น)
เพื่อให้ชื่อพา ธ ใช้งานได้กับผู้ใช้รายอื่นควรเป็นเจ้าของโดย root

หากต้องการจัดการสิ่งนี้ให้ทำ:

sudo chown root /Library/LaunchAgent/foo.plist

1

ขอบคุณสำหรับคำตอบ (เปลี่ยนเจ้าของเป็นรูท) - นั่นคือทั้งหมดที่ฉันต้องการ

เพื่อให้มันเป็นมากกว่าโพสต์ 'me เกินไป' ... ฉันมาถึงที่นี่ผ่านเส้นทางที่ซับซ้อน: ฉันได้รับ "API นี้สามารถใช้งานได้โดยกระบวนการที่ทำงานภายในเซสชัน Aqua" ข้อผิดพลาดสำหรับ launchdaemon ค้นหาคำตอบที่นำฉันไปที่technote ของ Apple ใน daemons และตัวแทนซึ่งอธิบายวิธีการแก้ไขข้อผิดพลาด 'เซสชัน Aqua' แต่นั่นทำให้ฉันมีปัญหา 'ความเป็นเจ้าของที่น่าสงสัย' นั่นเป็นวิธีที่ฉันมาที่นี่ซึ่งปัญหาสุดท้ายของฉันได้รับการแก้ไข

บางทีการเพิ่มสิ่งเหล่านี้ลงในการสนทนานี้อาจทำให้เครื่องมือค้นหาบางตัวเชื่อมโยงหน้านี้กับหนึ่งในปัญหาเบื้องต้นซึ่งช่วยประหยัดนักผจญภัยในอนาคตบางครั้ง


หมายเหตุนี่ควรเป็นความคิดเห็นมากกว่าคำตอบ
studgeek

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

-2

สำหรับไฟล์ใน ~ / Library / LaunchAgent ที่ผู้ใช้เป็นเจ้าของและไม่ใช่ root dont sudo หากคุณต้องเปลี่ยนความเป็นเจ้าของเนื่องจากคุณโหลดจากผู้ใช้รูท


-3

นี่คือสิ่งที่เกิดขึ้นเมื่อคนไม่รู้วิธีการsudoทำงาน เพื่อปิดการใช้บริการที่อยู่ในไฟล์ที่เป็นของผู้ใช้ของคุณเพียงโทรโดยไม่ต้องlaunchtlsudo

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