Không thể ghi vào thư mục / tmp trong macOS, không thể sửa quyền: Thao tác không được phép


13

macOS El Capitan (10.11) không thể cài đặt bất kỳ bản cập nhật phần mềm hoặc cài đặt bất kỳ phần mềm nào vì /tmpcác /private/tmpthư mục dường như không thể ghi được.

Chạy này:

sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /

Cung cấp cho tôi lỗi này:

unable to set owner and group on "tmp" Error 1 Operation not permitted
unable to set permissions on "tmp" Error 1 Operation not permitted

Có cách nào để tự xóa các thư mục tmp và tạo lại chúng không? Khi tôi cố đổi tên hoặc xóa /tmphoặc /private/tmptôi tiếp tục không được phép hoạt động. sudo chmod 1777cũng thất bại theo cách tương tự trên cả hai /tmp/private/tmpthư mục

Disk Utility cho biết đĩa này khỏe mạnh, không có vấn đề nào được phát hiện khi chạy sơ cứu.

Có cách nào để chuyển hướng tmpvị trí sang một thư mục có thể ghi khác không?


1
Bạn đã tắt SIP trước chưa? Từ Phục hồi; Nhà gacsrutil disable
Tetsujin

2
Tôi có cùng một vấn đề. Làm theo lời khuyên của Tetsujin, khởi động lại trong chế độ phục hồi và chạy csrutil disable. Sau đó, tôi đã có thể thực hiện repair_packagesthành công và có thể truy cập / tmp như bình thường. Tuy nhiên, sau khi quay lại chế độ phục hồi và thực thi csrutil enable, hệ thống của tôi cũng gặp vấn đề tương tự. Có vẻ như cách duy nhất tôi có thể có quyền truy cập vào / tmp là vô hiệu hóa Bảo vệ toàn vẹn hệ thống.
Andrew Ferk

4
Tôi cuối cùng đã trở lại chế độ phục hồi và thực hiện csrutil disable. Sau khi khởi động lại, tôi xóa thư mục tmp : sudo rm /tmp; sudo rm /private/tmp, đã tạo thư mục tmp sudo mkdir /private/tmp; sudo chown root:wheel /private/tmp; sudo chmod 1777 /private/tmp, tạo symlink : sudo ln -s /private/tmp /tmp, và chạy repair_pacakgeslại. Sau khi trở lại chế độ recovery và chạy csrutil enable, tất cả đều hoạt động trở lại! Tuy nhiên, các quyền của / private / tmp đã từng drwxrwxrwt@và hiện tại chúng là drwxrwxrwt. Tôi không chắc đó là gì @và nếu điều này sẽ gây ra vấn đề cho tôi.
Andrew Ferk

1
@AndrewFerk: xem những bài viết apple.stackexchange.com/questions/42177/... unix.stackexchange.com/questions/10/what-does-the-mean-in-ls-l cho lời giải thích của các @ điều khoản mở rộng đánh dấu
Adam Michalik

Câu trả lời:


22
  1. Khởi động lại máy Mac của bạn vào chế độ khôi phục
  2. Mở menu Tiện ích ở thanh trên cùng> mở Terminal

    csrutil disable
    
  3. Khởi động lại

  4. Xóa thư mục tmp

    sudo rm -i /tmp
    sudo rm -i /private/tmp
    
  5. Tạo thư mục tmp

    sudo mkdir /private/tmp
    sudo chown root:wheel /private/tmp
    sudo chmod 1777 /private/tmp
    
  6. Tạo liên kết tượng trưng

    sudo ln -s /private/tmp /tmp
    
  7. Chạy repair_packages(bạn có thể không cần làm điều này)

    sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /
    
  8. Khởi động lại chế độ phục hồi và chạy

    csrutil enable
    
  9. Khởi động lại


Đạo cụ cho Andrew Ferk để tìm ra cách khắc phục; lấy ra nhận xét của bạn như một câu trả lời wiki cộng đồng để dễ đọc hơn.


2
Cảm ơn bạn!!! Tôi đã dành 3 ngày để nhổ tóc vì điều này. Không biết làm thế nào các quyền đã bị vấy bẩn ngay từ đầu, nhưng một ngày nọ, tôi bật mac để lựa chọn các cảnh báo, các chương trình không hoạt động và không có khả năng cài đặt bất cứ thứ gì. Điều này đã khắc phục vấn đề đó.
johngeorgewright

Tại sao bạn thực hiện CW này?
Revetahw nói Phục hồi lại

1
Bởi vì tôi không muốn nhận được tín dụng cho câu trả lời mà tôi chỉ chuyển đổi từ nhận xét của người khác
vào

Ổn mát. BTW, tôi đã không thấy bình luận của bạn cho đến bây giờ vì không có @Fiksdal.
Revetahw nói Phục hồi lại

10.13: sudo: / usr / libexec / repair_packages: command not found
Даниил Пронин

1
sudo chmod 1777 /private/tmp

Đã làm điều đó cho tôi.


0

Tôi đã sửa lỗi này bằng cách khôi phục hệ thống của mình từ Sao lưu máy thời gian. Nhưng các đề xuất khác trong các ý kiến ​​cũng đáng để thử.


0

Nếu bạn nhận được thông báo này trong thiết bị đầu cuối (hoặc iTerm) bằng maxOS Mojave

không được phép vận hành

Hóa ra tôi cần thêm ứng dụng đầu cuối của mình vào Cài đặt.app "Bảo mật & Quyền riêng tư"> "Truy cập toàn bộ đĩa"
(Tôi đã thêm cả hai terminal.appiTerm.app)


-1

Cố gắng tạo và sửa đổi quyền trên /private/tmpthư mục mà không cần chạy csrutil disable. Điều này làm việc cho tôi, sau khi thử không thành công để xóa và thông báo lỗi khi khởi động không còn nữa.


Chào mừng đến với Siêu người dùng. Vui lòng không đăng câu trả lời để xác nhận rằng câu trả lời khác đã có hiệu quả. Định dạng Hỏi & Đáp của trang web dành câu trả lời cho các giải pháp cho câu hỏi và mỗi câu trả lời sẽ đóng góp một giải pháp khác. Cách để chỉ ra rằng một câu trả lời là hữu ích là đầu tư một ít thời gian vào trang web và bạn sẽ có đủ đặc quyền để nâng cao câu trả lời bạn thích.
fixer1234
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.