Saya bereksperimen sedikit dan melihat sesuatu yang aneh:menyetel bit setuid pada salinan bash yang terletak di /usr/bin/bash-test
sepertinya 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 sebagai root
, menyarankan bahwa bash-test
tidak berjalan sebagai root. Namun, jika saya menyetel bit setuid pada whoami
, saya dilaporkan sebagai root di shell apa pun, seperti yang diharapkan.
Saya mencoba mengatur bit setuid pada /usr/bin/bash
juga dan mengamati perilaku yang sama.
Mengapa bash tidak berjalan sebagai root ketika saya mengatur bit setuid di atasnya? Mungkinkah selinux ada hubungannya dengan ini?
Jawaban yang Diterima:
Penjelasannya agak mengganggu:bash sendiri adalah alasannya. strace
adalah teman kita (harus SUID root sendiri agar ini berfungsi):
getuid() = 1000
getgid() = 1001
geteuid() = 0
getegid() = 1001
setuid(1000) = 0
setgid(1001) = 0
bash mendeteksi bahwa itu telah dimulai root SUID (UID!=EUID) dan menggunakan kekuatan root untuk membuang kekuatan ini, mengatur ulang EUID ke UID. Dan kemudian bahkan FSUID, hanya untuk memastikan…:
getuid() = 1000
setfsuid(1000) = 1000
getgid() = 1001
setfsgid(1001) = 1001
Pada akhirnya:tidak ada kesempatan. Anda harus memulai bash dengan root UID (yaitu sudo).
Edit 1
Halaman manual mengatakan ini:
Jika shell dimulai dengan id pengguna (grup) yang efektif tidak sama dengan id pengguna (grup) yang sebenarnya, dan opsi -p tidak diberikan, tidak ada file startup yang dibaca, fungsi shell tidak diwarisi dari lingkungan, SHELLOPTS Variabel , BASHOPTS, CDPATH, dan GLOBIGNORE, jika muncul di lingkungan, diabaikan, dan id pengguna efektif disetel ke id pengguna sebenarnya. Jika opsi -p diberikan saat pemanggilan, perilaku pengaktifan akan sama, tetapi ID pengguna yang efektif tidak disetel ulang.
Tapi ini tidak bekerja untuk saya. -p
bahkan tidak disebutkan di antara opsi startup. Saya juga mencoba --posix
; tidak berhasil juga.