Bertahun-tahun yang lalu, Anda bisa lolos dari menjalankan brew
sebagai root hanya dengan chowning brew
ke root, tetapi mereka menghapus fitur itu. Jadi dalam Homebrew 1.1.6, saya biasa mengedit /usr/local/Homebrew/Library/Homebrew/brew.sh
untuk menghapus cek root (yang mengatakan itu "sangat berbahaya") sehingga saya bisa dijalankan brew
sebagai root.
Homebrew versi yang lebih baru masih berfungsi dengan itu tetapi tetap mengembalikan brew.sh
file kembali setiap kali setelah saya jalankan brew
, bahkan jika saya chmod 500
memilikinya. Saya dapat menulis skrip untuk mengubahnya kemudian dijalankan brew
secara otomatis, tetapi saya tidak yakin apakah ini akan selalu berhasil dan tidak ingin mengambil risiko. Adakah yang menemukan metode berbeda untuk menjalankan Homebrew sebagai root?
brew
sebagai root? Juga, apakahsudo
tidak cukup untuk keperluan Anda?sudo
menjalankannya sebagai root, dan itu memberi saya kesalahan "sangat berbahaya" yang sama. Saya ingin menjalankan sebagai root karena jika tidak memiliki masalah menginstal paket-paket tertentu, terutama jika ada yang diinstal tidak melalui Homebrew (misalnya melaluipip
). Saya sudah menempuh rute itu berkali-kali. Plus itu tidak berfungsi dengan baik untuk banyak pengguna tanpa solusi aneh kecuali saya menginstal semuanya sebagai root.root
ini berisiko. Bahkan membangun paket tanpa manajer paket, Anda akan membangun paket sebagai pengguna non-privilege (sendiri) kemudian instal paketroot
dengansudo
. Manajer paket seperti Fink dan MacPorts keduanya membangun dengan pengguna non-hak istimewa mereka sendiri kemudian menginstal sebagairoot
. Homebrew tidak memiliki mekanisme seperti itu.brew.sh
file tersebut dikembalikan setelah memodifikasinya dan kemudian menjalankanbrew
perintah. Jadi saya bisa berlarisudo brew whatever
danbrew whatever
bersama-sama saja.brew --version
Keluaran saya adalah sebagai berikut:Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28)
FYI, saya memodifikasibrew.sh
file saya untuk mengomentari semua baris dalamcheck-run-command-as-root
fungsi dan menempatkan satureturn
pernyataan di bagian atas fungsi sebagai gantinya.Jawaban:
Setelah membuat perubahan pada skrip, coba setel flag yang tidak bisa diubah di brew.sh.
Saya belum diuji. Sebagai aturan umum, saya tidak memberi root ke aplikasi yang pengembangnya memohon saya untuk tidak melakukannya.
sumber
sudo brew install
berjalan seperti biasa.Pengguna biasa seharusnya tidak melakukan ini, tetapi Anda tidak tipikal, bukan?
Dua masalah:
Anda tidak dapat menghentikan root. Jika Anda bersikeras menggunakan root, maka root dapat menimpa
brew.sh
apa pun yang terjadi.Lagipula, Anda tidak bisa berhenti
brew
, Anda berbicara tentang berlaribrew
.Jadi kami akan bekerja dengan itu. Mari atur alias untuk disalin
brew.sh
lalu jalankanbrew
.(Perbaiki jalur untuk mencocokkan sistem Anda).
Sekarang yang perlu Anda lakukan adalah:
(Ini akan menjadi root, salin
brew.sh
, lalu jalankanbrew
sebagai root dengan argumen, setelah itubrew
akan menimpabrew.sh
dan Anda akan siap untuk melakukannya lagi)Catatan: Anda juga bisa memasukkan
sudo
alias, tetapi cara ini terasa lebih baik karena Anda akan dimintai kata sandi setiap saat.Biasanya Anda tidak dapat menggunakan
setuid
(chmod u+s
) untuk melakukan root pada skrip shell, untuk keamanan. Perl memiliki program terpisahsuidperl
yang dapat diinstal dan dapat meningkatkan hak pengguna, tetapi solusi semacam itu agak dalam untuk jawaban cepat.sumber