Как найти pid процесса, который удалил файл?

Да: Chromify-OSD.

Это можно установить из Chromify-OSD .

Чтобы установить его , просто зайдите в интернет-магазин и нажмите кнопку «Добавить в Chrome» - все остальное.

Чтобы использовать его, вам, вероятно, потребуется перезапустить Chrome, в этот момент он должен работать .

Все ошибки должны быть отправлены на страницу проекта launchpad.net - для получения дополнительной информации об ошибках в отчетах, посмотрите на этот вопрос: Как сообщить об ошибке?

13
задан 15 June 2011 в 13:55

30 ответов

Наконец, я нашел ответ здесь.

Демон Linux Audit сделает трюк.

sudo auditctl -w /path/to/somefile -p wra

, а затем

ausearch -f /path/to/somefile -i
12
ответ дан 25 May 2018 в 20:18

Наконец, я нашел ответ здесь.

Демон Linux Audit сделает трюк.

sudo auditctl -w /path/to/somefile -p wra

, а затем

ausearch -f /path/to/somefile -i
13
ответ дан 25 July 2018 в 21:43

Наконец, я нашел ответ здесь.

Демон Linux Audit сделает трюк.

sudo auditctl -w /path/to/somefile -p wra

, а затем

ausearch -f /path/to/somefile -i
13
ответ дан 31 July 2018 в 10:43

Наконец, я нашел ответ здесь.

Демон Linux Audit сделает трюк.

sudo auditctl -w /path/to/somefile -p wra

, а затем

ausearch -f /path/to/somefile -i
13
ответ дан 31 July 2018 в 11:48

Наконец, я нашел ответ здесь.

Демон Linux Audit сделает трюк.

sudo auditctl -w /path/to/somefile -p wra

, а затем

ausearch -f /path/to/somefile -i
13
ответ дан 2 August 2018 в 03:19

Наконец, я нашел ответ здесь.

Демон Linux Audit сделает трюк.

sudo auditctl -w /path/to/somefile -p wra

, а затем

ausearch -f /path/to/somefile -i
13
ответ дан 4 August 2018 в 19:16

Наконец, я нашел ответ здесь.

Демон Linux Audit сделает трюк.

sudo auditctl -w /path/to/somefile -p wra

, а затем

ausearch -f /path/to/somefile -i
13
ответ дан 6 August 2018 в 03:30

Наконец, я нашел ответ здесь .

Демон Linux Audit сделает трюк.

  sudo auditctl -w / path /  to / somefile -p wra  

, а затем

  ausearch -f / path / to / somefile -i  
13
ответ дан 7 August 2018 в 21:17

Наконец, я нашел ответ здесь .

Демон Linux Audit сделает трюк.

  sudo auditctl -w / path /  to / somefile -p wra  

, а затем

  ausearch -f / path / to / somefile -i  
13
ответ дан 10 August 2018 в 09:35

Наконец, я нашел ответ здесь .

Демон Linux Audit сделает трюк.

  sudo auditctl -w / path /  to / somefile -p wra  

, а затем

  ausearch -f / path / to / somefile -i  
13
ответ дан 13 August 2018 в 15:46

Вы можете узнать PID процесса, у которого есть файл, открытый с помощью lsof.

Как только файл закрыт и удален, вы не сможете получить эту информацию.

BTW. Имейте в виду, что удаление файла происходит в директории, в которой он находится, а не в самом файле.

1
ответ дан 25 May 2018 в 20:18
  • 1
    К сожалению, нет необходимости открывать файл для его удаления. По меньшей мере, например, "strace rm some-file" вывод не показывает, что команда rm сначала открывает файл, а затем удаляет его. Поэтому я думаю, что lsof не помогает. – Mohammad 15 June 2011 в 17:35
  • 2
    Прочтите последнее предложение моего ответа – vartec 15 June 2011 в 18:29

Позвольте мне предложить альтернативу sysdig, поскольку ответы выше стареют. Пусть отобразится pid и name процессов, которые удаляют файл /tmp/test. Сначала мы создаем файл с touch /tmp/test. Затем мы запускаем sysdig со следующим фильтром:

$ sudo sysdig -p'%proc.pid,%proc.name' '(evt.type=unlinkat and (evt.arg.name=test or evt.arg.name=/tmp/test)) or (evt.type=unlink and evt.arg.path=/tmp/test)'

unlinkat(2) требует фильтра or, если путь (например, evt.arg.name) может быть относительным. Для обработки как unlink (который вызывает unlink(2)), так и rm (который вызывает unlinkat(2) в своей версии GNU), фильтр должен соответствовать обоим системам.

sysdig должен работать, когда процесс удаляет файл. Затем, когда мы выполняем такие команды:

$ unlink /tmp/test
$ touch /tmp/test
$ rm /tmp/test
$ cd /tmp; touch test; rm test

Он выведет такой вывод:

