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サブシステムにユーザーを追加するわけではありません。代わりに、コンピュータシステムにユーザーを追加することを意味します。たとえば、私はwww.hg.bar.comというアドレスで呼び出すdebian stableを実行するシステムを持っています。ユーザーを追加し(kuser、users-admin、useradd、または同様の方法で)、その人をhg_guestと呼びたいです。 hg_guestはローカルにログインしたり、上記のリストの操作を実行したりすることはできません。 hg_guestができることは、スクリプトを「リモートで」実行することだけです。私は彼がsshを介してこれを行うことができなければならないと言いましたが、今考えてみると、彼がsshを使用できるようにすればローカルにログインできるので、他のメカニズムが必要になるかもしれません。
ベストアンサー1
一つある注文するauthorized_keys ファイルのオプションです。このオプションは、あなたが探しているものと正確に一致するようです。
これは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/trueSSHには有効なログインが必要なため)
- パスワードをロックしてください。参考
passwd -l
編集する:さらに制限オプションを追加し、ローカルアクセスを削除する方法を明確にしました。