私は友人に私のマシンで、SCP専用のローカルアカウントを許可しています。/bin/trueSCPを許可したまま、アカウントのシェルをとして指定したり、他の方法でアカウントを制限したりできますか?
私は友人に私のマシンで、SCP専用のローカルアカウントを許可しています。/bin/trueSCPを許可したまま、アカウントのシェルをとして指定したり、他の方法でアカウントを制限したりできますか?
回答:
そのユーザーのシェルをrsshまたはscponlyに設定できます。これらは、その目的のために正確に設計されています。
rsshは、OpenSSHで使用するための制限付きシェルであり、scpまたはsftpのみを許可します。また、rdist、rsync、cvsのサポートも含まれています。
scponlyは、リモート実行権限を提供せずにローカルファイルの読み取りと書き込みの両方にリモートユーザーにアクセスを提供したいシステム管理者向けの(一種の)代替シェルです。
scpを実行すると、OpenSSHデーモンscpは-fオプションを使用してプロセスを起動します。sftpを実行すると、OpenSSHデーモンがsftp-serverプロセスを起動します。いずれの場合も、サブプロセスはユーザーのシェルを介して実行されるため、シェルは少なくともこれらのコマンドをBourneのような構文でサポートする必要があります。cshと同様に、Bourneスタイルのシェルはすべてsshd使用できます(その引用規則は、使用目的に対して十分に互換性があると思います)。Rsshおよびscponlyは、これらのコマンドのみを許可します。/bin/trueこれらのコマンドも実行しません。
/bin/falseか、他のプログラムが何もしない場合、scpもsftpも機能しません。両方のコマンドについて、SSHデーモンは専用サーバープロセス(scp -fまたはsftp-server)を実行するシェルコマンドを起動します。Bourneスタイルのシェル、または少なくとも十分に近い近似(rsshこれらの少数のコマンドのみを許可するなど)が必要です。
いいえ、そうではありません。Gillesが指摘したように、rsshはscponlyと同様に、この目的のために非常にうまく機能します。この関連する質問の議論も参照してください。
/bin/falseように、それらはまだシェルであり、chmod 644 kshも機能しません。