Không thể tạo liên kết biểu tượng bên trong / usr / bin ngay cả khi là sudo


101

Khi tôi cố gắng liên kết biểu tượng một tệp nhị phân trong thư mục / usr / bin của mình, tôi gặp lỗi Thao tác không được phép:

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

Ngay cả như sudo, tôi nhận được lỗi này.


Hệ thống tập tin 1.OS 2.Distribution 3. của bạn là gì?
Rany Albeg Wein

Mac OSX El Capitan 10.11.4
egidra

1
Bạn đã thử những cách sau: stackoverflow.com/questions/32659348/… ?
Rany Albeg Wein

Câu trả lời:


156

Tại sao tôi không thể liên kết biểu tượng vào /usr/bin?

Tính năng Bảo vệ toàn vẹn hệ thống mới của El Capitan ngăn chặn các thay đổi đối với một số phần cốt lõi của OS X, bao gồm hầu hết /usr/, ngay cả bởi root.

Làm cách nào để tôi vẫn có thể thêm các tệp thực thi vào đường dẫn của mình?

/usr/localThay vào đó , các tùy chỉnh cục bộ, chẳng hạn như những gì bạn đang làm . Đường dẫn /usr/local/binkhông tồn tại theo mặc định, nhưng bạn có thể tạo nó và đặt các tệp nhị phân tùy chỉnh (và các liên kết tượng trưng) vào đó:

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

Lưu ý rằng mặc /usr/local/bindù không tồn tại theo mặc định, nhưng nó nằm trong PATH mặc định, vì vậy ngay khi bạn tạo nó, nó sẽ được tìm kiếm các lệnh.

Tắt SIP

Cũng có thể tắt tính năng Bảo vệ toàn vẹn hệ thống, nhưng nói chung tốt nhất là bạn nên bật tính năng này và thực hiện tùy chỉnh ở những vị trí thích hợp hơn. Một câu hỏi của Apple Stack Exchange có thêm chi tiết về điều này: Thực sự thì Tính năng Rootless trong El-Captain là gì? .


16

Tôi đã tạo liên kết tượng trưng cho Sublime Text 3 trong Mac OS High Sierra như

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

Tôi cũng đang cố gắng tạo liên kết tượng trưng trong "/ usr / bin" và nhận được Thao tác không được phép.

Sau đó, tôi đã tạo liên kết tượng trưng trong "/ usr / local / bin" và không có lỗi. Liên kết tượng trưng hoạt động tốt. Chỉ cần đảm bảo rằng "/ usr / local / bin" nằm trong đường dẫn.

Vì vậy, có vẻ như quyền truy cập vào "/ usr / bin" bị hạn chế.


7

Khởi động lại hệ thống -> bấm dài cmd + R . chọn một thiết bị đầu cuối từ menu tiện ích gõ lệnh sau csrutil vô hiệu hóa thiết bị đầu cuối đóng và khởi động lại hệ thống.


9
Điều này vô hiệu hóa tính năng Bảo vệ toàn vẹn hệ thống. Có lẽ tốt nhất nên tìm một giải pháp khác an toàn hơn để thay thế.
MattSidor

9
Cá nhân tôi cho rằng đây là giải pháp phù hợp. Tôi không thấy lý do gì để Hệ điều hành chặn tôi liên kết với những thứ trong thư mục này hoặc bất kỳ thư mục nào 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 

Nếu bạn không thể tạo liên kết symnbolic do vấn đề về quyền, đó là do "csrutil". Sau khi tắt csrutil, bạn có thể tạo liên kết symbollic. Làm theo các bước sau để tắt CSRUtill:

Khởi động lại máy Mac của bạn. Trước khi OS X khởi động, hãy giữ Command-R và giữ nó cho đến khi bạn thấy biểu tượng Apple và thanh tiến trình. Giải phóng. Điều này khởi động bạn vào Phục hồi. Từ menu Tiện ích (trên thanh trên cùng), chọn Thiết bị đầu cuối. Tại lời nhắc gõ chính xác như sau và sau đó nhấn Return: csrutil vô hiệu hóa Terminal sẽ hiển thị thông báo rằng SIP đã bị vô hiệu hóa. Từ menu , chọn Khởi động lại.


-3

sudo suTrước tiên, hãy thử chạy lệnh w / root.


2
Điều này sẽ không giải quyết vấn đề OP. Vấn đề liên quan đến bảo vệ toàn vẹn hệ thống trên các hệ thống MacOS hiện đại.
cgseller
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.