Saya ingin tahu cara membuat (jika mungkin) skrip bash yang berjalan sebagai root di Debian terlepas dari pengguna yang menjalankannya, tanpa meminta autentikasi apa pun.
File ini akan menjalankan semua perintahnya sebagai pengguna root, tetapi hanya pengguna root sebenarnya yang dapat membaca atau menulisnya.
Saya membutuhkan ini karena saya ingin menjalankan perintah seperti swapoff
, swapon
, apt
, dll... Tetapi melalui aplikasi lain, dan saya ingin aplikasi itu tidak menanyakan kata sandi apa pun kepada saya.
Perintah akan diperbaiki (perintah root tersebut akan memiliki parameternya di file, bukan sebagai input), jadi implikasi keamanan tidak sepenuhnya menjadi perhatian saya, tetapi saya juga menerima penjelasannya.
Jawaban yang Diterima:
Cara tingkat rendah agar program selalu berjalan di bawah UID tertentu, adalah bit setuid pada file biner. Begitulah misalnya sudo
dan su
mendapatkan izin root, meskipun biasanya dimulai dengan penggunaan normal.
Namun secara umum, sistem mirip Unix tidak mendukung skrip setuid , lihat:Izinkan setuid pada skrip shell
Namun, yang dapat Anda lakukan adalah mengonfigurasi sudo
atau alat lain semacam itu untuk memungkinkan pengguna menjalankan beberapa file tertentu dengan hak istimewa yang sesuai. Misalnya, ini akan memungkinkan viceadmin
untuk menjalankan /usr/local/bin/sudoswapon
dengan argumen apa pun, dan tanpa otentikasi:
viceadmin ALL = NOPASSWD:/usr/local/bin/sudoswapon
Sekarang, sejak sudo
berurusan dengan mengubah hak istimewa itu sendiri, sudoswapon
bisa berupa skrip shell.
Anda benar untuk mencatat bahwa skrip perlu berhati-hati dengan cara menangani argumen baris perintah, dan bahwa semua gotcha dari bahasa shell akan berlaku. Untungnya, sudo
menyaring sebagian besar variabel lingkungan, setidaknya jika env_reset
opsi telah disetel.