カスタムopensshシェル


8

環境はUbuntu Server 12.04です

ログファイルでtail -fを実行し、プログラムが終了するとセッションを閉じるシェルにsshでしかアクセスできないサーバー上にユーザーを作成します(Ctrl + Cキー)。

これを達成する方法はありますか?

回答:


8

簡潔に言うと、それはctrl + cではなく、SIGHUP(ctrl + dに近い)アプリを強制終了します。

基本的に、ユーザーのシェルに必要なものは何でも置くことができます/etc/passwd。ユーザーのpasswd行のデフォルト(おそらく/bin/bash)を別のプログラムに置き換えるだけです。そのプログラムは、次のようなスクリプトで、/usr/bin/tail_log_fileroot:rootが所有し、umode 0755で所有されています。

#!/bin/rbash
tail -f /path/to/logfile

rbash以外のインタープリターを使用できますが、そのような場合は制限付きシェルを使用することをお勧めします。

それについて非常に知識を深めるには、スクリプトのパスをに追加する必要/etc/shellsがありますが、通常はとにかく動作します。

また、ユーザーがスクリプトをバックグラウンドで実行したり、オプション(ssh username@host bash)を使用したりしてシェルを取得する可能性があることにも注意してください。このような方法でユーザーを制限したい場合は、適切なファイルシステムのアクセス許可が唯一の実際の解決策です。


迅速かつ正確な返信に感謝します。
Ablue

2
何かを追加したい唯一の理由/etc/shellsは、シェルとして別のものを持っているユーザーがシェルをこれに設定できるようにすることです。スーパーユーザー(root)はいつでも誰のシェルも好きなように変更できます。
ジョナサンカレン、

1
@JonathanCallenの発言を追加/etc/shellsするには、ユーザーが自分のシェルを変更できるようにスクリプトを追加するのは、実際にはセキュリティリークです(/usr/bin/tail_log_fileその場合、「無制限のシェル」と見なされるためです)。
Joachim Sauer、

削除します。
Ablue

1
これは複雑すぎます。強制コマンド(@tinkによる回答を参照)がその方法です。
モニカの復活-M.シュレーダー2012年

10

sshの強制コマンドは、キーペアベースの認証を使用して問題ないかどうかを思い出させます。

man authorized_keys
/command=

2

公開鍵認証を使用してログインするときに、選択したコマンドを実行するようにsshを構成できます。これを行うには、キーのペアを生成します。

djs@sardinia:~$ ssh-keygen -f restricted-key 
Generating public/private rsa key pair. 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in restricted-key. 
Your public key has been saved in restricted-key.pub. 
The key fingerprint is: b1:8f:26:47:c2:c5:f2:8d:ed:a0:c4:bd:9a:30:9d:08 djs@sardinia 
[...]

restricted-key.pubユーザーの~/.ssh/authorized_keysファイルを置くのに適した行が含まれています:

ssh-rsa AAAA...UDz47Nl djs@sardinia

しかし、これにコマンドを追加することができ、sshはキーでログインしたときにそのコマンドを実行します。

command="tail -f /my/interesting/file" ssh-rsa AAAA...UDz47Nl djs@sardinia

その後、ユーザーはを使用してマシンにsshできますssh -i restricted-key

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.