回答:
簡潔に言うと、それはctrl + cではなく、SIGHUP
(ctrl + dに近い)アプリを強制終了します。
基本的に、ユーザーのシェルに必要なものは何でも置くことができます/etc/passwd
。ユーザーのpasswd行のデフォルト(おそらく/bin/bash
)を別のプログラムに置き換えるだけです。そのプログラムは、次のようなスクリプトで、/usr/bin/tail_log_file
root:rootが所有し、umode 0755で所有されています。
#!/bin/rbash
tail -f /path/to/logfile
rbash以外のインタープリターを使用できますが、そのような場合は制限付きシェルを使用することをお勧めします。
それについて非常に知識を深めるには、スクリプトのパスをに追加する必要/etc/shells
がありますが、通常はとにかく動作します。
また、ユーザーがスクリプトをバックグラウンドで実行したり、オプション(ssh username@host bash
)を使用したりしてシェルを取得する可能性があることにも注意してください。このような方法でユーザーを制限したい場合は、適切なファイルシステムのアクセス許可が唯一の実際の解決策です。
/etc/shells
は、シェルとして別のものを持っているユーザーがシェルをこれに設定できるようにすることです。スーパーユーザー(root
)はいつでも誰のシェルも好きなように変更できます。
/etc/shells
するには、ユーザーが自分のシェルを変更できるようにスクリプトを追加するのは、実際にはセキュリティリークです(/usr/bin/tail_log_file
その場合、「無制限のシェル」と見なされるためです)。
公開鍵認証を使用してログインするときに、選択したコマンドを実行するように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
。