2024-10-02 10:23:29 发布
网友
我需要生成一个小脚本,用于监视用户对大型共享文件结构所做的意外更改
我发现我可以使用ReadDirectoryChanges API按照获取更改事件 http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html
但是,我不知道如何识别进行了更改的用户帐户,以便发送通知
是否可以获取移动文件/目录的用户帐户的名称
在UNIX环境中,可以使用os和pwd检索已更改文件的用户帐户
os
pwd
import os import pwd file_stat = os.stat("<changed_file>") user_name = pwd.getpwuid(file_stat.st_uid).pw_name
棘手的问题,我将从两个方面给你答案:
首先,作为可选部分,您可以监视文件修改本身,并添加自定义操作
在Windows/Linux/Mac/BSD上工作的文件修改跟踪示例
import time import watchdog.events import watchdog.observers class StateHandler(watchdog.events.PatternMatchingEventHandler): def on_modified(self, event): print(event.event_type) print(event.key) print(event.src_path) # Add your code here to do whatever you want on file modification def on_created(self, event): pass def on_moved(self, event): pass def on_deleted(self, event): pass fs_event_handler = StateHandler() fs_observer = watchdog.observers.Observer() fs_observer.schedule(fs_event_handler, r'C:\Users\SomeUser\SomeFolder', recursive=True) fs_observer.start() try: while True: time.sleep(2) except KeyboardInterrupt: fs_observer.stop() fs_observer.join()
使用上述文件系统观察器,您可以触发安全事件日志检查。 您也可以按计划任务触发它们,但在文件系统修改时触发它们更有趣
为了使安全事件日志包含文件修改信息,您需要使用SACL列表对所需目录启用文件审核(右键单击您的文件夹“安全、审核”)。 然后,您可以查看文件事件的安全日志
可以使用windows_tools查看安全日志。 使用python -m pip install windows_tools.wmi_queries安装它(显然只适用于Windows)
windows_tools
python -m pip install windows_tools.wmi_queries
然后执行以下操作:
from windows_tools.wmi_queries import * result = query_wmi('SELECT * FROM Win32_NTLogEvent WHERE Logfile="Security" AND TimeGenerated > "{}"'.format(create_current_cim_timestamp(hour_offset=1))) for r in result: print(r)
您可以添加WHERE子句,如EventCode={integer},以便只过滤您需要的事件(文件修改或其他)。 通常,您搜索的事件代码是4656466046634670(打开删除、编辑、创建)
WHERE
EventCode={integer}
请参阅This microsoft article,以了解事件日志类接受哪些WHERE子句
免责声明:我是windows_工具包的作者
在UNIX环境中,可以使用
os
和pwd
检索已更改文件的用户帐户棘手的问题,我将从两个方面给你答案:
首先,作为可选部分,您可以监视文件修改本身,并添加自定义操作
在Windows/Linux/Mac/BSD上工作的文件修改跟踪示例
使用上述文件系统观察器,您可以触发安全事件日志检查。 您也可以按计划任务触发它们,但在文件系统修改时触发它们更有趣
为了使安全事件日志包含文件修改信息,您需要使用SACL列表对所需目录启用文件审核(右键单击您的文件夹“安全、审核”)。 然后,您可以查看文件事件的安全日志
可以使用
windows_tools
查看安全日志。 使用python -m pip install windows_tools.wmi_queries
安装它(显然只适用于Windows)然后执行以下操作:
您可以添加
WHERE
子句,如EventCode={integer}
,以便只过滤您需要的事件(文件修改或其他)。 通常,您搜索的事件代码是4656466046634670(打开删除、编辑、创建)请参阅This microsoft article,以了解事件日志类接受哪些WHERE子句
免责声明:我是windows_工具包的作者
相关问题 更多 >
编程相关推荐