创建指向我没有权限的目录的符号链接

创建指向我没有权限的目录的符号链接

首先回顾一下历史:在我工作的地方,一些开发商/股东将他们的知识产权汇集在一起​​组建了公司。 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/是您可以控制的目录。替换字符串的长度(以字节数为单位)必须等于原始字符串的长度。如果替换字符串较短,您可以用空字节填充它:(sed -i "_/foo/bar/.xyz_/contr/xyz\x00\x00\x00_g" yourbinaryol.因空字节而被删除),但是此操作的成功可能取决于 的长度是否存在硬编码依赖性/foo/bar/.xyz。或者,您可以通过添加一些/字符 ( )来延长路径/tmp/////.xyz

如果替换字符串较长,则您可能无法使用这种就地修补方式。但是,如果需要,您可以将其与符号链接解决方案结合起来,其中/control/xyz是适当长度的路径,但它指向实际文件所在的较长路径。

如果您拥有专业知识并且需要更多地控制替换字符串的哪些实例,则可以使用十六进制编辑器而不是sed.

在做任何重要的事情之前我会测试这个改变。

相关内容