私は1つのことしかできないユーザーを作成したいと思います:ssh経由で特定のフォルダにあるスクリプト(およびスクリプトへのコマンドライン引数)を指定し(この質問の目的のためにそれを呼び出しましょう/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の使用を許可するとローカルでログインできるようになるので、他のメカニズムが必要になるかもしれない。