1つのことしかできないユーザーを作成したいと思います。sshを使用して、特定の1つのフォルダーにあるスクリプト(およびスクリプトへのコマンドライン引数)を指定します
(この質問では、 / local / remote_only_scripts / foo
)そして、そのスクリプトを実行して、その出力を返します。
ユーザーに実行させたくないことのいくつかの例を明確にするために:
- アカウントにローカルでログインします。
ログインアプリケーションは/bin / login
です。 。/ local / remote_only_scripts / foo
のスクリプトではありません フォルダなので、ユーザーが呼び出さないでください。 - アカウントにリモートログインします。繰り返しますが、ログイン(sshと呼ばれるものですか?)は、関連するフォルダー内のスクリプトではありません。
- ディレクトリの内容を一覧表示します。 lsは
/bin / ls
にあります 。適切なディレクトリにあるスクリプトではありません。 - そのディレクトリ内のファイルを編集します。 emacs、vi、gedit他のほとんどのエディターは、そのディレクトリのスクリプトではありません。
- そのディレクトリ内のファイルの内容を表示します。
- そのディレクトリで、実行する権限がないファイルを実行します。
これらは例であることに注意してください ユーザーに実行させたくないアクションは他にもたくさんあります。アクションを検討する際には、「これは / local / remote_only_scripts / foo
のスクリプトによって実行されていますか? ?」答えが「いいえ」の場合、ユーザーはそれを行うことができないはずです。答えが「はい」の場合、ユーザーはそれを実行できるはずです。
PS:「ユーザーを追加する」とはどういう意味かを明確にしましょう。 sshサブシステムにユーザーを追加するという意味ではありません。むしろ、コンピュータシステムにユーザーを追加することを意味します。たとえば、私はdebian安定版を実行しているシステムを持っており、そのアドレスwww.hg.bar.comで呼んでいます。ユーザーを追加したい(kuser、users-admin、useradd、または同様の方法で)彼をhg_guestと呼びます。 hg_guestは、ローカルにログインしたり、上記のリストにあることを実行したりすることはできません。 hg_guestが実行できるのは、スクリプトを「リモートで」実行することだけです。彼はssh経由でできるはずだと言いましたが、今考えてみると、sshの使用を許可すると、ローカルでログインできる可能性があるため、他のメカニズムが必要になる可能性があります。
承認された回答:
コマンドがあります authorized_keysファイルのオプション。このオプションは、あなたが望むことを正確に実行しているようです。
関連:Linux – ext4パーティションでの偶発的なフォーマットからのデータ回復?chrootや制限付きシェルではないことに注意してください。 ssh経由でこれらのコマンドのみを実行できます。あなたの例では、次のようになります:
ssh somehost /local/remote_only_scripts/foo
このauthorized_keysファイルの場合:
command="/local/remote_only_scripts/foo",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ...public key...
ユーザーがローカルでログインできないようにする方法はたくさんあります。次のいずれかを行うことができます:
- シェルを/bin / falseに設定するだけです。 (多分あなたは / bin / trueが必要になるでしょう sshには有効なログインが必要なため)
- パスワードをロックします。
passwd-l
を参照してください
編集 :制限オプションを追加し、ローカルアクセスを削除する方法を明確にしました。