Como descobrir qual processo está excluindo um arquivo sem permissões de root?

2

Estou executando manualmente um programa em um cluster, copiando o arquivo executável para cada nó, executando-o e copiando de volta a saída para o nó do servidor. De repente, notei que um arquivo que faz parte de todo esse processo está sendo excluído de forma consistente e não consigo descobrir onde estou fazendo isso ou pelo menos qual script está excluindo-o.

Isso está relacionado à pergunta no SO: link

mas observe que aqui posso replicar o problema. Não tenho direitos de administrador, portanto não posso usar auditd , mas posso repetir o processo da maneira que desejar. Curiosamente, tentei alterar as permissões do arquivo e ele continua desaparecendo.

Eu não estou esperando nada mágico como

$ please tell me who did

mas estou feliz em ouvir idéias inteligentes sobre como tentar resolver isso.

btw, perguntei ao administrador se algum processo poderia estar excluindo o arquivo e ele disse que isso não é possível.

OBSERVAÇÃO: Originalmente postei isso no SO, mas fui marcado como offtopic

EDIT: Ok, pelo que eu posso ver usando a sugestão de Mark Plotnick strace , vejo que primeiro eu há uma chamada para gcc onde o arquivo .c é compilado. Em seguida, há um lstat no executável. E então aparece em uma chamada de execve para /usr/bin/ld que tem o PID do unlink:

5980 execve("/usr/bin/ld", ["/usr/bin/ld", "-plugin", "/cm/local/apps/gcc/6.3.0/libexec"..., "-plugin-opt=/cm/local/apps/gcc/6"..., "-plug       in-opt=-fresolution=/tmp/cc"..., "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc_"..., "-plugin-opt=-pass-through=-lc",        "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc_"..., "--eh-frame-hdr", "-m", "elf_x86_64", "-dynamic-linker", "/lib64       /ld-linux-x86-64.so.2", "-o", "MY/EXECUTABLE/BEING/DELETED", "/lib/../lib64/crt1.o", "/lib/../lib64/crti.o", "/cm/local/apps/gcc/6.3.0/lib/g       cc"..., "-L/cm/shared/apps/slurm/17.02.2/"..., "-L/cm/local/apps/gcc/6.3.0/lib/g"..., "-L/cm/local/apps/gcc/6.3.0/lib/g"..., "-L/lib/../lib       64", "-L/usr/lib/../lib64", "-L/cm/shared/apps/slurm/17.02.2/"..., "-L/cm/shared/apps/slurm/17.02.2/"..., "-L/cm/local/apps/gcc/6.3.0/lib/g       "..., "/tmp/ccdL3Sax.o", "-lm", "-lgcc", "--as-needed", ...], [/* 39 vars */]) = 0

e depois:

5980  stat("MY/EXECUTABLE/BEING/DELETED", {st_mode=S_IFREG|0755, st_size=17392, ...}) = 0
5980  lstat("MY/EXECUTABLE/BEING/DELETED", {st_mode=S_IFREG|0755, st_size=17392, ...}) = 0
5980  unlink("MY/EXECUTABLE/BEING/DELETED") = 0
5980  open("MY/EXECUTABLE/BEING/DELETED", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3
    
por myradio 07.05.2018 / 13:14

0 respostas