Berhati-hatilah:skrip yang digabungkan dengan setuid berbahaya!
Pertama, silakan lihat pertanyaan/jawaban ini, terutama pada jawaban dan peringatan keamanan ini.
Jika Anda masih ingin menjalankan skrip Anda dengan setuid
set, maka Anda dapat menulis program C singkat sebagai pembungkus dan mengatur setuid
bit pada biner yang dikompilasi.
Contoh pembungkus:
int main(void) {
setuid(0);
clearenv();
system("/absolute/path/to/your/script.sh");
}
Solusi lain menggunakan sudo
(disebutkan di sini):
-
Sebagai root, cegah akses tulis (dan mungkin lainnya) ke skrip Anda:
chown root /absolute/path/to/your/script.sh chmod 700 /absolute/path/to/your/script.sh
-
Verifikasi bahwa tidak seorang pun kecuali root yang dapat mengganti skrip , mis. dengan memodifikasi hak akses folder induk:
chown root /absolute/path/to/your/ chmod 755 /absolute/path/to/your/
-
Ubah hak akses sudo di
/etc/sudoers
denganvisudo
:ALL ALL = (root) NOPASSWD: /absolute/path/to/your/script.sh
Detail lebih lanjut tentang pengaturan (misalnya membatasi akses ke pengguna atau grup tertentu) dapat ditemukan di halaman manual sudoers.
Setelah itu, semua pengguna dapat menjalankan skrip sebagai root tanpa kata sandi:
sudo /absolute/path/to/your/script.sh
Ini mirip dengan menggunakan solusi pembungkus/setuid di atas.
Cara termudah dan teraman adalah menggunakan bit SETUID dalam izin file. Dengan begitu, izin perintah akan ditingkatkan menjadi izin pemilik file.
untuk mencegah skrip dari edisi, jangan menyetel bit tulis untuk semua orang.