Saya perlu mengizinkan pengguna martin
untuk beralih ke pengguna martin-test
tanpa kata sandi
su - martin-test
Saya pikir ini dapat dikonfigurasi dalam /etc/pam.d/su
. Sudah ada beberapa baris dalam file itu yang bisa dibatalkan komentarnya. Namun, saya tidak suka ide menambahkan pengguna martin
ke grup wheel
. Saya tidak ingin memberikan martin
lebih banyak hak istimewa selain untuk dapat beralih ke martin-test
. Saya juga tidak ingin menggunakan sudo
.
Apa yang akan menjadi cara terbaik untuk melakukannya, sambil menjaga hak pengguna martin
minimal?
users
password
authentication
pam
Martin Vegter
sumber
sumber
sudo
missudo -u martin-test -i
. Apakah ada alasan yang Anda tanyakan secara spesifiksu
?sudo
hanya karena ini (saya biasanya tidak menggunakansudo
dan saya tidak terlalu suka). Dan saya pikir menggunakanpam
lebih bersih dan lebih transparan untuk melakukannya.sudo
dimaksudkan untuk itu. Selain tidak biasa menggunakannya, apa keberatannya?pam
, saya lebih suka itusudo
. Jikasudo
satu-satunya kemungkinan, maka itu juga baik-baik saja. Keberatan sayasudo
sebagian besar ideologis: Saya tidak suka ide pengguna melakukan administrasi dengansudo foo
. Ketika saya perlu melakukan administrasi, saya masuk sebagai root. Kalau tidak saya login sebagai pengguna, dua peran yang berbeda ini tidak boleh dicampur. Saya juga sudahpam
menginstal infrastruktur. Saya tidak ingin menginstalsetuid
program lain yang mungkin dapat memperkenalkan bug keamanan.sudo foo
perintah tertentu. Sudo memilikisudo -s
yang akan meluncurkan shell. sudo adalah utilitas yang sangat umum yang berarti keamanannya telah diperiksa secara menyeluruh, jauh lebih dari beberapa tipu daya pam. Saya juga berpendapat bahwa mendapatkan root shell untuk tugas-tugas jauh lebih tidak aman daripada meluncurkan perintah tertentu. Saat Anda meluncurkan shell, Anda menjalankan semuanya sebagai root. Jika salah satu dari hal-hal itu (seperti sederhanals
) memiliki kerentanan keamanan, maka Anda baru saja membuka lubang keamanan.Jawaban:
Tambahkan baris berikut tepat di bawah
pam_rootok.so
garis di/etc/pam.d/su
:Baris-baris ini melakukan pemeriksaan menggunakan
pam_succeed_if.so
modul. Lihat juga sintaksis file konfigurasi Linux-PAM untuk mempelajari lebih lanjut tentangauth
baris.martin-test
. Jika ya, tidak ada yang terjadi (success=ignore
) dan kami melanjutkan di baris berikutnya untuk memeriksa pengguna saat ini . Jika tidak, baris berikutnya akan dilewati (default=1
) dan kami melanjutkan baris berikutnya dengan langkah otentikasi biasa.martin
. Jika ya, sistem menganggap proses otentikasi sebagai berhasil dan mengembalikan (sufficient
). Jika tidak, tidak ada yang terjadi dan kami melanjutkan baris berikutnya dengan langkah otentikasi biasa.Anda juga dapat membatasi
su
ke grup, di sini grupallowedpeople
dapatsu
tanpa kata sandi:sumber
Jika Anda tidak ingin mengubah grup atau menggunakan
sudo
, gunakan modul pam yang dipanggilpam_exec
untuk menjalankan skrip eksternal dalam tahap pam.Tambahkan baris di Anda
/etc/pam.d/su
setelahpam_rootok.so
baris:/path/to/script
memiliki izin 755 (rwxr-xr-x) dan konten berikut:Jadi skrip ini ada dengan sukses jika
su
:martin
danmartin-test
.Lihat:
sumber
/etc/pam.d/su
untuk menggunakanpam_access
untuk situasi saya?pam_access
tidak bisa melakukan ini. Saatsu
akan melalui tumpukan pam, ia melakukannya sebagai pengguna yang Anda ubah, bukan pengguna yang Anda ubah. Jadi, jika Anda menambahkan aturan seperti+ : martin : ALL
, itu akan memungkinkan siapa pun berubah kemartin
. Bahkan jika Anda mengubahmartin
kemartin-test
, masih akan membiarkan siapa pun melakukannya. Anda perlu menganalisis pengguna yang Anda gunakan, dan pengguna yang ingin Anda ubah. Sungguh, inilah tepatnyasudo
untuk ...Jika Anda tidak memiliki akses ke akun root, tetapi memiliki kata sandi pengguna yang ingin Anda gunakan untuk menjalankan perintah, Anda dapat melakukan hal berikut.
Cukup instal kunci publik Anda di otor_keys toto
sumber
Solusi sederhana saya adalah:
Jika Anda ingin menghindari sudo dengan cara apa pun, saya pikir harus dimungkinkan untuk menempatkan ini dalam skrip:
Namun, saya tidak tahu
chown root
danchmod +s ToTest.sh
sedikit, untuk membuat ini benar-benar berfungsi:Saya masih berjalan sebagai pengguna normal saya, seperti gema memberitahu saya. Dan itu masih membutuhkan kata sandi sudo. Jika itu berjalan sebagai root, orang bisa menghapusnya dengan
sudo
di baris terakhir ...sumber
bash
berada, mengapa Anda menganggap Anda tahu di manaenv
ada atau apakah itu ada?). Tetapi pada akhirnya, Anda tidak tahubash
akan seperti apa tepatnya ini. Itu bisa berasal dari direktori pengguna yang memohon dan telah dikompilasi satu menit lebih awal dari kode sumbernya. Anda lihat kemana saya pergi? Atau pengguna dapat menimpawhoami
...