Tidak dapat menulis ke / direktori tmp di macOS, tidak dapat memperbaiki izin: "Operasi tidak diizinkan"

13

MacOS El Capitan (10.11) tidak dapat menginstal pembaruan perangkat lunak atau menginstal perangkat lunak apapun karena /tmpdan /private/tmpfolder tampaknya tidak bisa ditulisi.

Menjalankan ini:

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

Berikan saya kesalahan ini:

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

Apakah ada cara untuk menghapus folder tmp secara manual dan membuatnya kembali? Ketika saya mencoba mengganti nama atau menghapus /tmpatau /private/tmpsaya terus mendapatkan operasi tidak diizinkan. sudo chmod 1777juga gagal dengan cara yang sama pada folder /tmpdan keduanya/private/tmp

Disk Utility mengatakan disk tersebut sehat tanpa masalah yang terdeteksi saat menjalankan pertolongan pertama.

Apakah ada cara untuk mengalihkan tmplokasi ke folder lain yang dapat ditulisi?

Ali
sumber
1
Apakah Anda menonaktifkan SIP terlebih dahulu? Dari Pemulihan; Terminalcsrutil disable
Tetsujin
2
Saya memiliki masalah yang sama. Mengikuti saran Tetsujin, memulai kembali dalam mode pemulihan, dan berlari csrutil disable. Setelah itu, saya dapat menjalankan repair_packagesdengan sukses dan dapat mengakses / tmp seperti biasa. Namun, setelah kembali ke mode pemulihan dan mengeksekusi csrutil enable, sistem saya mengalami masalah yang sama. Sepertinya satu-satunya cara saya bisa mendapatkan akses ke / tmp adalah dengan menonaktifkan Perlindungan Integritas Sistem.
Andrew Ferk
4
Saya akhirnya kembali ke mode pemulihan dan menjalankan csrutil disable. Setelah restart, saya menghapus folder sudo rm /tmp; sudo rm /private/tmptmp:, membuat folder tmp sudo mkdir /private/tmp; sudo chown root:wheel /private/tmp; sudo chmod 1777 /private/tmp, membuat symlink:, sudo ln -s /private/tmp /tmpdan berlari repair_pacakgeslagi. Setelah kembali ke mode pemulihan dan berjalan csrutil enable, semua berfungsi kembali! Namun, izin / private / tmp dulu drwxrwxrwt@dan sekarang sudah drwxrwxrwt. Saya tidak yakin apa @itu dan apakah ini akan menyebabkan masalah bagi saya.
Andrew Ferk
1
@AndrewFerk: melihat posting ini apple.stackexchange.com/questions/42177/... unix.stackexchange.com/questions/10/what-does-the-mean-in-ls-l untuk penjelasan @ diperpanjang izin penanda
Adam Michalik

Jawaban:

22
  1. Reboot Mac Anda ke mode pemulihan
  2. Buka menu Utilities di bar atas> buka Terminal

    csrutil disable
    
  3. Mulai ulang

  4. Hapus folder tmp

    sudo rm -i /tmp
    sudo rm -i /private/tmp
    
  5. Buat folder tmp

    sudo mkdir /private/tmp
    sudo chown root:wheel /private/tmp
    sudo chmod 1777 /private/tmp
    
  6. Buat symlink

    sudo ln -s /private/tmp /tmp
    
  7. Jalankan repair_packages(Anda mungkin tidak perlu melakukan ini)

    sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /
    
  8. Reboot kembali ke mode pemulihan dan jalankan

    csrutil enable
    
  9. Mulai ulang


Props untuk Andrew Ferk untuk mencari tahu perbaikan; menarik komentar Anda sebagai jawaban wiki komunitas sehingga lebih mudah dibaca.

ento
sumber
2
Terima kasih!!! Saya telah menghabiskan 3 hari mencabut rambut saya di atas ini. Tidak tahu bagaimana izin jadi kacau di tempat pertama, tetapi suatu hari saya menyalakan mac untuk pilihan peringatan, program tidak berfungsi dan ketidakmampuan untuk menginstal apa pun. Ini memperbaiki masalah itu.
johngeorgewright
Mengapa Anda membuat CW ini?
Revetahw mengatakan Reinstate Monica
1
Karena saya tidak ingin mendapatkan kredit untuk jawaban yang saya hanya dikonversi dari komentar orang lain
ento
Baiklah, keren. BTW, saya tidak melihat komentar Anda sampai sekarang karena tidak ada @Fiksdal.
Revetahw mengatakan Reinstate Monica
10.13: sudo: / usr / libexec / repair_packages: perintah tidak ditemukan
Даниил Пронин
1
sudo chmod 1777 /private/tmp

Melakukannya untukku.

Renetik
sumber
0

Saya memperbaikinya dengan memulihkan sistem saya dari Time Machine Backup. Tetapi saran lain dalam komentar juga layak untuk dicoba.

Ali
sumber
0

Jika Anda mendapatkan pesan ini di terminal (atau iTerm) menggunakan maxOS Mojave

Operasi tidak diizinkan

Ternyata saya perlu menambahkan aplikasi terminal saya ke Settings.app "Keamanan & Privasi"> "Akses Disk Penuh"
(Saya menambahkan keduanya terminal.appdan iTerm.app)

Aiden Moon
sumber
-1

Cobalah untuk membuat dan memodifikasi izin pada /private/tmpfolder tanpa menjalankan csrutil disable. Ini berhasil bagi saya, setelah mencoba gagal menghapus dan pesan kesalahan saat boot hilang.

pengguna69083
sumber
Selamat datang di Pengguna Super. Harap jangan mengirim jawaban untuk mengonfirmasi bahwa jawaban lain berhasil. Format Q&A situs menyimpan jawaban untuk solusi untuk pertanyaan, dan setiap jawaban harus berkontribusi solusi lain. Cara untuk menunjukkan bahwa jawaban itu bermanfaat adalah menginvestasikan sedikit waktu di situs dan Anda akan mendapatkan hak istimewa yang cukup untuk meningkatkan jawaban yang Anda sukai.
fixer1234