GNU/Linux >> Belajar Linux >  >> Linux

Ssh – Menambahkan Pengguna yang Hanya Dapat Mengeksekusi Script dari Jarak Jauh?

Saya ingin membuat pengguna yang hanya dapat melakukan satu hal:via ssh tentukan skrip (dan argumen baris perintah ke skrip) yang berada di satu folder tertentu
(untuk keperluan pertanyaan ini, mari kita menyebutnya /local/remote_only_scripts/foo ) dan jalankan skrip tersebut dan kembalikan hasilnya.

Untuk memperjelas beberapa contoh hal yang saya tidak ingin pengguna dapat lakukan:

  • Login ke akun secara lokal.
    Aplikasi loginnya adalah /bin/login . Ini bukan skrip di /local/remote_only_scripts/foo folder, jadi tidak boleh dipanggil oleh pengguna.
  • Masuk ke akun dari jarak jauh. Sekali lagi login ( itu yang disebut ssh? ) bukan script di folder yang bersangkutan.
  • Mencantumkan isi direktori. ls ada di /bin/ls . Ini bukan skrip di direktori yang sesuai.
  • Mengedit file di direktori itu. emacs, vi, gedit kebanyakan editor lain bukanlah skrip dalam direktori tersebut.
  • Melihat konten file dalam direktori tersebut.
  • Mengeksekusi file di direktori itu yang dia tidak memiliki izin untuk mengeksekusinya.

Perhatikan bahwa ini adalah contoh ada banyak tindakan lain yang saya tidak ingin pengguna dapat melakukannya. Dalam mempertimbangkan suatu tindakan, tanyakan “apakah ini dilakukan oleh skrip di /local/remote_only_scripts/foo ?” jika jawabannya tidak, pengguna seharusnya tidak dapat melakukannya. Jika jawabannya ya maka pengguna harus dapat melakukannya.

PS:Izinkan saya menjelaskan apa yang saya maksud dengan "menambahkan pengguna". Saya tidak bermaksud menambahkan pengguna ke beberapa subsistem ssh. Sebaliknya maksud saya menambahkan pengguna ke sistem komputer. Jadi, misalnya, saya memiliki sistem yang menjalankan debian stable, sebut saja dengan alamatnya, www.hg.bar.com. Saya ingin menambahkan pengguna (melalui kuser, pengguna-admin atau useradd atau cara serupa) panggil dia hg_guest. hg_guest tidak dapat masuk secara lokal atau melakukan salah satu hal dalam daftar di atas. Yang dapat dilakukan hg_guest hanyalah menjalankan skrip "dari jarak jauh". Saya mengatakan bahwa dia seharusnya dapat melakukannya melalui ssh, tetapi memikirkannya sekarang, mungkin mengizinkan dia menggunakan ssh memungkinkan dia untuk login secara lokal, jadi beberapa mekanisme lain mungkin diperlukan.

Jawaban yang Diterima:

Ada perintah opsi dalam file otor_keys. Opsi ini tampaknya melakukan apa yang Anda inginkan.

Terkait:Linux – Pemulihan data dari format yang tidak disengaja pada partisi ext4?

Perhatikan bahwa ini bukan chroot atau shell terbatas. Ini memungkinkan untuk mengeksekusi hanya perintah-perintah itu melalui ssh. Dengan contoh Anda, itu akan menjadi :

ssh somehost /local/remote_only_scripts/foo

Untuk file otor_keys ini :

command="/local/remote_only_scripts/foo",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ...public key... 

Ada banyak cara jika Anda tidak ingin pengguna Anda dapat masuk secara lokal. Anda juga dapat :

  • cukup setel cangkangnya ke /bin/false (mungkin Anda perlu /bin/true karena ssh membutuhkan login yang valid)
  • kunci sandinya, lihat passwd -l

EDIT :menambahkan lebih banyak opsi pembatasan dan memperjelas cara Anda menghapus akses lokal.


Linux
  1. Jalankan Skrip Bash Saat Memasuki Direktori?

  2. Ssh – Membatasi Pengguna Ssh/scp/sftp ke Direktori?

  3. Terhubung ke database MySQL dari jarak jauh

  1. Cara Mengatur Kunci SSH di Debian

  2. Cara Menjalankan SSH dan SCP dalam Mode Batch (Hanya ketika login Tanpa Kata Sandi diaktifkan)

  3. linux mengeksekusi perintah dari jarak jauh

  1. Bisakah saya menonaktifkan login terakhir SSH dan MOTD berdasarkan per pengguna?

  2. Bagaimana cara membatasi pengguna SSH untuk hanya mengizinkan tunneling SSH?

  3. ssh tunneling hanya akses