権限のないディレクトリへのシンボリックリンクを作成します。

権限のないディレクトリへのシンボリックリンクを作成します。

まず、歴史を振り返ってみましょう。私が働くところでは、少数の開発者/株主が知的財産を集めて会社を設立します。 IPとソースコードは依然として独自のものです。

さらに、数年前、私たちは第三者の産業スパイ活動に関連していくつかの問題を経験しました。このすべての理由により、一部の開発者/会社の所有者は、盗まれてもバイナリを使用できないようにする非正統的な措置を講じました。

現在の問題:私たちは、締め切りに合わせるのが難しい数値計算を実行するためにスーパーコンピュータを借りています。問題は、実行可能ファイルがネットワークディレクトリ構造に深く埋め込まれているテキストファイルへの静的依存関係を持つことです。

この「依存関係」を使用せずに再コンパイルするとどうでしょうか?問題の開発者は現在旅行中であり、このコードを再コンパイルするための締め切り前に戻るとは予想されていないためです。

実装する:

./run.sh

エラー出力:

forrtl: No such file or directory
forrtl: severe (29): file not found, unit 1, file /foo/bar/.xyz
Image              PC                Routine            Line        Source             
number_crunch         000000000048B933  Unknown               Unknown  Unknown
number_crunch         0000000000499ADB  Unknown               Unknown  Unknown
number_crunch         0000000000445941  Unknown               Unknown  Unknown
number_crunch         0000000000403BFE  Unknown               Unknown  Unknown
libc.so.6             00002AAAAB6C10BD  Unknown               Unknown  Unknown
number_crunch         0000000000403B09  Unknown               Unknown  Unknown

run.shの内容:

#!/bin/bash
#SBATCH --nodes=10
#SBATCH --job-name=number_crunch
#SBATCH --cpus-per-task=8

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/share/intel/ics2013/composer_xe_2013_sp1.2.144/compiler/lib/intel64/
module load glibc

./number_crunch

私は必要です:バイナリをだまして確認する方法/foo/bar/.xyz構造、根力無し。

可能ですか?エイリアスではスラッシュは使用できaliasません。ln/

ベストアンサー1

バイナリをパッチするのはどうですか?strings yourbinary | grep -F /foo/bar/.xyz印刷する必要があります/foo/bar/.xyz/foo/bar/.xyz文字列が十分に一意の場合は、次のことができます。

sed -i "s_/foo/bar/\.xyz_/control/.xyz_g" yourbinary

その中には/control/あなたが制御できるディレクトリがあります。代替文字列の長さ(バイト)は元の文字列の長さと同じでなければなりません。代替文字列が短い場合は、NULLバイトで埋めることができます(、、、およびsed -i "_/foo/bar/.xyz_/contr/xyz\x00\x00\x00_g" yourbinaryoNULLlバイト.のために削除されます)。ただし、これが成功するかどうかは、長さにハードコードされた依存関係があるかどうかによって異なります/foo/bar/.xyz。または、/一部の文字()を追加してパスを増やすこともできます/tmp/////.xyz

代替文字列が長い場合、この内部パッチ方法を使用できない可能性があります。ただし、必要に応じて、パスは/control/xyz適切な長さですが、実際のファイルを含むより長いパスを指すシンボリックリンクソリューションと組み合わせることができます。

専門的な知識があり、置き換えられる文字列インスタンスをさらに制御する必要がある場合は、代わりに16進エディタを使用できますsed

重要な作業を実行する前に、この変更をテストします。

おすすめ記事