Saya memiliki server SSH kecil, dan saya ingin menulis skrip untuk menjalankan setiap kali seseorang masuk melalui SSH.
Sekarang, bagaimana saya akan melakukannya?
Saya ingin skrip dijalankan setiap kali SIAPA SAJA masuk, dan saya harus memiliki akses ke setidaknya nama pengguna orang yang masuk, dan alamat IP dari siapa orang tersebut masuk.
Saya berpikir untuk menggunakan /etc/bash.bashrc
, tetapi apakah itu solusi yang baik? Misalnya, apakah ada cara pengguna dapat menonaktifkan penggunaannya, dan dengan demikian menonaktifkan skrip saya? Jika ya, apa pilihan saya yang lain?
Terima kasih.
Jawaban:
Mekanisme untuk menggunakan tergantung pada tujuan Anda.
Jika Anda ingin memberikan sesuatu yang nyaman atau ramah untuk pengguna Anda, maka Anda
/etc/profile
cukup masuk akal jika semua pengguna Anda menggunakan shell yang sama. Jika Anda ingin agar perintah hanya dieksekusi saat masuk melaluissh
, tempatkan perintah/etc/ssh/sshrc
. (Jika Anda tidak keberatan pengguna menimpa perintah dengan~/.ssh/rc
file mereka sendiri .)Jika Anda ingin memaksa pengguna untuk menjalankan satu program, dan hanya satu program , maka
ForceCommand
opsi seperti yang dijelaskan oleh DigitalRoss adalah pendekatan yang baik. (Saya pribadi lebih lanjut akan membatasi pengguna dengan kontrol akses mandatory sistem seperti AppArmor , SELinux , Tomoyo , atau SMACK , untuk memastikan program tidak dapat memungkinkan pengguna untuk melarikan diri. Saya telah bekerja di AppArmor selama bertahun-tahun sepuluh, jadi itulah alat saya akan memilih pertama, tetapi yang lain adalah alat yang baik ditulis oleh programmer yang sangat baik.)Jika Anda hanya ingin satu program dijalankan dan tidak mengganggu pengguna dengan cara apa pun , maka pendekatan terbaik adalah dengan menggunakan
pam_exec(8)
modul, yang tidak dapat di-bypass, berfungsi terlepas dari shell, dan memberikan kemampuan yang mudah untuk dijalankan sebagai pengguna atau sebagai pengguna akun program yang melakukan otorisasi. Halaman manual memberikan contoh berikut:Ini bisa diperpanjang untuk berjalan pada
auth
,account
,password
, dansession
tindakan; mungkinsession
akan lebih baik untuk dieksekusi saat login. Cukup tambahkan baris seperti:ke
/etc/pam.d/sshd
file kontrol Anda .sumber
pam_exec
modul persis apa yang saya cari. Terima kasih!Versi OpenSSH yang agak baru memiliki fitur server yang disebut ForceCommand yang memberikan kontrol pada skrip alih-alih operasi (scp, ssh, ...) yang dimaksudkan pengguna. Script dilewatkan dengan perintah asli, jadi Anda mungkin dapat berantai setelah melakukan apa pun yang perlu Anda lakukan.
Dari sshd_config (5):
Saya menggunakan ini sekali untuk mengesampingkan scp dan memberikan unggahan permata yang aman tanpa memberi setiap pengguna wewenang untuk mengunggah akses interaktif permata yang tidak mereka butuhkan atau inginkan.
sumber
Salah satu caranya adalah dengan menggunakan syslog-ng sebagai daemon syslog dan mengkonfigurasinya untuk menjalankan latar belakang skrip setiap kali entri log tertentu (seperti login ssh yang berhasil) cocok.
sumber
Lihat ini:
Saya tidak percaya ada cara untuk menonaktifkan ini agar tidak berjalan. Adakah yang bisa memverifikasi ini?
sumber
/etc/profile
atau~/.profile
) tergantung pada shell pengguna, hanya sedikit kurang daribashrc
. Jika pengguna Anda menggunakan bash atau sejenisnya, ini tidak masalah.