Lingkungannya adalah Ubuntu Server 12.04
Saya ingin membuat pengguna di server yang hanya dapat ssh menjadi shell yang menjalankan tail -f pada file log dan menutup sesi setelah program berakhir (ctrl + c).
Apakah ada cara untuk mencapai ini?
Untuk menjadi bertele-tele, itu tidak akan menjadi ctrl + c, tetapi SIGHUP
(lebih dekat ke ctrl + d) yang membunuh aplikasi.
Pada dasarnya Anda bisa memasukkan apa pun yang Anda inginkan ke dalam shell pengguna /etc/passwd
. Cukup ganti default pada baris passwd pengguna (mungkin /bin/bash
) dengan program lain. Program itu bisa berupa skrip, seperti /usr/bin/tail_log_file
, dengan konten ini, dimiliki oleh root: root, dengan umode 0755:
#!/bin/rbash
tail -f /path/to/logfile
Anda dapat menggunakan beberapa juru bahasa selain rbash, tetapi disarankan untuk menggunakan shell yang dibatasi dalam kasus-kasus seperti itu.
Untuk menjadi sangat luar biasa tentang hal itu, Anda harus menambahkan jalur skrip untuk /etc/shells
, tetapi saya biasanya tetap berhasil.
Perlu diingat juga bahwa pengguna berpotensi menempatkan skrip di latar belakang, atau menggunakan beberapa opsi ( ssh username@host bash
) dan masih mendapatkan shell. Jika Anda ingin membatasi pengguna dengan cara seperti itu, izin sistem file yang baik adalah satu-satunya solusi nyata.
/etc/shells
adalah untuk memungkinkan pengguna yang memiliki sesuatu yang lain sebagai shell mereka untuk mengatur shell mereka untuk ini; superuser (root
) selalu dapat mengubah shell siapa pun menjadi apa pun yang mereka inginkan./etc/shells
karena hal itu akan memungkinkan pengguna untuk mengubah cangkangnya (karena/usr/bin/tail_log_file
kemudian akan dianggap sebagai "cangkang tidak dibatasi")!ssh memaksa perintah muncul dalam pikiran jika Anda senang menggunakan otentikasi berbasis keypair.
sumber
Anda dapat mengonfigurasi ssh untuk menjalankan perintah pilihan Anda saat Anda masuk menggunakan otentikasi kunci publik. Untuk melakukan ini, buat sepasang kunci:
restricted-key.pub
berisi baris yang cocok untuk dimasukkan ke dalam file pengguna~/.ssh/authorized_keys
:tetapi Anda dapat menambahkan perintah untuk ini, dan ssh akan menjalankan perintah itu ketika masuk dengan kunci:
Kemudian pengguna dapat ssh menggunakan mesin
ssh -i restricted-key
.sumber