실행 파일을 각 노드에 복사하고 실행한 다음 출력을 다시 서버 노드에 복사하여 클러스터에서 프로그램을 수동으로 실행합니다. 갑자기 이 과정에 관련된 모든 파일들이 일제히 삭제되고 있다는 걸 알아차렸고, 어디서 이런 일을 하고 있는지, 적어도 어떤 스크립트가 이를 삭제하고 있는지 알 수 없었다.
이것은 SO의 질문과 관련이 있습니다.https://stackoverflow.com/questions/23608486/how-to-find-which-process-removing-a-directory-in-linux
하지만 여기서 문제를 재현할 수 있다는 점에 유의하시기 바랍니다. 관리자 권한이 없어 사용할 수 없지만 auditd
원할 경우 이 과정을 반복할 수 있습니다. 재미있는 점은 파일에 대한 권한을 변경하려고 했는데 계속 사라진다는 것입니다.
나는 마법 같은 것을 기대하지 않습니다
$ please tell me who did
하지만 이 문제를 해결하기 위한 현명한 아이디어를 듣게 되어 기쁩니다.
그런데 관리자에게 파일을 삭제할 수 있는 프로세스가 있는지 물었더니 불가능하다고 했습니다.
참고: 원래 SO에 게시했지만 주제에서 벗어난 것으로 표시되었습니다.
편집: 좋아, Mark Plotnick의 제안을 사용하여 본 것에서 strace
파일의 컴파일 위치가 first 이라는 것을 알 수 있습니다 gcc
. .c
그러면 실행파일이 있습니다 lstat
. 그런 다음 연결 해제 PID가 있는 호출에 나타납니다 execve
./usr/bin/ld
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
그런 다음:
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