私はユーザーをシステムから完全に分離し、ユーザーだけがシステムにログインして開いているプログラムと対話できるようにする方法を探しています。
これを達成する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_profile
nor .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
リンク: