libsshを使用してリモート マシンに接続し、コマンドを実行しています。
接続は正常に機能しますが、問題は次のとおりです。離れたマシンでは、接続中に実行されている bash は rbash です。送信ps | grep ungreppable_phrase
して他のマシンで実行すると、出力は次のようになります。
root 25989 25987 0 07:47 ? 00:00:00 rbash -c ps -ef | grep ungreppable_phrase
(そのリストからgrepコマンドを削除しました)
したがって、明らかにrbash
、リモート シェルです。
現在、rbash の man ページには、rbash の制限が適用される前に起動ファイルが読み込まれることが示されています。したがって、起動ファイル (/etc/profile、~/.bash_profile、~/.bash_user または ~/.profile) のいずれかに の定義が含まれているPATH
場合、コマンドを実行するとその定義が表示されるはずです。特に、 のディレクトリの 1 つにいくつかの実行可能ファイルがあれば、PATH
それを実行できるはずです。
私の .profile ファイルからの行は次のとおりです。
PATH=/home/my_user/bin
どうにか、そこに入ることができましls
た。実行可能ファイルが含まれています。
私の ~/.profile は最後にソースされるファイルであり、別のファイルのソースは含まれていません。の再定義もありませんPATH
。
しかし、「コマンドが見つかりません」というエラーが表示されます (または、echo $? は 127 を返します)。
リモートでログインしたときに .profile ファイルが提供されていないように見える理由を誰か教えてもらえますか? libssh のコードが原因ですか? 上記のgrepでは表示できないrbashに渡される特別なオプションがあるかどうかを調べるために、それを調べようとしています..
(rbash モードなので、単純に PATH の変更を要求することはできません)
どうもありがとう、パスカル