11380,unlink
11407,rm
11662,rm

Пожалуйста, обратитесь к sysdig для объяснения фильтрации и вывода.

Поскольку фильтр довольно длинный, мне было удобно писать долото. Это сценарий lua, связанный с командой sysdig:

description = "displays processes that delete a file"
short_description = "spy file deletion"
category = "files"

args = 
{
    {
        name = "path", 
        description = "the path of the file to monitor", 
        argtype = "string"
    },
}

function on_set_arg(name, val)
    path = val
    return true
end

function on_init()
    local filename = path
    for i in string.gmatch(path, "[^/]+") do
        filename = i
    end
    chisel.set_event_formatter("%proc.pid\t%proc.name")
    chisel.set_filter(
        "(evt.type=unlinkat and (evt.arg.name=" .. path .. " or \
                             evt.arg.name=" .. filename .. ")) or \
     (evt.type=unlink and evt.arg.path=" .. path .. ")")
    return true
end

Не стесняйтесь комментировать и улучшать его. Вы можете поместить сценарий lua в файл spy_deletes.lua внутри каталога и выполнить sysdig в этом каталоге, чтобы сделать долото. При вводе sudo sysdig -cl вы увидите это как:

Category: files
---------------
spy_deletes         spy file deletion

Теперь вы можете называть его:

$ sudo sysdig -c spy_deletes /tmp/test

И в другом типе терминала:

$ touch test; unlink test
$ touch test; unlink /tmp/test
$ touch test; rm test
$ touch test; rm /tmp/test

Он выведет:

16025   unlink
16033   unlink
16041   rm
16049   rm

Фильтр unlinkat заслуживает того, чтобы быть более точным и соответствовать абсолютному пути. Для этого потребуется получить fd каталога, переданного в unlinkat(2).

1
ответ дан 25 May 2018 в 20:18
  • 1
    У меня нет вывода с вашей командой. – A.B. 7 August 2015 в 21:07
  • 2
    Я набрал rm /tmp/test в другом терминале. Я отредактировал свой ответ, чтобы сделать его более ясным. – Greg Leclercq 8 August 2015 в 23:34

Позвольте мне предложить альтернативу sysdig, поскольку ответы выше стареют. Пусть отобразится pid и name процессов, которые удаляют файл /tmp/test. Сначала мы создаем файл с touch /tmp/test. Затем мы запускаем sysdig со следующим фильтром:

$ sudo sysdig -p'%proc.pid,%proc.name' '(evt.type=unlinkat and (evt.arg.name=test or evt.arg.name=/tmp/test)) or (evt.type=unlink and evt.arg.path=/tmp/test)'

unlinkat(2) требует фильтра or, если путь (например, evt.arg.name) может быть относительным. Для обработки как unlink (который вызывает unlink(2)), так и rm (который вызывает unlinkat(2) в своей версии GNU), фильтр должен соответствовать обоим системам.

sysdig должен работать, когда процесс удаляет файл. Затем, когда мы выполняем такие команды:

$ unlink /tmp/test $ touch /tmp/test $ rm /tmp/test $ cd /tmp; touch test; rm test

Он выведет такой вывод:

11380,unlink 11407,rm 11662,rm

Пожалуйста, обратитесь к sysdig для объяснения фильтрации и вывода.

Поскольку фильтр довольно длинный, мне было удобно писать долото. Это сценарий lua, связанный с командой sysdig:

description = "displays processes that delete a file" short_description = "spy file deletion" category = "files" args = { { name = "path", description = "the path of the file to monitor", argtype = "string" }, } function on_set_arg(name, val) path = val return true end function on_init() local filename = path for i in string.gmatch(path, "[^/]+") do filename = i end chisel.set_event_formatter("%proc.pid\t%proc.name") chisel.set_filter( "(evt.type=unlinkat and (evt.arg.name=" .. path .. " or \ evt.arg.name=" .. filename .. ")) or \ (evt.type=unlink and evt.arg.path=" .. path .. ")") return true end

Не стесняйтесь комментировать и улучшать его. Вы можете поместить сценарий lua в файл spy_deletes.lua внутри каталога и выполнить sysdig в этом каталоге, чтобы сделать долото. При вводе sudo sysdig -cl вы увидите это как:

Category: files --------------- spy_deletes spy file deletion

Теперь вы можете называть его:

$ sudo sysdig -c spy_deletes /tmp/test

И в другом типе терминала:

$ touch test; unlink test $ touch test; unlink /tmp/test $ touch test; rm test $ touch test; rm /tmp/test

Он выведет:

16025 unlink 16033 unlink 16041 rm 16049 rm

Фильтр unlinkat заслуживает того, чтобы быть более точным и соответствовать абсолютному пути. Для этого потребуется получить fd каталога, переданного в unlinkat(2).

