Saya bereksperimen sedikit dan melihat sesuatu yang aneh: mengatur bit setuid pada salinan bash yang terletak di /usr/bin/bash-test
tampaknya tidak berpengaruh. Ketika saya menjalankan instance bash-test
, direktori home saya tidak disetel ke /root
dan ketika saya menjalankan whoami
perintah dari bash-test
, nama pengguna saya tidak dilaporkan root
, menyarankan bahwa bash-test
itu tidak berjalan sebagai root. Namun, jika saya mengaktifkan bit setuid whoami
, saya dilaporkan sebagai root di shell apa pun, seperti yang diharapkan.
Saya mencoba mengatur bit setuid /usr/bin/bash
dan juga mengamati perilaku yang sama.
Mengapa bash tidak berjalan sebagai root ketika saya mengatur bit setuid di atasnya? Bisakah selinux ada hubungannya dengan ini?
Jawaban:
Penjelasannya agak menjengkelkan: bash sendiri adalah alasannya.
strace
adalah teman kami (harus SUID root itu sendiri agar ini berfungsi):bash mendeteksi bahwa ia telah memulai SUID root (UID! = EUID) dan menggunakan kekuatan rootnya untuk membuang kekuatan ini, mengatur ulang EUID ke UID. Dan kemudian bahkan FSUID, hanya untuk memastikan ...:
Pada akhirnya: tidak ada peluang. Anda harus memulai bash dengan root UID (yaitu sudo).
Edit 1
Halaman manual mengatakan ini:
Tetapi ini tidak berhasil untuk saya.
-p
bahkan tidak disebutkan di antara opsi startup. Saya juga mencoba--posix
; juga tidak berhasil.sumber
Bagaimanapun, program root SUID tidak berjalan dengan lingkungan root (
$HOME
, konfigurasi untuk shell, apa pun), itu berjalan dengan kekuatan root (yaitu, ia dapat menghapus file apa pun, mengubah izin apa pun, dll).sumber