SSHを介してbashシェルにシステムにログインできる一時ユーザーがいるとします。また、さまざまなコマンドや他のユーザー入力を受け入れ、それに基づいて操作を実行するプロセスとして機能するPHP(ここではその言語は関係ありません)スクリプト(本質的に「シェルに似た」スクリプト)があります。
今やりたいことは、上記のPHPスクリプトでユーザーをロックすることです。ユーザーがログインしたらすぐに実行します(この部分は.bashrcを介して簡単です)。また、スクリプトの実行が終了すると、ユーザーは自動的にsshセッションからbashを「追い出す」ため、bashがこれ以上操作を実行できないようにする必要があります。 bash自体を介して何かを行うことができ、PHPスクリプトによって提供される機能に制限されます。
可能ですか?それでは、どうすればいいですか?
修正する:これまでの回答によると、私のスクリプトとSSHを介してログインしたユーザー間でbashを使用する必要はありません。最初はこれが必要なようだった。 SSHログイン後にユーザーが自分のスクリプトに直接移動するように強制する方法は歓迎された答えです。
答え1
.ssh/authorized_keys
更新された情報に基づいて秘密鍵と公開鍵のペアを作成し、それをファイル内に設定してscript.phpファイルのみを実行する必要があります。.bashrc
特に初期化環境に必要なので、保護のためにこれに依存してはいけません。
答え2
関連ユーザーのシェルをその行の最後のフィールドで必要に応じて変更できます/etc/passwd
。たとえば、次のようになります。
specialuser:x:12345:123::/home/specialuser:/usr/bin/restricted_script.php
適切なハッシュ爆発を含めると(#!/usr/bin/php
スクリプトの最初の行に)、すぐに機能します。セキュリティ上の理由から、ユーザーが書き込むことができるディレクトリにスクリプトを配置しないことをお勧めします。
答え3
最も簡単な方法は、このようなものを.bashrcに入れることです。
php script.php
exit
script.phpを実行した後、シェルはセッションを終了します。
しかし、何をすべきか、必要なセキュリティレベルを正確に話すことは困難です。