1
ответ дан 25 July 2018 в 21:43
  • 1
    У меня нет вывода с вашей командой. – A.B. 7 August 2015 в 21:07
  • 2
    Я набрал rm /tmp/test в другом терминале. Я отредактировал свой ответ, чтобы сделать его более ясным. – Greg Leclercq 8 August 2015 в 23:34

Вы можете узнать PID процесса, у которого есть файл, открытый с помощью lsof.

Как только файл закрыт и удален, вы не сможете получить эту информацию.

BTW. Имейте в виду, что удаление файла происходит в директории, в которой он находится, а не в самом файле.

1
ответ дан 25 July 2018 в 21:43
  • 1
    Прочтите последнее предложение моего ответа – vartec 15 June 2011 в 18:29

Позвольте мне предложить альтернативу с sysdig , поскольку ответы выше стареют. Пусть отображаются имена pid и процессов, удаляющих файл / tmp / test . Сначала мы создаем файл с помощью touch / tmp / test . Затем мы запускаем sysdig со следующим фильтром:

  $ sudo sysdig -p '% proc.pid,% proc.name' '(evt.type = unlinkat и  (evt.arg.name = test или evt.arg.name = / tmp / test)) или (evt.type = unlink и evt.arg.path = / tmp / test) ' 

unlinkat (2) требует фильтр или , если путь (например, evt.arg.name ) может относительный . Для обработки как unlink (который вызывает unlink (2) ) и rm (который вызывает unlinkat (2) в его версия GNU), фильтр должен соответствовать обоим компьютерам.

sysdig должен запускаться, когда процесс удаляет файл. Затем, когда мы выполняем такие команды:

  $ unlink / tmp / test $ touch / tmp / test $ rm / tmp / test $ cd / tmp;  сенсорный тест;  rm test  

Он отобразит такой вывод:

  11380, unlink 11407, rm 11662, rm  

Пожалуйста, обратитесь к руководству пользователя sysdig для объяснения фильтрации и вывода.

Поскольку фильтр довольно длинный, мне было удобно писать долото. Это сценарий lua, связанный с командой sysdig :

  description = "отображает процессы, которые удаляют файл" short_description = "удаление шпионского файла" category = "  файлы "args = {{name =" path ", description =" путь к файлу для мониторинга ", argtype =" string "},} function on_set_arg (name, val) path = val return true end function on_init () local  filename = путь для i в string.gmatch (путь, "[^ /] +") do filename = i end chisel.set_event_formatter ("% proc.pid \ t% proc.name") chisel.set_filter ("(evt.  type = unlinkat и (evt.arg.name = ".. path .." или \ evt.arg.name = ".. filename ..")) или \ (evt.type = unlink и evt.arg.path =  ".. path ..") ") return true end  

Не стесняйтесь комментировать и улучшать его. Вы можете поместить скрипт lua в файл spy_deletes.lua внутри каталога и выполнить sysdig в этом каталоге, чтобы сделать долото. При вводе sudo sysdig -cl вы увидите это как:

  Категория: файлы --------------- spy_deletes spy file  удаление  

Теперь вы можете называть это:

  $ sudo sysdig -c spy_deletes / tmp / test  

И в другом терминальном типе:

  $ touch test;  тест бесконтактного теста $ touch;  disable / tmp / test $ touch test;  тест rm test $ touch;  rm / tmp / test  

Он выведет:

  16025 unlink 16033 unlink 16041 rm 16049 rm  

фильтр uninkat заслуживает более точной и только соответствует абсолютному пути. Для этого потребуется получить fd каталога, переданного в unlinkat (2) .

1
ответ дан 31 July 2018 в 10:43

Вы можете узнать PID процесса, у которого есть файл, открытый с помощью lsof.

Как только файл закрыт и удален, вы не сможете получить эту информацию.

BTW. Имейте в виду, что удаление файла происходит в директории, в которой он находится, а не в самом файле.

1
ответ дан 31 July 2018 в 10:43
  • 1
    К сожалению, нет необходимости открывать файл для его удаления. По меньшей мере, например, "strace rm some-file" вывод не показывает, что команда rm сначала открывает файл, а затем удаляет его. Поэтому я думаю, что lsof не помогает. – Mohammad 15 June 2011 в 17:35
  • 2
    Прочтите последнее предложение моего ответа – vartec 15 June 2011 в 18:29

Позвольте мне предложить альтернативу sysdig, поскольку ответы выше стареют. Пусть отобразится pid и name процессов, которые удаляют файл /tmp/test. Сначала мы создаем файл с touch /tmp/test. Затем мы запускаем sysdig со следующим фильтром:

$ sudo sysdig -p'%proc.pid,%proc.name' '(evt.type=unlinkat and (evt.arg.name=test or evt.arg.name=/tmp/test)) or (evt.type=unlink and evt.arg.path=/tmp/test)'

