環境はUbuntuServer12.04です。
ログファイルでtail-fを実行し、プログラムが終了するとセッションを閉じる(ctrl + c)シェルにのみsshで接続できるユーザーをサーバー上に作成したいと思います。
これを達成する方法はありますか?
衒学的であるために、それはctrl + cではなく、アプリを強制終了するSIGHUP
(ctrl + dに近い)です。
基本的に、ユーザーのシェルの/etc/passwd
に必要なものを配置できます。ユーザーのpasswd行のデフォルト(おそらく/bin/bash
)を別のプログラムに置き換えるだけです。そのプログラムは、/usr/bin/tail_log_file
などのスクリプトであり、これらのコンテンツはroot:rootが所有し、umode0755は次のようになります。
#!/bin/rbash
tail -f /path/to/logfile
Rbash以外のインタプリタを使用することもできますが、そのような場合は制限付きシェルを使用することをお勧めします。
それについて非常に衒学的にするには、スクリプトのパスを/etc/shells
に追加する必要がありますが、通常はとにかく機能することがわかります。
また、ユーザーがスクリプトをバックグラウンドに配置したり、いくつかのオプション(ssh username@Host bash
)を使用しても、シェルを取得したりする可能性があることにも注意してください。このような方法でユーザーを制限したい場合は、適切なファイルシステムのアクセス許可が唯一の実際の解決策です。
キーペアベースの認証を使用することに満足している場合は、ssh強制コマンドが頭に浮かびます。
man authorized_keys
/command=
公開鍵認証を使用してログインするときに、選択したコマンドを実行するように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 -i restricted-key
を使用してマシンにSSH接続できます。