Lệnh Unix ln -s không được phép trong OSX El Capitan Beta3


54

Tôi đã cài đặt nodejs cho Symphony khi gặp lỗi "Thao tác không được phép". Bất cứ ai biết tại sao điều này xảy ra?

MacBook-Pro-de-XXX: ~ XXX $ sudo ln -s / usr / local / bin / node / usr / bin / nút

Mật khẩu:

ln: / usr / bin / node: Hoạt động không được phép


1
Trước tiên hãy kiểm tra xem / usr / bin / nút đã được thiết lập chưa. Nếu bạn muốn thay đổi nó, bạn có thể sử dụng ln -sf để buộc liên kết tượng trưng.

MacBook-Pro-de-XXX: ~ XXX $ mà nút / usr / local / bin / nút
Kurr0 16/07/2015

ls -la / usr / bin / nút

MacBook-Pro-de-XXX: ~ XXX $ ls -la / usr / bin / nút ls: / usr / bin / nút: Không có tệp hoặc thư mục như vậy
Kurr0 16/07/2015

Câu trả lời:


70

Đây là chế độ được gọi là "rootless" trong phiên bản mới của OS X. Nó thực sự làm cho các thư mục hệ thống nhất định chỉ đọc (ngay cả đối với quản trị viên). "/ usr" là một trong những thư mục được bảo vệ (thư mục con duy nhất được loại trừ khỏi quy tắc này là "/ usr / local")

Người ta có thể vô hiệu hóa chế độ không root này bằng các lệnh sau:

$ sudo nvram boot-args="rootless=0"
$ sudo reboot

Nhưng điều này không được khuyến khích! Cách thực hành tốt nhất là chỉ cài đặt công cụ tùy chỉnh thành "/ usr / local".


Cập nhật (27-ngày 15 tháng 10): 10.11 (El Capitan) Phát hành công khai

Xin lưu ý rằng cách giải quyết được mô tả ở trên sẽ không hoạt động với bản phát hành công khai của El Capitan nữa vì Apple đã thay đổi mọi thứ xung quanh.

Cách thích hợp để vô hiệu hóa chế độ "không root" (còn gọi là Bảo vệ toàn vẹn hệ thống, "SIP") là khởi động tạm thời vào Chế độ khôi phục (giữ Command + R trong khi khởi động) và sử dụng csrutil disablelệnh (hoặc csrutil enableđể có thể bật lại) từ Terminal. Có thể truy cập Terminal thông qua menu của Trình cài đặt khởi chạy ở Chế độ khôi phục.


2
Có thể không được khuyến khích, nhưng bây giờ MacTeX dường như mong đợi /usr/texbin, vì vậy chúng tôi đi!
David Lord

Sửa đổi NVRAM để tắt chế độ không root không hoạt động trên El Capitan từ (ít nhất là) phiên bản GM chuyển tiếp. Kiểm tra câu trả lời này để biết phương thức hoạt động trong phiên bản hiện có: stackoverflow.com/questions/32590053/
mẹo

Điều này không làm việc cho tôi quá.
gsscoder

1
vẫn cho tôiOperation not permitted
Sinux 4/2/2016

2
Cách giải quyết của tôi là cài đặt vào / usr / local / bin
anon58192932

-2

Trong phiên bản El Capitan của tôi, /binthư mục không tồn tại:

/usr/local/bin

Vì vậy, cách khắc phục là:

mkdir -p /usr/local/bin

Các -plá cờ sẽ tạo ra các thư mục (và tình cờ bất kỳ dirs trong đường dẫn đầy đủ) nếu nó không tồn tại.

Sau đó, bạn có thể tạo liên kết tượng trưng & sao chép ứng dụng /usr/local/bin/usr/localkhông phải là một phần của chế độ "không root".


Nó không giúp giải quyết vấn đề. Đôi khi bạn chỉ cần symlink trong / usr / bin và không thể tránh điều đó.
Dmitri
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.