unlinkat(2) требует фильтра or, если путь (например, evt.arg.name) может быть относительным. Для обработки как unlink (который вызывает unlink(2)), так и rm (который вызывает unlinkat(2) в своей версии GNU), фильтр должен соответствовать обоим системам.

sysdig должен работать, когда процесс удаляет файл. Затем, когда мы выполняем такие команды:

$ unlink /tmp/test $ touch /tmp/test $ rm /tmp/test $ cd /tmp; touch test; rm test

Он выведет такой вывод:

11380,unlink 11407,rm 11662,rm

Пожалуйста, обратитесь к sysdig для объяснения фильтрации и вывода.

Поскольку фильтр довольно длинный, мне было удобно писать долото. Это сценарий lua, связанный с командой sysdig:

description = "displays processes that delete a file" short_description = "spy file deletion" category = "files" args = { { name = "path", description = "the path of the file to monitor", argtype = "string" }, } function on_set_arg(name, val) path = val return true end function on_init() local filename = path for i in string.gmatch(path, "[^/]+") do filename = i end chisel.set_event_formatter("%proc.pid\t%proc.name") chisel.set_filter( "(evt.type=unlinkat and (evt.arg.name=" .. path .. " or \ evt.arg.name=" .. filename .. ")) or \ (evt.type=unlink and evt.arg.path=" .. path .. ")") return true end

Не стесняйтесь комментировать и улучшать его. Вы можете поместить сценарий lua в файл spy_deletes.lua внутри каталога и выполнить sysdig в этом каталоге, чтобы сделать долото. При вводе sudo sysdig -cl вы увидите это как:

Category: files --------------- spy_deletes spy file deletion

Теперь вы можете называть его:

$ sudo sysdig -c spy_deletes /tmp/test

И в другом типе терминала:

$ touch test; unlink test $ touch test; unlink /tmp/test $ touch test; rm test $ touch test; rm /tmp/test

Он выведет:

16025 unlink 16033 unlink 16041 rm 16049 rm

Фильтр unlinkat заслуживает того, чтобы быть более точным и соответствовать абсолютному пути. Для этого потребуется получить fd каталога, переданного в unlinkat(2).

1
ответ дан 31 July 2018 в 11:48
  • 1
    У меня нет вывода с вашей командой. – A.B. 7 August 2015 в 21:07
  • 2
    Я набрал rm /tmp/test в другом терминале. Я отредактировал свой ответ, чтобы сделать его более ясным. – Greg Leclercq 8 August 2015 в 23:34

Вы можете узнать PID процесса, у которого есть файл, открытый с помощью lsof.

Как только файл закрыт и удален, вы не сможете получить эту информацию.

BTW. Имейте в виду, что удаление файла происходит в директории, в которой он находится, а не в самом файле.

1
ответ дан 31 July 2018 в 11:48
  • 1
    К сожалению, нет необходимости открывать файл для его удаления. По меньшей мере, например, "strace rm some-file" вывод не показывает, что команда rm сначала открывает файл, а затем удаляет его. Поэтому я думаю, что lsof не помогает. – Mohammad 15 June 2011 в 17:35
  • 2
    Прочтите последнее предложение моего ответа – vartec 15 June 2011 в 18:29

Позвольте мне предложить альтернативу sysdig, поскольку ответы выше стареют. Пусть отобразится pid и name процессов, которые удаляют файл /tmp/test. Сначала мы создаем файл с touch /tmp/test. Затем мы запускаем sysdig со следующим фильтром:

$ sudo sysdig -p'%proc.pid,%proc.name' '(evt.type=unlinkat and (evt.arg.name=test or evt.arg.name=/tmp/test)) or (evt.type=unlink and evt.arg.path=/tmp/test)'

unlinkat(2) требует фильтра or, если путь (например, evt.arg.name) может быть относительным. Для обработки как unlink (который вызывает unlink(2)), так и rm (который вызывает unlinkat(2) в своей версии GNU), фильтр должен соответствовать обоим системам.

sysdig должен работать, когда процесс удаляет файл. Затем, когда мы выполняем такие команды:

$ unlink /tmp/test $ touch /tmp/test $ rm /tmp/test $ cd /tmp; touch test; rm test

Он выведет такой вывод:

11380,unlink 11407,rm 11662,rm

Пожалуйста, обратитесь к sysdig для объяснения фильтрации и вывода.

Поскольку фильтр довольно длинный, мне было удобно писать долото. Это сценарий lua, связанный с командой sysdig:

description = "displays processes that delete a file" short_description = "spy file deletion" category = "files" args = { { name = "path", description = "the path of the file to monitor", argtype = "string" }, } function on_set_arg(name, val) path = val return true end function on_init() local filename = path for i in string.gmatch(path, "[^/]+") do filename = i end chisel.set_event_formatter("%proc.pid\t%proc.name") chisel.set_filter( "(evt.type=unlinkat and (evt.arg.name=" .. path .. " or \ evt.arg.name=" .. filename .. ")) or \ (evt.type=unlink and evt.arg.path=" .. path .. ")") return true end

