Saat menulis skrip shell, di mana beberapa tapi tidak semua perintah di dalamnya membutuhkan hak superuser, haruskah saya
tambahkan sudo ke perintah-perintah yang membutuhkan hak superuser, dan jalankan skrip shell tanpa sudo, atau
jangan menambahkan sudo ke perintah-perintah yang membutuhkan hak superuser, tetapi jalankan skrip shell dengan sudo?
Dengan cara kedua saya hanya perlu memberikan kata sandi saya sekali, tetapi semua perintah dalam skrip akan dijalankan dengan supervilleges superuser, termasuk perintah-perintah yang tidak perlu.
Dengan cara pertama saya mungkin perlu memberikan kata sandi saya beberapa kali untuk perintah sudo yang berbeda, sedangkan hak superuser hanya diberikan kepada perintah yang membutuhkannya.
Dari masalah keamanan, cara pertama lebih baik. Untuk kenyamanan, cara kedua lebih baik.
Saya telah berpikir untuk mengadopsi cara pertama. Jadi saya harus berurusan dengan ketidaknyamanan dalam memberikan kata sandi saya ke beberapa perintah sudo dalam skrip shell.
-
Skrip yang ditulis dengan baik akan mendeteksi apakah itu berjalan dengan izin yang tepat dan tidak memanggil sudo sama sekali, tapi ada banyak skrip yang buruk
Jadi haruskah saya menggunakan cara kedua? Jika begitu,
bagaimana saya bisa menulis "skrip akan mendeteksi jika sedang berjalan dengan izin yang tepat dan tidak memanggil sudo sama sekali"?
bagaimana saya bisa meningkatkan keamanannya untuk menghindari masalah memberikan hak superuser ke perintah yang tidak membutuhkannya saat menjalankan skrip dengan sudo?
- Apakah pendekatan sederhana ini memiliki yang terbaik dari kedua pendekatan: tambahkan sudo ke perintah yang hanya membutuhkannya, dan jalankan skrip dengan atau tanpa sudo tergantung pada apakah saya menginginkan kenyamanan atau keamanan? Apakah pendekatan ini memiliki beberapa masalah?
Terima kasih.
sudo
memiliki cache kredensial default. Apakah ini dinonaktifkan pada platform Anda?Jawaban:
Untuk mengatasi masalah pertama Anda:
Ada pemeriksaan sederhana dan POSIX untuk root:
Atau, di Bash, lebih banyak coder yang didorong oleh kinerja mungkin ingin menggunakan:
Perhatikan bahwa saya sengaja membungkus kode dalam fungsi untuk digunakan kembali.
Untuk mengatasi masalah kedua Anda:
Anda tidak bisa berbuat banyak tentang ini. Setidaknya tidak ada yang terlintas di pikiran saya. Jika saya melihat skrip, saya mungkin punya saran. Tetapi karena Anda tidak memasukkannya dalam pertanyaan Anda ... Jika Anda menjalankan seluruh skrip dengan
sudo
atau sebagairoot
, saya tidak melihat cara untuk mengontrol ini.Untuk menanggapi komentar:
Dalam skrip saya, saya biasanya melanjutkan dengan pendekatan yang terakhir, tetapi itu tidak berarti saya merekomendasikannya kepada Anda. Karena itu tergantung pada siapa skrip dimaksudkan untuk -
root
hanya; untuk pengguna sebagian besar dengan pengecualian memiliki beberapa pengguna yang memilikisudo
hak; Anda harus benar-benar memasukkan skrip Anda ke dalam pertanyaan agar saya dapat menjawab dengan nilai apa pun.sumber
sudo -u "$SUDO_USER" command...
?sudo -u "$SUDO_USER" command
yang dimaksudkan di sini?Saya pikir saya bisa menjawab ini.
Tidak ada alasan mengapa Anda memiliki masalah di sini, inilah sebabnya:
Jika hanya ada satu perintah yang perlu dijalankan sebagai root, maka
run
program Anda sebagairoot
atausudo
karenasudo
di dalam skrip Anda adalah jalan yang lebih panjang. Apakah Anda lupa bahwa pemrogram malas?Jika Anda perlu banyak perintah
run
sebagairoot
kemudian menjalankannya sebagairoot
atausudo
.Jika pengguna lain perlu
run
program Anda, maka pengaturansudo
untuk mereka karenasudo
banyak disesuaikan dan akan memenuhi kebutuhan Anda.Ini sebuah contoh dengan
sudo
:Selalu gunakan
visudo
saat mengedit file sudoers .....sudo
juga bagus untuk mengubah pengguna di dalam program / skrip Anda di sini adalah baris dari salah satu skrip tambang:https://www.cyberciti.biz/tips/shell-root-user-check-script.html
how-do-i-menentukan-jika-a-shell-script-sedang berjalan dengan izin root
EDIT atas permintaan dari gentleman @terdon:
Pikirkan skrip Anda dengan cara ini ....
Apakah ini skrip publik (selain Anda akan menggunakannya) Apa yang dilakukan skrip? Apakah ini memberi tahu Anda waktu? Atau apakah itu memperbarui iptables di 200 sistem? Jika hanya Anda menggunakannya, apakah itu terkait dengan pekerjaan / profesional atau apakah untuk penggunaan pribadi?
Anda hanya perlu tahu sebelumnya apa yang terdiri dari grup pengguna Anda, itu saja.
Jika itu
written
untuk memberi atau menjual kepada admin, bahkan kemudian, mengapa tidakscript
boleh dibiarkan berjalan sepertiroot
?? Apa salahnya?Script / program nyata sering dijalankan sebagai pengguna istimewa dan tidak ada yang menyebutkan bahwa itu tidak masalah, tetapi ketika programmer, kebanyakan pemula seperti saya berbicara tentang hal-hal ini, maka itu adalah ancaman keamanan nyata ..... apa yang orang dalam posting Anda, Anda lihat sedang mencoba untuk mengatakan sementara tidak elegan adalah bahwa beberapa orang melihat kontrol yang Anda miliki
system
dan kode Anda .... apakah Anda mengatur file ke izin lebih banyak daripada yang akan Anda gunakan, apakah Anda memiliki semua cek di Anda logika atau programmer berbakat akan melihat bahaya dalam kode Anda hanya meliriknya?Jika Anda
code needs root
, penggunaansudo
, dan jika ada banyak hanya menjalankannya sebagairoot.
...... jawaban saya berakhir di sini Fiuhsumber