Sudo không thể tạo tệp trong / usr / bin trong El Capitan


13

Tôi đã nâng cấp lên El Capitan ngày hôm qua và mọi thứ đều tốt cho đến gần đây khi tôi nhận thấy tôi không thể viết bất cứ điều gì (với sudo ofc) trên / usr / bin khi tôi cố gắng cài đặt phpbrew.

Điều gì có thể gây ra điều này và làm thế nào để khắc phục nó?

nhập mô tả hình ảnh ở đây


OS X El Capitan không có gốc. Tính năng này có thể bị vô hiệu hóa từ phân vùng phục hồi.
fd0

Câu trả lời:


16

Kể từ OSX 10.11, Apple đã củng cố hệ thống bảo mật. Được gọi là Bảo vệ toàn vẹn hệ thống , Apple khóa:

/System
/sbin
/usr (with the exception of /usr/local subdirectory)

Để tắt tính năng bảo mật này, bạn phải khởi động lại máy tính của mình và giữ CMD+Rkhi bắt đầu khởi động vào Chế độ khôi phục OS X.

Sau đó OS X Utilities > Terminal

Gõ lệnh csrutil disable; reboot

Máy tính của bạn sẽ khởi động lại. Bạn sẽ thấy một thông báo xác nhận về việc khử lưu động.

Để xác minh trạng thái của loại CRS csrutil status


1
Tôi đã vô hiệu hóa và nó vẫn không cho phép tôi làm bất cứ điều gì:/Users/Rob$ csrutil status System Integrity Protection status: disabled. /Users/Rob$ touch /usr/bin/yes touch: /usr/bin/yes: Permission denied
Roberto

Hãy thử với sudo.
Ragnar

Trong hầu hết các trường hợp, tốt hơn là cài đặt các tùy chỉnh cục bộ vào / usr / local (ví dụ / usr / local / bin thay vì / bin hoặc / usr / bin). Đó là những gì nó làm, và điều này đã xảy ra trong một thời gian dài. Nếu có thể, tôi khuyên bạn nên tuân theo thực tiễn tốt nhất này thay vì vô hiệu hóa SIP. Nếu bạn thực sự cần thay đổi ở một vị trí bị hạn chế, tốt nhất bạn nên tắt SIP, thực hiện thay đổi và sau đó bật lại ngay lập tức SIP với csrutil enable(trong chế độ Khôi phục).
Gordon Davisson

2

Như Ragnar đã đề cập , /usrthư mục bị khóa bởi hệ thống, ngoại trừ /usr/local. Sau đó, nếu kịch bản của bạn cho phép, tôi khuyên bạn nên thêm liên kết tượng trưng vào /usr/local/bin. Nếu bạn không có yêu cầu nghiêm ngặt về việc sử dụng /usr/bin, đó là một cách để khắc phục lỗi "Thao tác không được phép".


1

Người ta có thể xác minh xem một tệp hoặc thư mục cụ thể có bị hạn chế bởi Bảo vệ toàn vẹn hệ thống (SIP) / Rootless của OSX hay không bằng cách liệt kê các cờ tệp bằng cách sử dụng -Otùy chọn cho ls (ví dụ: để xem thư mục nào trong / bị hạn chế):

ls -Ol /

Các thư mục hoặc tệp được kiểm soát bởi SIP hiển thị là 'bị hạn chế'.

Có đầy đủ chi tiết trong câu trả lời cho câu hỏi này về SIP / rootless.

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.