Не стесняйтесь комментировать и улучшать его. Вы можете поместить сценарий lua в файл spy_deletes.lua внутри каталога и выполнить sysdig в этом каталоге, чтобы сделать долото. При вводе sudo sysdig -cl вы увидите это как:

Category: files --------------- spy_deletes spy file deletion

Теперь вы можете называть его:

$ sudo sysdig -c spy_deletes /tmp/test

И в другом типе терминала:

$ touch test; unlink test $ touch test; unlink /tmp/test $ touch test; rm test $ touch test; rm /tmp/test

Он выведет:

16025 unlink 16033 unlink 16041 rm 16049 rm

Фильтр unlinkat заслуживает того, чтобы быть более точным и соответствовать абсолютному пути. Для этого потребуется получить fd каталога, переданного в unlinkat(2).

1
ответ дан 2 August 2018 в 03:19
  • 1
    Я набрал rm /tmp/test в другом терминале. Я отредактировал свой ответ, чтобы сделать его более ясным. – Greg Leclercq 8 August 2015 в 23:34

Вы можете узнать PID процесса, у которого есть файл, открытый с помощью lsof.

Как только файл закрыт и удален, вы не сможете получить эту информацию.

BTW. Имейте в виду, что удаление файла происходит в директории, в которой он находится, а не в самом файле.

1
ответ дан 2 August 2018 в 03:19
  • 1
    К сожалению, нет необходимости открывать файл для его удаления. По меньшей мере, например, "strace rm some-file" вывод не показывает, что команда rm сначала открывает файл, а затем удаляет его. Поэтому я думаю, что lsof не помогает. – Mohammad 15 June 2011 в 17:35
  • 2
    Прочтите последнее предложение моего ответа – vartec 15 June 2011 в 18:29

Позвольте мне предложить альтернативу с sysdig , поскольку ответы выше стареют. Пусть отображаются имена pid и процессов, удаляющих файл / tmp / test . Сначала мы создаем файл с помощью touch / tmp / test . Затем мы запускаем sysdig со следующим фильтром:

  $ sudo sysdig -p '% proc.pid,% proc.name' '(evt.type = unlinkat и  (evt.arg.name = test или evt.arg.name = / tmp / test)) или (evt.type = unlink и evt.arg.path = / tmp / test) ' 

unlinkat (2) требует фильтр или , если путь (например, evt.arg.name ) может относительный . Для обработки как unlink (который вызывает unlink (2) ) и rm (который вызывает unlinkat (2) в его версия GNU), фильтр должен соответствовать обоим компьютерам.

sysdig должен запускаться, когда процесс удаляет файл. Затем, когда мы выполняем такие команды:

  $ unlink / tmp / test $ touch / tmp / test $ rm / tmp / test $ cd / tmp;  сенсорный тест;  rm test  

Он отобразит такой вывод:

  11380, unlink 11407, rm 11662, rm  

Пожалуйста, обратитесь к руководству пользователя sysdig для объяснения фильтрации и вывода.

Поскольку фильтр довольно длинный, мне было удобно писать долото. Это сценарий lua, связанный с командой sysdig :

  description = "отображает процессы, которые удаляют файл" short_description = "удаление шпионского файла" category = "  файлы "args = {{name =" path ", description =" путь к файлу для мониторинга ", argtype =" string "},} function on_set_arg (name, val) path = val return true end function on_init () local  filename = путь для i в string.gmatch (путь, "[^ /] +") do filename = i end chisel.set_event_formatter ("% proc.pid \ t% proc.name") chisel.set_filter ("(evt.  type = unlinkat и (evt.arg.name = ".. path .." или \ evt.arg.name = ".. filename ..")) или \ (evt.type = unlink и evt.arg.path =  ".. path ..") ") return true end  

Не стесняйтесь комментировать и улучшать его. Вы можете поместить скрипт lua в файл spy_deletes.lua внутри каталога и выполнить sysdig в этом каталоге, чтобы сделать долото. При вводе sudo sysdig -cl вы увидите это как:

  Категория: файлы --------------- spy_deletes spy file  удаление  

Теперь вы можете называть это:

  $ sudo sysdig -c spy_deletes / tmp / test  

И в другом терминальном типе:

  $ touch test;  тест бесконтактного теста $ touch;  disable / tmp / test $ touch test;  тест rm test $ touch;  rm / tmp / test  

Он выведет:

  16025 unlink 16033 unlink 16041 rm 16049 rm  

фильтр uninkat заслуживает более точной и только соответствует абсолютному пути. Для этого потребуется получить fd каталога, переданного в unlinkat (2) .

1
ответ дан 4 August 2018 в 19:16

Вы можете узнать PID процесса, у которого есть файл, открытый с помощью lsof.

Как только файл закрыт и удален, вы не сможете получить эту информацию.

