Saya mencoba menulis skrip bash (di Ubuntu) yang akan mencadangkan direktori menggunakan tar.
Bagaimana saya bisa melakukan pemeriksaan di skrip sehingga hanya bisa dijalankan sebagai root (atau dengan sudo)?
Misalnya, jika pengguna menjalankan skrip, itu harus mengatakan bahwa skrip ini harus dijalankan dengan hak akses sudo, dan kemudian berhenti. Jika skrip dieksekusi sebagai root, skrip akan terus melewati pemeriksaan.
Saya tahu harus ada solusi yang mudah, saya hanya belum bisa menemukannya dengan googling.
bash
scripting
root
permissions
Cory Plastek
sumber
sumber
Saya berasumsi Anda tahu bahwa dengan mengubah kepemilikan menjadi root
chown root:root file
dan mengatur izin ke 700
chmod 700 file
Anda akan mencapai hal yang sama - tanpa saran untuk dijalankan sebagai sudo.
Tetapi saya akan memposting jawaban ini untuk kelengkapan.
sumber
sudo git add <file>
Apa tujuan Anda di sini, untuk memberi tahu pengguna bahwa mereka harus menjalankan skrip sebagai root atau sebagai semacam tindakan pencegahan keamanan?
Jika Anda hanya ingin memberi tahu pengguna daripada saran uid apa pun baik-baik saja, tetapi saran itu sama bermanfaatnya dengan ban pada kuda sebagai tindakan pencegahan keamanan - tidak ada yang menghentikan pengguna menyalin naskah, mengeluarkan pernyataan if, dan tetap menjalankannya.
Jika ini adalah masalah keamanan maka skrip harus disetel ke 700, dimiliki oleh root: root, sehingga tidak dapat dibaca atau dieksekusi oleh pengguna lain.
sumber
Anda dapat menggunakan perintah whoami juga.
sumber
Variabel bash
$EUID
menunjukkan UID efektif tempat skrip berjalan, jika Anda ingin memastikan skrip berjalan sebagai root, periksa apakah$EUID
mengandung nilai 0 atau tidak:Ini lebih baik daripada solusi dengan
/usr/bin/id
(untuk skrip bash!) Karena tidak memerlukan perintah eksternal.sumber
echo
dengansudo "$0" "$@"
, dan menggantiexit 2
denganexit $?
.Salah satu cara sederhana untuk membuat skrip hanya dapat dijalankan oleh root adalah memulai skrip dengan baris:
#!/bin/su root
sumber
"#! / bin / su root" memungkinkan pengguna dalam mode pengguna super untuk menjalankan skrip tanpa menggunakan kata sandi root. Jika Anda ingin pengguna super menjalankan skrip dengan hasil yang dari root, ini yang melakukannya.
sumber