Apakah praktik yang buruk untuk mengatur shell root ke sesuatu selain default?


16

Suatu ketika seorang teman saya (yang merupakan pengguna Unix / Linux berpengalaman) mengatakan kepada saya bahwa pengaturan shell root untuk sesuatu selain sh (yaitu bash atau zsh) dapat menimbulkan masalah, karena beberapa skrip mungkin berasumsi bahwa shell adalah sh dan melakukan sesuatu yang aneh .

Namun, saya pikir Ubuntu memiliki shell root default yang ditetapkan untuk bash, dan Gentoo juga menggunakan bash. Adakah yang bisa mematahkan mitos itu?

Jawaban:


12

Iya. Jika sistem gagal saat boot, Anda dapat masuk ke shell root. Jika Anda telah memisahkan / usr, beberapa shell dapat gagal untuk memulai.

Saya akan menyarankan untuk membuat akun toor(uid 0, gid 0) dengan shell non-standar sementara meninggalkan root dengan shell default.


Ini terjadi pada saya ketika saya memutakhirkan dari FBSD 7.2 ke 8.0 dan saya lupa untuk membangun kembali bash. Saya mem-boot dalam mode pengguna tunggal untuk memperbaikinya, tetapi hanya berhasil karena /bin/shmasih ditautkan dengan FBSDgarpu bournedan bukan bash.
gvkv

hanya untuk membuat segalanya lebih jelas, jika saya menginstal katakan zshdan entah bagaimana /usrrusak saya akan punya masalah? tapi sistem saya harus /bin/shmenunjuk ke /bin/bashdan bashdirinya sendiri, mengapa tidak akan shterpengaruh?
phunehehe

1
Default untuk root "menjamin" bahwa sistem akan boot - panduan upgrade akan berhati-hati untuk bisa masuk ke root setidaknya. Namun mungkin tidak demikian halnya dengan hal lain. Solusinya adalah menduplikasi akun root dengan toor dengan shell non-default untuk penggunaan sehari-hari dan tetap root sebagaimana adanya.
Maciej Piechotka

1
zshtidak boleh di /usr/bin/jika itu salah diinstal. semua kerang harus dalam/bin
xenoterracide

1
@xenoterracide: zsh di Gentoo masuk /bintetapi menyimpan beberapa file /usr/share. Saya juga menyatakan dengan jelas bahwa masalahnya adalah saat login saat boot (ketika beberapa layanan gagal).
Maciej Piechotka

7

Seharusnya tidak menjadi masalah.

File skrip shell menyandikan shell mana yang dieksekusi secara eksplisit. Itu dikodekan di baris pertama atau program lain atau skrip menjalankan shell tertentu dan memberikan skrip shell sebagai argumen.

Satu-satunya program yang dapat saya pikirkan yang menggunakan informasi shell akun pengguna (selain proses login) adalah procmail. Benar-benar lucu jika pengguna Anda telah menetapkan sebagai shell / bin / false di server surat ... Tapi Anda biasanya tidak menjalankan procmail sebagai root.

Kandidat lain adalah garis-garis di crontab root. Saya tidak tahu kebijakan crond mana shell yang digunakan.


$ SHELL biasanya disetel ke / bin / sh oleh crondaemon saat startup.
echox

3

Skrip yang ditulis untuk bourne shell sebagian besar akan berjalan melawan BASH atau ZSH atau $ foo tanpa masalah.

Pada banyak sistem Linux, sh asli tidak diinstal, melainkan symlink terhadap / bin / bash.

Jika beberapa skrip hanya "berasumsi" bahwa shell secara eksplisit sh, mereka harus ditulis ulang. Ada mekanisme shebang untuk memilih penerjemah mana yang dibutuhkan skrip Anda. Jika ini adalah sh, skrip harus dimasukkan #!/bin/shsebagai baris pertama.

Pengaturan shell default Anda seharusnya tidak relevan dalam konteks ini.


2

Saya tidak berpikir mengubah shell root akan menyebabkan masalah. Saya sepertinya ingat beberapa unices (mungkin beberapa varian BSD?) Yang memiliki tcsh sebagai shell default untuk root.

Login root jarang terjadi. Biasanya, Anda akan masuk ke akun Anda sendiri dan kemudian su atau sudo untuk me-root.

Yang penting adalah bahwa shell root harus memiliki sesedikit mungkin dependensi agar dapat digunakan dalam konteks perbaikan sistem. Sebagai contoh, adalah ide bagus untuk memiliki shell root yang terhubung secara statis; beberapa distribusi mengirimkan versi bash atau zsh atau sash yang terhubung secara statis (sebuah shell dengan banyak utilitas standar bawaan). Namun ini tidak begitu penting jika sistem Anda dapat dengan mudah di-boot dari CD cadangan atau drive USB.


Untuk alasan ketergantungan saya pikir masuk akal untuk meninggalkan shell sebagaimana adanya sehingga modifikasi sistem besar (seperti upgrade) tidak akan mengacaukan segalanya. Saya setuju itu mudah untuk diperbaiki dengan CD atau USB langsung, tetapi saya tidak harus memperbaikinya sejak awal.
phunehehe

1

Cangkang masuk pengguna tidak memengaruhi proses boot. Anda dapat mengatur shell ini untuk apa pun yang Anda inginkan. Tidak semua sistem memiliki bash dan mereka berfungsi dengan baik. Juga jika itu /usr/bin/zshitu diinstal salah, semua kerang sistem harus dalam /bin. Anda tidak boleh, bagaimanapun, berubah /bin/shuntuk menunjuk ke sesuatu selain dari default (kecuali Anda tahu apa yang Anda lakukan) karena banyak skrip #!/bin/shyang biasanya menunjuk ke bash, padahal seharusnya memiliki #!/bin/bashkarena bashism dan perilaku lain yang tidak akan bekerja pada zshatau dash.


oops maaf saya membuat kesalahan, sebenarnya di komputer saya baik bashdan zshberada di/bin
phunehehe

0

Saya memiliki bash sebagai shell default untuk root. Saya menggunakan zsh untuk beberapa waktu, tetapi kemudian kembali ke bash . Cangkang apa yang Anda gunakan, tidak masalah.

Ini hanya masalah, jika lebih dari satu orang memiliki akses root. Dalam hal ini Anda dapat memilih 'common denominator' yang biasanya bash, karena ini adalah shell yang paling banyak digunakan.


0

Mengenai Solaris / illumos, Solaris Root Shell Mini-FAQ menyebutkan

Beberapa sysadmin masih merekomendasikan untuk tidak mengganti shell root pada
sistem Solaris. Tanyakan mengapa dan Anda mungkin diberi tahu bahwa root membutuhkan
shell yang terhubung secara statis yang tidak bergantung pada
pustaka dinamis di bawah / usr / lib. Ini benar di masa lalu tetapi belum
tentu demikian hari ini. Solaris, ketika dikonfigurasi dengan benar, seperti Unix versi lain dan dapat mendukung shell apa pun yang Anda tentukan, untuk root atau akun lainnya.

Jadi, ya, jika Anda menggunakan Solaris atau illumos, boleh saja menggunakan kerang selain sh.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.