BTW. Имейте в виду, что удаление файла происходит в директории, в которой он находится, а не в самом файле.

1
ответ дан 4 August 2018 в 19:16
  • 1
    К сожалению, нет необходимости открывать файл для его удаления. По меньшей мере, например, "strace rm some-file" вывод не показывает, что команда rm сначала открывает файл, а затем удаляет его. Поэтому я думаю, что lsof не помогает. – Mohammad 15 June 2011 в 17:35
  • 2
    Прочтите последнее предложение моего ответа – vartec 15 June 2011 в 18:29

Позвольте мне предложить альтернативу sysdig, поскольку ответы выше стареют. Пусть отобразится pid и name процессов, которые удаляют файл /tmp/test. Сначала мы создаем файл с touch /tmp/test. Затем мы запускаем sysdig со следующим фильтром:

$ sudo sysdig -p'%proc.pid,%proc.name' '(evt.type=unlinkat and (evt.arg.name=test or evt.arg.name=/tmp/test)) or (evt.type=unlink and evt.arg.path=/tmp/test)'

unlinkat(2) требует фильтра or, если путь (например, evt.arg.name) может быть относительным. Для обработки как unlink (который вызывает unlink(2)), так и rm (который вызывает unlinkat(2) в своей версии GNU), фильтр должен соответствовать обоим системам.

sysdig должен работать, когда процесс удаляет файл. Затем, когда мы выполняем такие команды:

$ unlink /tmp/test $ touch /tmp/test $ rm /tmp/test $ cd /tmp; touch test; rm test

Отображает такой вывод:

11380,unlink 11407,rm 11662,rm

Пожалуйста, обратитесь к sysdig для объяснения фильтрации и вывода.

Поскольку фильтр довольно длинный, мне было удобно писать долото. Это сценарий lua, связанный с командой sysdig:

description = "displays processes that delete a file" short_description = "spy file deletion" category = "files" args = { { name = "path", description = "the path of the file to monitor", argtype = "string" }, } function on_set_arg(name, val) path = val return true end function on_init() local filename = path for i in string.gmatch(path, "[^/]+") do filename = i end chisel.set_event_formatter("%proc.pid\t%proc.name") chisel.set_filter( "(evt.type=unlinkat and (evt.arg.name=" .. path .. " or \ evt.arg.name=" .. filename .. ")) or \ (evt.type=unlink and evt.arg.path=" .. path .. ")") return true end

Не стесняйтесь комментировать и улучшать его. Вы можете поместить сценарий lua в файл spy_deletes.lua внутри каталога и выполнить sysdig в этом каталоге, чтобы сделать долото. При вводе sudo sysdig -cl вы увидите это как:

Category: files --------------- spy_deletes spy file deletion

Теперь вы можете называть его:

$ sudo sysdig -c spy_deletes /tmp/test

И в другом типе терминала:

$ touch test; unlink test $ touch test; unlink /tmp/test $ touch test; rm test $ touch test; rm /tmp/test

Он выведет:

16025 unlink 16033 unlink 16041 rm 16049 rm

Фильтр unlinkat заслуживает того, чтобы быть более точным и соответствовать абсолютному пути. Для этого потребуется получить fd каталога, переданного в unlinkat(2).

1
ответ дан 6 August 2018 в 03:30
  • 1
    У меня нет вывода с вашей командой. – A.B. 7 August 2015 в 21:07
  • 2
    Я набрал rm /tmp/test в другом терминале. Я отредактировал свой ответ, чтобы сделать его более ясным. – Greg Leclercq 8 August 2015 в 23:34

Вы можете узнать PID процесса, у которого есть файл, открытый с помощью lsof.

Как только файл закрыт и удален, вы не сможете получить эту информацию.

BTW. Имейте в виду, что удаление файла происходит в директории, в которой он находится, а не в самом файле.

1
ответ дан 6 August 2018 в 03:30
  • 1
    К сожалению, нет необходимости открывать файл для его удаления. По меньшей мере, например, "strace rm some-file" вывод не показывает, что команда rm сначала открывает файл, а затем удаляет его. Поэтому я думаю, что lsof не помогает. – Mohammad 15 June 2011 в 17:35
  • 2
    Прочтите последнее предложение моего ответа – vartec 15 June 2011 в 18:29

Вы можете узнать PID процесса, у которого есть файл, открытый с помощью lsof .

Когда файл закрыт и удален, вы не сможете получить эту информацию.

BTW. Имейте в виду, что удаление файла происходит в директории, в которой он находится, а не в самом файле.

1
ответ дан 7 August 2018 в 21:17

Позвольте мне предложить альтернативу с sysdig , поскольку ответы выше стареют. Пусть отображаются имена pid и процессов, удаляющих файл / tmp / test . Сначала мы создаем файл с помощью touch / tmp / test . Затем мы запускаем sysdig со следующим фильтром:

  $ sudo sysdig -p '% proc.pid,% proc.name' '(evt.type = unlinkat и  (evt.arg.name = test или evt.arg.name = / tmp / test)) или (evt.type = unlink и evt.arg.path = / tmp / test) ' 

