Cara mengetahui apa yang menyebabkan kepemilikan / usr / local berubah dari nama pengguna saya menjadi root

13

Saya menggunakan homebrewsebagai manajer paket untuk aplikasi pengembangan web tertentu. Untuk tetap brewup to date, saya menjalankan update brewsetiap beberapa hari dan juga menjalankan brew doctor. Biasanya, ini baik-baik saja dan brewmengatakan bahwa saya siap untuk menyeduh.

Namun, kadang-kadang, saya mendapatkan kesalahan berikut:

Peringatan: / usr / local / etc tidak dapat ditulisi.

Ini bisa terjadi jika Anda "sudo make install" perangkat lunak yang tidak dikelola oleh Homebrew. Jika rumus mencoba menulis file ke direktori ini, penginstalan akan gagal selama langkah tautan.

Anda mungkin chown/ usr / local / etc

Peringatan: Direktori / usr / local tidak dapat ditulis. Bahkan jika direktori ini dapat ditulis ketika Anda menginstal Homebrew, perangkat lunak lain dapat mengubah izin pada direktori ini. Beberapa versi komponen "InstantOn" dari Airfoil diketahui melakukan hal ini.

Anda mungkin harus mengubah kepemilikan dan izin dari / usr / local kembali ke akun pengguna Anda.

Cukup mudah untuk mengatur ulang izin kembali ke nama pengguna saya. Setelah itu brewtampaknya baik-baik saja.

Tetapi apa yang menyebabkan ini terjadi?

Apakah ada log yang menunjukkan apa yang menyebabkan izin berubah?

Daniel Muller
sumber
3
Tidak ada log tetapi catat bahwa memiliki / usr / local yang dimiliki oleh rood adalah standar Unix dan semua bangunan yang ada di sana akan mengharapkannya. Solusinya adalah jangan mencampur direktori dengan manajer paket (Homebrew) dan kompilasi Unix standar - Gunakan direktori lain untuk salah satunya
user151019
3
Menambahkan perangkat lunak ke lokasi yang sama dengan menggunakan palungan paket adalah ide yang buruk, dan begitu juga mengubah kepemilikan dan izin /usr/local. Tetapi jika Anda bersikeras maka Anda bisa make installtanpa menggunakan sudountuk paket yang Anda instal sendiri.
fd0
1
Memutakhirkan OS X biasanya mengatur ulang / usr / kepemilikan dan izin lokal.
mspasov
1
@Lain-lain, ah saya membaca kutipan dari Homebrew alih-alih pertanyaan
user151019
1
Apa lagi yang Anda instal (secara manual atau melalui manajer paket lain) pada Mac Anda yang dikonfigurasi untuk instalasi default /usr/local?
dan

Jawaban:

13

Saya memiliki masalah yang sama persis ini, dan ternyata pembaruan otomatis Sophos yang harus disalahkan. Saya menemukan ini dengan menjalankan:sudo fs_usage | grep "usr/local"

Butuh beberapa saat, tetapi akhirnya saya melihat daemon Sophos yang bernama "Instalasi" membantu dengan / usr / local's permissions.

Saya masih mencoba mencari cara yang tepat untuk perilaku ini.

EDIT: Saya yakin Sophos telah memperbaiki masalah ini, lihat tautan di komentar dari jawaban ini. Tampaknya setidaknya sudah diperbaiki untuk saya!

Lainnya
sumber
4
Ada diskusi di sini: community.sophos.com/products/free-antivirus-tools-for-desktops/... Ini harus diperbaiki pada November 2015
JoeZuntz
@ JoZuntz Temukan yang bagus! Luar biasa bahwa mereka benar-benar mendorong perbaikan.
Lainnya
@saya terima kasih atas info ini. Saya dapat memperbaiki semuanya setelah memutakhirkan ke 10.11.1 dan membuat homebrew bekerja kembali, tetapi lebih sering daripada tidak, setiap kali saya melakukan upgrade minuman, izin telah berubah lagi. Itu menggangguku perangkat lunak apa yang terus mengubah perms di / usr / local.
Tim X
@TimX Ya itu agak menyebalkan ... Untungnya sepertinya Sophos menambalnya pada akhir minggu depan, 20 November.
Lainnya
4

Ternyata Filewave adalah biang keladinya. Filewave adalah perangkat lunak manajemen sistem yang digunakan oleh sekolah kami untuk mendorong pembaruan perangkat lunak. Terima kasih atas masukannya.

Daniel Muller
sumber
2

Saya hanya punya ide kasar bagaimana mendapatkan izin pencuri. Ini bukan solusi untuk masalah Anda, tetapi lebih banyak solusi.

Bagaimana dengan menulis anjing penjaga di Automator atau dengan Hazel (tindakan folder) untuk menonton folder khusus ini tetapi alih-alih menambahkan fungsi seperti Skala gambar Anda hanya menggunakan shellscript yang menjalankan beberapa perintah shell:

  • Jika folder diubah dengan cara apa pun, cukup potret izin dan id proses yang sedang diakses dengan fuser <foldername>.
  • maka Anda mencari di tabel proses id proses ( ps auxwwwwww | grep <process id>) dan akhirnya
  • tulis email ke diri sendiri dengan informasi yang dikumpulkan ini.

Sayangnya saya bukan Sadhu Automator, tetapi saya menemukan oleh Google ada banyak solusi untuk masalah yang sama.

Garex
sumber
0

Jika Anda menggunakan Time Machine, Anda dapat menemukan perkiraan waktu ketika izin diubah dengan menjelajahi Backups.backupdbTerminal. Gunakan ls -lddalam folder timestamped, mis

ls -ld /Volumes/Backup/Backups.backupdb/Mac/2015-12-25-120000/Macintosh\ HD/usr/local 

Yang akan menampilkan informasi pemilik dan grup.

Setelah tanggal perubahan terjadi, Anda dapat mengetahui apa lagi yang mungkin berubah pada sistem Anda. Teknik sederhana adalah dengan menggunakan File Finder ›Temukan dan tambahkan Last modified datekriteria. Alat bagus lainnya ada finddan mdfinddi Terminal.

duozmo
sumber
-1

Ini adalah efek samping dari memperbarui sistem Anda; OS X mungkin melakukan beberapa perbaikan "izin" lintas-papan selama proses pembaruan karena / usr / local bersarang di folder yang dimiliki root.

Stan Hutcheon
sumber
AFAICT, meningkatkan ke El Capitan adalah apa yang menyebabkan masalah bagi saya
Giuseppe
-3

Sudahkah Anda menggunakan Disk Utilitypilih Macintosh HDlalu jalankan Verify Disk Permissiondan kemudian Repair Disk Permissionjika perlu, daripada melakukannya secara manual?

Sekarang ini seharusnya tidak memperbaiki masalah Anda, tetapi ini merupakan titik awal yang 'dikenal' untuk melihat kapan buatan rumahan mengubah izin. Itu bisa menunjukkan masalah mendasar jika Anda beruntung.

Juga new update -vuntuk keluaran verbose yang lebih banyak, ditambah log lama ada di sini ~/Library/Logs/Homebrewseperti di mana log homebrew?

MichaelStoner
sumber
2
Disk Utilitytidak akan memverifikasi atau memperbaiki izin /usr/localsejak direktori ini tidak ada pada pemasangan baru Yosemite.
dan
Saya memeriksa hipotesis ini sepenuhnya pada Yosemite dengan membuat /usr/localmilik baru saya, dan menjalankannya DU. Tidak ada /usr/localdi dalam DUlog. Dan /usr/localmasih milik saya.
dan