ไม่สามารถสร้าง symlink ภายใน / usr / bin แม้จะเป็น sudo


101

เมื่อฉันพยายามเชื่อมโยงไบนารีในโฟลเดอร์ / usr / bin ของฉันฉันได้รับข้อผิดพลาด Operation not allowed:

 sudo ln -s /usr/bin/python2.7 /usr/bin/python2
ln: /usr/bin/python2: Operation not permitted

แม้จะเป็น sudo ฉันก็ยังได้รับข้อผิดพลาดนี้


1.OS 2.Distribution 3. ระบบไฟล์ของคุณคืออะไร?
Rany Albeg Wein

Mac OSX El Capitan 10.11.4
egidra

1
คุณได้ลองทำสิ่งต่อไปนี้หรือไม่stackoverflow.com/questions/32659348/… ?
Rany Albeg Wein

คำตอบ:


156

เหตุใดฉันจึงเชื่อมโยงเข้า/usr/binไม่ได้

คุณลักษณะการป้องกันความสมบูรณ์ของระบบใหม่ของ El Capitan ช่วยป้องกันการเปลี่ยนแปลงในส่วนหลักหลาย ๆ ส่วนของ OS X รวมถึงส่วนใหญ่/usr/แม้โดยรูท

ฉันจะเพิ่มไฟล์ปฏิบัติการลงในพา ธ ได้อย่างไร?

การปรับแต่งในท้องถิ่นเช่นสิ่งที่คุณกำลังทำอยู่จะเป็นของ/usr/localแทน เส้นทาง/usr/local/binไม่มีอยู่ตามค่าเริ่มต้น แต่คุณสามารถสร้างและใส่ไบนารีที่กำหนดเอง (และลิงก์สัญลักษณ์) ไว้ในนั้น:

sudo mkdir -p /usr/local/bin
sudo ln -s /usr/bin/python2.7 /usr/local/bin/python2

โปรดทราบว่าแม้ว่า/usr/local/binจะไม่มีอยู่ตามค่าเริ่มต้น แต่ก็อยู่ใน PATH เริ่มต้นดังนั้นทันทีที่คุณสร้างมันจะถูกค้นหาคำสั่ง

ปิดการใช้งาน SIP

นอกจากนี้ยังเป็นไปได้ที่จะปิดใช้งานการป้องกันความสมบูรณ์ของระบบ แต่โดยทั่วไปควรปล่อยไว้และทำการปรับแต่งในตำแหน่งที่เหมาะสมกว่า คำถามเกี่ยวกับ Apple Stack Exchange มีรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งนี้: อะไรคือคุณสมบัติที่ไม่มีรูทใน El-Captain จริงๆ? .


16

ฉันสร้างลิงก์สัญลักษณ์สำหรับ Sublime Text 3 ใน Mac OS High Sierra เป็นไฟล์

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/

ฉันยังพยายามสร้างลิงก์สัญลักษณ์ใน "/ usr / bin" และได้รับ Operation Not Permitted

จากนั้นฉันสร้างลิงก์สัญลักษณ์ใน "/ usr / local / bin" และไม่มีข้อผิดพลาด ลิงก์สัญลักษณ์ทำงานได้ดี เพียงตรวจสอบให้แน่ใจว่า "/ usr / local / bin" อยู่ในเส้นทาง

ดังนั้นดูเหมือนว่าการเข้าถึง "/ usr / bin" จะถูก จำกัด


7

เริ่มต้นระบบ -> กดยาวcmd + R เลือกเทอร์มินัลจากเมนูยูทิลิตี้พิมพ์คำสั่งต่อไปนี้csrutil ปิดใช้งาน เทอร์มินัลปิดและรีสตาร์ทระบบ


9
สิ่งนี้ปิดใช้งานการป้องกันความสมบูรณ์ของระบบ อาจเป็นการดีที่สุดที่จะหาโซลูชันอื่นที่ปลอดภัยกว่าแทน
MattSidor

9
ส่วนตัวคิดว่านี่เป็นทางออกที่ถูกต้อง ฉันเห็นเหตุผลที่ไม่มีระบบปฏิบัติการเพื่อป้องกันผมจาก symlinking สิ่งที่อยู่ในไดเรกทอรีนี้หรือไดเรกทอรีใด ๆ sudoที่เป็น
rjhilgefort

0
  1. Create a symbolic link to psql in usr/bin (for mac only)
         command: sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/psql /usr/bin/psql 

หากคุณไม่สามารถสร้างลิงก์ symnbolic ได้เนื่องจากปัญหาการอนุญาตอาจเกิดจาก "csrutil" หลังจากปิดใช้งาน csrutil คุณสามารถสร้างลิงก์สัญลักษณ์ ทำตามขั้นตอนเหล่านี้เพื่อปิดใช้งาน CSRUtill:

รีสตาร์ท Mac ของคุณ ก่อนที่ OS X จะเริ่มทำงานให้กด Command-R ค้างไว้และกดค้างไว้จนกว่าคุณจะเห็นไอคอน Apple และแถบความคืบหน้า ปล่อย. สิ่งนี้จะเริ่มต้นคุณเข้าสู่การกู้คืน จากเมนูยูทิลิตี้ (ที่แถบด้านบน) เลือก Terminal ที่พรอมต์ให้พิมพ์ดังต่อไปนี้ทุกประการจากนั้นกด Return: csrutil ปิดใช้งาน Terminal ควรแสดงข้อความว่า SIP ถูกปิดใช้งาน จากเมนูเลือกรีสตาร์ท


-3

ลองรันsudo suก่อนจากนั้นรันคำสั่ง w / root level


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