Substituindo chamadas do Samba para desvincular e unlinkat

0

Minha tentativa é substituir as chamadas para desvincular / desvincular ao usar o Samba. Para esse efeito, escrevi uma biblioteca compartilhada. Eu então executei a linha:

export LD_PRELOAD=<my shared library>

e reiniciado o serviço smbd. Agora, se eu excluir um arquivo do diretório atual, posso ver que minha versão de unlink está sendo chamada, mas quando eu faço o mesmo via Samba de uma caixa diferente do Ubuntu, minhas substituições não são chamadas. Eu acho que tem a ver com o posicionamento de LD_PRELOAD. Coloquei em /etc/samba/smb.conf e /etc/init/smbd.conf, mas isso não funcionou e o único arquivo restante é /etc/init.d/smbd. No entanto, não sei onde colocar o LD_PRELOAD. Eu coloquei o LD_PRELOAD em alguns lugares, mas também não funcionou. Eu estou esperando que alguém me ajude. Agradecemos antecipadamente por qualquer ajuda.

Plataforma: Ubuntu 14.04

    
por Smithy 14.07.2016 / 10:01

1 resposta

0

(Eu sei que isso é 2 anos depois. Pode ainda ser útil para alguém.)

LD_PRELOAD é uma variável de ambiente, que precisa ser definida no ambiente do smbd.

Como o serviço não é chamado a partir do shell, você precisa trabalhar com o sistema de inicialização / serviço de sua distribuição.

Pesquisa rápida na web me diz que o Ubuntu 14.04 está usando upstart , então você provavelmente precisará colocar algo como:

env LD_PRELOAD=<my shared library>
export LD_PRELOAD

em /etc/init/smbd.conf .

Note que este é um palpite, então você pode precisar mudar uma coisa ou outra.

    
por domen 17.08.2016 / 00:43