我的尝试是在使用Samba时覆盖对unlink/unlink的调用。为此,我编写了一个共享库。然后,我执行了这一行:
export LD_PRELOAD=<my shared library>重新启动smbd服务。现在,如果我从当前目录中删除一个文件,我可以看到我的unlink版本正在被调用,但是当我从另一个Ubuntu框通过Samba执行同样的操作时,我的重写就不会被调用了。我认为这与LD_PRELOAD的位置有关。我将其放置在/etc/samba/smb.conf和/etc/init/smbd.conf中,但没有工作,剩下的唯一文件是/etc/init.d/smbd。然而,我不知道把LD_PRELOAD放在哪里。我确实把LD_PRELOAD放在了几个地方,但这也不起作用。我希望有人能帮我。提前感谢您的帮助。
平台: Ubuntu 14.04
发布于 2016-08-16 22:43:49
我知道这是两年后的事了。它可能仍然对其他人有用。)
LD_PRELOAD是一个环境变量,需要在smbd的环境中设置。
由于服务不是从shell调用的,所以您必须使用发行版的启动/服务系统。
快速网络搜索告诉我Ubuntu14.04正在使用upstart,所以您可能需要放置如下内容:
env LD_PRELOAD=<my shared library>
export LD_PRELOAD转化为/etc/init/smbd.conf。
请注意,这是一个合理的猜测,因此您可能需要更改一两件事情。
https://askubuntu.com/questions/798459
复制相似问题