unlinkat (2) требует фильтр или , если путь (например, evt.arg.name ) может относительный . Для обработки как unlink (который вызывает unlink (2) ) и rm (который вызывает unlinkat (2) в его версия GNU), фильтр должен соответствовать обоим компьютерам.

sysdig должен запускаться, когда процесс удаляет файл. Затем, когда мы выполняем такие команды:

  $ unlink / tmp / test $ touch / tmp / test $ rm / tmp / test $ cd / tmp;  сенсорный тест;  rm test  

Он отобразит такой вывод:

  11380, unlink 11407, rm 11662, rm  

Пожалуйста, обратитесь к руководству пользователя sysdig для объяснения фильтрации и вывода.

Поскольку фильтр довольно длинный, мне было удобно писать долото. Это сценарий lua, связанный с командой sysdig :

  description = "отображает процессы, которые удаляют файл" short_description = "удаление шпионского файла" category = "  файлы "args = {{name =" path ", description =" путь к файлу для мониторинга ", argtype =" string "},} function on_set_arg (name, val) path = val return true end function on_init () local  filename = путь для i в string.gmatch (путь, "[^ /] +") do filename = i end chisel.set_event_formatter ("% proc.pid \ t% proc.name") chisel.set_filter ("(evt.  type = unlinkat и (evt.arg.name = ".. path .." или \ evt.arg.name = ".. filename ..")) или \ (evt.type = unlink и evt.arg.path =  ".. path ..") ") return true end  

Не стесняйтесь комментировать и улучшать его. Вы можете поместить скрипт lua в файл spy_deletes.lua внутри каталога и выполнить sysdig в этом каталоге, чтобы сделать долото. При вводе sudo sysdig -cl вы увидите это как:

  Категория: файлы --------------- spy_deletes spy file  удаление  

Теперь вы можете называть это:

  $ sudo sysdig -c spy_deletes / tmp / test  

И в другом терминальном типе:

  $ touch test;  тест бесконтактного теста $ touch;  disable / tmp / test $ touch test;  тест rm test $ touch;  rm / tmp / test  

Он выведет:

  16025 unlink 16033 unlink 16041 rm 16049 rm  

фильтр uninkat заслуживает более точной и только соответствует абсолютному пути. Для этого потребуется получить fd каталога, переданного в unlinkat (2) .

1
ответ дан 7 August 2018 в 21:17

Вы можете узнать PID процесса, у которого есть файл, открытый с помощью lsof .

Когда файл закрыт и удален, вы не сможете получить эту информацию.

BTW. Имейте в виду, что удаление файла происходит в директории, в которой он находится, а не в самом файле.

1
ответ дан 10 August 2018 в 09:35

Позвольте мне предложить альтернативу с sysdig , поскольку ответы выше стареют. Пусть отображаются имена pid и процессов, удаляющих файл / tmp / test . Сначала мы создаем файл с помощью touch / tmp / test . Затем мы запускаем sysdig со следующим фильтром:

  $ sudo sysdig -p '% proc.pid,% proc.name' '(evt.type = unlinkat и  (evt.arg.name = test или evt.arg.name = / tmp / test)) или (evt.type = unlink и evt.arg.path = / tmp / test) ' 

unlinkat (2) требует фильтр или , если путь (например, evt.arg.name ) может относительный . Для обработки как unlink (который вызывает unlink (2) ) и rm (который вызывает unlinkat (2) в его версия GNU), фильтр должен соответствовать обоим компьютерам.

sysdig должен запускаться, когда процесс удаляет файл. Затем, когда мы выполняем такие команды:

  $ unlink / tmp / test $ touch / tmp / test $ rm / tmp / test $ cd / tmp;  сенсорный тест;  rm test  

Он отобразит такой вывод:

  11380, unlink 11407, rm 11662, rm  

Пожалуйста, обратитесь к руководству пользователя sysdig для объяснения фильтрации и вывода.

Поскольку фильтр довольно длинный, мне было удобно писать долото. Это сценарий lua, связанный с командой sysdig :

  description = "отображает процессы, которые удаляют файл" short_description = "удаление шпионского файла" category = "  файлы "args = {{name =" path ", description =" путь к файлу для мониторинга ", argtype =" string "},} function on_set_arg (name, val) path = val return true end function on_init () local  filename = путь для i в string.gmatch (путь, "[^ /] +") do filename = i end chisel.set_event_formatter ("% proc.pid \ t% proc.name") chisel.set_filter ("(evt.  type = unlinkat и (evt.arg.name = ".. path .." или \ evt.arg.name = ".. filename ..")) или \ (evt.type = unlink и evt.arg.path =  ".. path ..") ") return true end  

