Bagaimana cara menjalankan Homebrew sebagai root?

11

Bertahun-tahun yang lalu, Anda bisa lolos dari menjalankan brewsebagai root hanya dengan chowning brewke root, tetapi mereka menghapus fitur itu. Jadi dalam Homebrew 1.1.6, saya biasa mengedit /usr/local/Homebrew/Library/Homebrew/brew.shuntuk menghapus cek root (yang mengatakan itu "sangat berbahaya") sehingga saya bisa dijalankan brewsebagai root.

Homebrew versi yang lebih baru masih berfungsi dengan itu tetapi tetap mengembalikan brew.shfile kembali setiap kali setelah saya jalankan brew, bahkan jika saya chmod 500memilikinya. Saya dapat menulis skrip untuk mengubahnya kemudian dijalankan brewsecara 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?

sudo
sumber
3
Karena penasaran, mengapa Anda ingin menjalankan brewsebagai root? Juga, apakah sudotidak cukup untuk keperluan Anda?
Allan
2
@ Allan sudomenjalankannya 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 melalui pip). 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.
sudo
$ su -> $ buatan apa pun yang Anda inginkan?
StrawHara
1
Membangun paket perangkat lunak seperti rootini berisiko. Bahkan membangun paket tanpa manajer paket, Anda akan membangun paket sebagai pengguna non-privilege (sendiri) kemudian instal paket rootdengan sudo. Manajer paket seperti Fink dan MacPorts keduanya membangun dengan pengguna non-hak istimewa mereka sendiri kemudian menginstal sebagai root. Homebrew tidak memiliki mekanisme seperti itu.
fd0
1
Hmm, saya tidak melihat masalah di akhir saya di mana brew.shfile tersebut dikembalikan setelah memodifikasinya dan kemudian menjalankan brewperintah. Jadi saya bisa berlari sudo brew whateverdan brew whateverbersama-sama saja. brew --versionKeluaran saya adalah sebagai berikut: Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28) FYI, saya memodifikasi brew.shfile saya untuk mengomentari semua baris dalam check-run-command-as-rootfungsi dan menempatkan satu returnpernyataan di bagian atas fungsi sebagai gantinya.
GDP2

Jawaban:

2

Setelah membuat perubahan pada skrip, coba setel flag yang tidak bisa diubah di brew.sh.

chflags uchg /usr/local/Homebrew/Library/Homebrew/brew.sh

Saya belum diuji. Sebagai aturan umum, saya tidak memberi root ke aplikasi yang pengembangnya memohon saya untuk tidak melakukannya.

Jason
sumber
Saya juga setuju dengan Jason. Ada alasan mereka mengatakan tidak menjalankan bir sebagai root. Sebagian besar karena mereka adalah devs dan saya akan mempercayai mereka dengan perangkat lunak mereka. Juga, tidak seperti macports, yang terakhir kali saya periksa masih mengharuskannya, minuman tidak perlu atau ingin izin root jadi jika Anda mengacaukan sesuatu, kemungkinan besar tidak akan merusak seluruh sistem Anda. Semuanya terkandung dalam akun pengguna Anda dan tidak perlu dipusingkan dengan sudo.
user9950573
1
Dikonfirmasi bekerja, terima kasih. Butuh beberapa waktu untuk mencoba memperbarui pertama kali, tetapi nanti sudo brew installberjalan seperti biasa.
sudo
1
Tidak banyak yang bisa dikacaukan dan membuat sistem tidak dapat digunakan dengan paket yang akan saya instal di Mac. Lagi pula, saya dapat memulihkan sistem saya dalam 30 menit. Membersihkan pengguna saya jauh lebih sulit, dan banyak hal langsung tidak berfungsi kecuali diinstal di seluruh sistem, seperti yang saya jelaskan di komentar di atas.
sudo
1

Pengguna biasa seharusnya tidak melakukan ini, tetapi Anda tidak tipikal, bukan?

Dua masalah:

  1. Anda tidak dapat menghentikan root. Jika Anda bersikeras menggunakan root, maka root dapat menimpa brew.shapa pun yang terjadi.

  2. Lagipula, Anda tidak bisa berhenti brew, Anda berbicara tentang berlari brew.

Jadi kami akan bekerja dengan itu. Mari atur alias untuk disalin brew.shlalu jalankan brew.

alias brew='cp /<modified>/brew.sh /<actuall>/brew.sh; /usr/local/bin/brew'

(Perbaiki jalur untuk mencocokkan sistem Anda).

Sekarang yang perlu Anda lakukan adalah:

sudo brew <arguments>

(Ini akan menjadi root, salin brew.sh, lalu jalankan brewsebagai root dengan argumen, setelah itu brewakan menimpa brew.shdan Anda akan siap untuk melakukannya lagi)

Catatan: Anda juga bisa memasukkan sudoalias, 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 terpisah suidperlyang dapat diinstal dan dapat meningkatkan hak pengguna, tetapi solusi semacam itu agak dalam untuk jawaban cepat.

Mampu Mac
sumber