Saya menggunakan HomeBrew untuk kebutuhan port saya (sepertinya sedikit "lebih bersih" daripada MacPorts).
Saya dapat menginstal tanpa sudo
ing (yang hebat), tetapi langkah menautkan tampaknya memerlukannya ( /usr/local/share/man/man3
dimiliki oleh root
).
Sebuah panduan saya menemukan menyarankan saya rekursif chown /usr/local
dengan melakukan
sudo chown -R `whoami` /usr/local
Apakah ini aman ... atau itu Ide Buruk ™?
Juga: apakah izin saya benar?
$ pwd
/usr/local/share/man
$ ls -lah
total 32
drwxrwxr-x 8 root staff 272B 4 Set 11:02 .
drwxrwxr-x 9 root staff 306B 10 Set 11:27 ..
drwxr-xr-x 3 root wheel 102B 4 Ago 2009 de
drwxrwxr-x 163 root staff 5,4K 10 Set 11:27 man1
drwxr-xr-x 11 root wheel 374B 10 Set 11:27 man3
drwxr-xr-x 7 ago staff 238B 10 Set 11:39 man5
drwxr-xr-x 11 ago staff 374B 10 Set 11:39 man7
-rw-r--r-- 1 root staff 13K 4 Set 11:02 whatis
sudo chown -R :admin /usr/local
. Dengan cara ini, ini akan bekerja sama untuk setiap pengguna admin mesin. Meskipun Anda mungkin juga perlu menjalankansudo find /usr/local -perm -200 -exec chmod g+w '{}' \+
untuk memastikan grup memiliki akses tulis yang sama dengan pengguna.Jawaban:
Biasanya lebih baik untuk menjaga izin seketat mungkin. Tetap
/usr/local
dimiliki denganroot
cara yang hanya proses yang berjalan sebagairoot
/sudo
(atau meminta pengguna admin melalui kotak dialog otorisasi Apple) dapat menulis ke daerah ini. Jadi, proses pengunduhan harus meminta kata sandi Anda sebelum merusak file di sana.Tetapi seperti yang Anda katakan, itu membuat menambahkan program baru lebih sulit.
Saya setuju menjalankan
sudo
, karena Anda menginstal sesuatu lebih jarang daripada menjalankannya tetapi Anda harus percaya bahwa proses build tidak mengubah apa pun yang seharusnya.Jika Anda ingin menghindari sudo saya akan menginstal Homebrew ke dalam
~/usr/local
dan mengubah jalur Anda, manpath dll untuk memasukkan direktori di bawah sana.Cara yang lebih baik adalah membuat pengguna lain — katakanlah,
homebrew
dan buat direktori yang dimiliki oleh pengguna itu. Kemudian, instal menggunakan sanasudo -U homebrew
. Pengguna lain akan mendapat manfaat karena tidak dapat menimpa file lain, karena mereka tidak berjalanroot
dan program lain tidak dapat memengaruhi homebrew. (Saya perhatikan bahwa Homebrew FAQ menyarankan pengguna baru ini jika Anda berada di "lingkungan multi-pengguna". Saya akan mengatakan bahwa mesin Unix apa pun termasuk macOS adalah lingkungan multi-pengguna)Namun seperti yang dikatakan oleh wiki Homebrew, resep tidak menemukan semua case
/usr/local
dan menggantinya dengan direktori yang dipilih. Saya kira kita terjebak/usr/local
.sumber
$PATH
serta$MANPATH
memasukkan direktori pengguna. Jika program yang diinstal tidak memerlukan instalasi di seluruh sistem, itu adalah alternatif yang jauh lebih baik.brew doctor
(disarankan di bawah) memberi tahu saya bahwa saya hanya perlu membaca direktori shared man ... cukup aman untuk saya.Saya menggunakan Homebrew juga dan dapat memastikan itu benar-benar aman. Mengutip halaman Instalasi di FAQ Homebrew resmi :
Saya hanya akan menambahkan bahwa hal melakukan sebagai root adalah ide yang sangat buruk , sehingga
chown
ing/usr/local
tidak hanya tampaknya masuk akal untuk saya (itu bukan sistem dir di OSX), tapi waras .Izin Anda belum benar (belum). Jalankan saja perintah yang Anda daftarkan dan Anda akan baik-baik saja.
Jika Anda memiliki masalah lain, ingat, ini
brew doctor
dapat membantu Anda!sumber
brew doctor
benar-benar luar biasa.Jika Anda menggunakan Homebrew, Anda harus memberikan izin menulis kepada grup tertentu (baik
admin
ataustaff
), sehingga file dapat dibagikan di antara pengguna yang berada di grup itu.Sebagai contoh:
Kemudian tetapkan pengguna yang harus memiliki akses ke
brew
perintah ke grup itu (periksa grup Anda melalui:)id -Gn
.Kemudian ketika bekerja dengan
brew
, jangan jalankan dengansudo
.Saat masih memiliki masalah izin, jalankan
brew doctor
untuk memecahkan masalah.sumber
su myAdminUser
, dan kemudian semuanya berfungsi sebagaimana mestinya. Tetapi tentu saja solusi ini tidak akan memberikan keamanan bagi orang-orang yang toh sudah menjalankan pengguna Admin sepanjang waktu.Untuk apa nilainya,
/usr/local
tidak dianggap sebagai folder "sistem" oleh OS X, dan pada Snow Leopard baru instal folder itu kosong.Semua barang yang dimiliki root di folder itu adalah hasil dari
sudo make install
pada perangkat lunak lain, atau memberikan kata sandi Anda setelah mengklik dua kali pada sesuatu.pkg
yang ingin membuang barang ke dalam/usr/local
.Memiliki
/usr/local
"bekerja untuk saya" pada 2 mesin selama lebih dari setahun.Salah satu paham adalah bahwa jika Anda telah menginstal MySQL (tidak menggunakan Homebrew) dan meng-chown file-nya, maka itu mungkin tidak akan dapat melihat database lagi (jadi Anda harus chown kembali ke pengguna apa pun yang dijalankan sebagai pengguna MySQL sebagai .)
sumber
/usr/local/bin
masih dalam nilai default$PATH
, dan apa pun yang Anda masukkan di sana dapat digunakan oleh pengguna lain juga dan harus dipercaya . Jika seluruh/usr/local/
direktori memiliki izin yang sama/usr/local/share/man
saat ini pada pengaturan OP, siapa pun dapat pergi dan mengubah biner apa pun dengan skrip yang melakukannyarm -rf ~
./usr/local
harus baik-baik saja. (Tapi Anda mungkin tetap menggunakan Postgres. :))Seperti dalam Homebrew 1.0.0:
sumber
brew update
, yang masih memerlukan kepemilikan/usr/local
. Saya akan mencoba mengembalikan izin setelahnya.Saya pikir itu OK bagi pengguna untuk memiliki hak akses menulis ke
/usr/local
- setelah semua, itu berarti Anda tidak menggunakansudo
pada setiap membangun script. Saya tidak suka gagasan memiliki pengguna biasa/usr/local
. Saya lebih suka memiliki root (atau serupa) sendiri/usr/local
, tetapi ubah izin sehingga pengguna (atau setidaknya beberapa kelompok istimewa) dapat menulis untuk itu. Itu sepertinya pendekatan yang benar secara konseptual.sumber
/usr/local/bin
mungkin ada di depan $ PATH untuk sebagian besar pengguna. Membuat direktori yang bisa dituliskan dunia membuka banyak celah keamanan dengan cara itu.sudo
, atau Anda memberikan izin kepada beberapa pengguna untuk menulis/usr/local
. Saya akan menganggap yang ketiga sebagai yang paling tidak berisiko ... kecuali Anda tahu cara yang lebih baik.~/brew
atau semacamnya. Masalahnya, bagaimanapun, adalah bahwa tidak seperti Ruby, yang cukup mandiri, banyak utilitas * nix berharap untuk menemukan satu sama lain di/usr/local
.../usr/local
tidak dapat ditulis oleh dunia: melainkan, saya memiliki grup tepercayahomebrew
(bukan hanya admin) yang telah menulis izin untuk itu (izin yang diperluas seperti0: group:homebrew allow add_file,delete,add_subdirectory,delete_child,file_inherit,directory_inherit
benar - benar rock). Ini adalah kompromi terbaik saya sudah bisa untuk mencari tahu: adasudo
pada membangun script, tetapi beberapa kontrol atas/usr/local
./usr/local
). Melakukan banyak trawl di SO dan situs lain, melihat argumen kembali: memindahkan Homebrew ke folder home pengguna vs. tetap/usr/local
, mengubah pemilik dan / atau grup/usr/local
atau tidak, dan seterusnya ... sulit untuk mengetahui apakah ada solusi yang dapat diterima secara universal. Apakah Anda memiliki posting blog atau artikel tentang ini, atau dapatkah Anda memberikan penjelasan yang lebih dalam di suatu tempat?