Не стесняйтесь комментировать и улучшать его. Вы можете поместить скрипт lua в файл spy_deletes.lua внутри каталога и выполнить sysdig в этом каталоге, чтобы сделать долото. При вводе sudo sysdig -cl вы увидите это как:

  Категория: файлы --------------- spy_deletes spy file  удаление  

Теперь вы можете называть это:

  $ sudo sysdig -c spy_deletes / tmp / test  

И в другом терминальном типе:

  $ touch test;  тест бесконтактного теста $ touch;  disable / tmp / test $ touch test;  тест rm test $ touch;  rm / tmp / test  

Он выведет:

  16025 unlink 16033 unlink 16041 rm 16049 rm  

фильтр uninkat заслуживает более точной и только соответствует абсолютному пути. Для этого потребуется получить fd каталога, переданного в unlinkat (2) .

1
ответ дан 10 August 2018 в 09:35

Вы можете узнать PID процесса, у которого есть файл, открытый с помощью lsof .

Когда файл закрыт и удален, вы не сможете получить эту информацию.

BTW. Имейте в виду, что удаление файла происходит в директории, в которой он находится, а не в самом файле.

1
ответ дан 13 August 2018 в 15:46
  • 1
    К сожалению, нет необходимости открывать файл для его удаления. По меньшей мере, например, "strace rm some-file" вывод не показывает, что команда rm сначала открывает файл, а затем удаляет его. Поэтому я думаю, что lsof не помогает. – Mohammad 15 June 2011 в 17:35
  • 2
    Прочтите последнее предложение моего ответа – vartec 15 June 2011 в 18:29

Позвольте мне предложить альтернативу с sysdig , поскольку ответы выше стареют. Пусть отображаются имена pid и процессов, удаляющих файл / tmp / test . Сначала мы создаем файл с помощью touch / tmp / test . Затем мы запускаем sysdig со следующим фильтром:

  $ sudo sysdig -p '% proc.pid,% proc.name' '(evt.type = unlinkat и  (evt.arg.name = test или evt.arg.name = / tmp / test)) или (evt.type = unlink и evt.arg.path = / tmp / test) ' 

unlinkat (2) требует фильтр или , если путь (например, evt.arg.name ) может относительный . Для обработки как unlink (который вызывает unlink (2) ) и rm (который вызывает unlinkat (2) в его версия GNU), фильтр должен соответствовать обоим компьютерам.

sysdig должен запускаться, когда процесс удаляет файл. Затем, когда мы выполняем такие команды:

  $ unlink / tmp / test $ touch / tmp / test $ rm / tmp / test $ cd / tmp;  сенсорный тест;  rm test  

Он отобразит такой вывод:

  11380, unlink 11407, rm 11662, rm  

Пожалуйста, обратитесь к руководству пользователя sysdig для объяснения фильтрации и вывода.

Поскольку фильтр довольно длинный, мне было удобно писать долото. Это сценарий lua, связанный с командой sysdig :

  description = "отображает процессы, которые удаляют файл" short_description = "удаление шпионского файла" category = "  файлы "args = {{name =" path ", description =" путь к файлу для мониторинга ", argtype =" string "},} function on_set_arg (name, val) path = val return true end function on_init () local  filename = путь для i в string.gmatch (путь, "[^ /] +") do filename = i end chisel.set_event_formatter ("% proc.pid \ t% proc.name") chisel.set_filter ("(evt.  type = unlinkat и (evt.arg.name = ".. path .." или \ evt.arg.name = ".. filename ..")) или \ (evt.type = unlink и evt.arg.path =  ".. path ..") ") return true end  

Не стесняйтесь комментировать и улучшать его. Вы можете поместить скрипт lua в файл spy_deletes.lua внутри каталога и выполнить sysdig в этом каталоге, чтобы сделать долото. При вводе sudo sysdig -cl вы увидите это как:

  Категория: файлы --------------- spy_deletes spy file  удаление  

Теперь вы можете называть это:

  $ sudo sysdig -c spy_deletes / tmp / test  

И в другом терминальном типе:

  $ touch test;  тест бесконтактного теста $ touch;  disable / tmp / test $ touch test;  тест rm test $ touch;  rm / tmp / test  

Он выведет:

  16025 unlink 16033 unlink 16041 rm 16049 rm  

фильтр uninkat заслуживает более точной и только соответствует абсолютному пути. Для этого потребуется получить fd каталога, переданного в unlinkat (2) .

1
ответ дан 13 August 2018 в 15:46
  • 1
    У меня нет вывода с вашей командой. – A.B. 7 August 2015 в 21:07
  • 2
    Я набрал rm / tmp / test в другом терминале. Я отредактировал свой ответ, чтобы сделать его более ясным. – Greg Leclercq 8 August 2015 в 23:34

Другие вопросы по тегам:

Похожие вопросы: