GNU/Linux >> Belajar Linux >  >> Linux

Bit Setuid Tampaknya Tidak Memiliki Efek Pada Bash?

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.


Linux
  1. Linux – Suid Tidak Berpengaruh Pada Direktori Dengan Linux?

  2. Linux – Ionice Tidak Memiliki Efek Pada Penulisan yang Tidak Disinkronkan (yaitu Penulisan Normal)?

  3. Menggunakan Bit Setuid dengan Benar?

  1. Linux Setuid Tidak Berfungsi?

  2. Linux – Mengapa Setuid Tidak Bekerja??

  3. Minta skrip bash menjawab permintaan interaktif

  1. Tidak dapat menjalankan skrip bash bahkan sebagai root?

  2. Jalankan perintah bash pada pipa jenkins

  3. Bagaimana cara menginstal VIM di Linux ketika saya tidak memiliki izin root?