ユーザーがシステムと対話するのを防ぎます。

ユーザーがシステムと対話するのを防ぎます。

私はユーザーをシステムから完全に分離し、ユーザーだけがシステムにログインして開いているプログラムと対話できるようにする方法を探しています。

これを達成する1つの方法は、個々のフォルダおよび/またはファイルのすべての権限を削除することです。

私の目標は、ユーザーが自分のシステムにログインし、ユーザーが起動および対話できるJava実行可能ファイルにのみアクセスできるようにすることです。

もっと良い方法がありますか?

ありがとう

答え1

/bin/rbashこれらのユーザーのデフォルトシェルを--restricted bash()に設定できますbash -r。望むよりman rbash。これはコマンドで行うことができますchsh -s /bin/rbash {USER}

目的のコマンド以外のコマンドを実行しないようにするには、PATH変数環境を実行したい実行可能ファイルを含むフォルダにのみ設定してください~/.bash_profile

export PATH="$HOME/bin"

編集する:

この時点で、攻撃者がrbashに侵入することは依然として可能です。効果的にsshリモートコマンドを実行できます。ssh ... cp /bin/bash bin実行できるコマンドセットにbashを追加することで、同様の操作を実行できます。問題は、bash(またはrbash)がsshで直接実行されたときに.bash_profilenor .profile、を読み取れないようです/etc/profile

リンク(2)はこの問題に対する解決策を提案します。man sshd_configで設定できるすべてのオプションについて説明します/etc/ssh/sshd_config。明らかに、スクリプト~/.ssh/rc(そして/etc/sshrcリンク(4)を参照)は必要なとき、つまりユーザーsshがどのコマンドに入るたびに実行されます。しかし、私はそれをテストしていません。

この時点で、.rbashを使用してrbashを中断することはまだできませんscp

さらに、次の/etc/ssh/sshd_config行にコメントを付けて追加する必要があります。

Subsystem sftp       /usr/lib/openssh/sftp-server

リンク:

関連情報