如何获取文件的最后修改用户属性?已实现获取文件大小与修改时间
嘿,很高兴你已经搞定了文件大小和修改日期的获取!关于获取最后修改用户,这个得看你用的操作系统和工具/编程语言,我给你分几种常见场景详细说说:
获取文件最后修改用户的方法
首先得明确:不同操作系统对文件元数据的存储逻辑有差异,很多情况下我们获取的是文件所有者(创建或最后变更权限的用户),如果要精准追踪最后一次修改文件内容的用户,可能需要依赖系统审计日志,这个后面会提到。
1. 用Python实现跨平台获取
如果你是用Python处理的话,可以针对不同系统做适配:
- Windows系统:借助
pywin32库读取文件所有者信息(一般场景下可作为修改用户的参考):
import win32api import win32security def get_file_owner_win(file_path): # 获取文件安全描述符 sd = win32security.GetFileSecurity(file_path, win32security.OWNER_SECURITY_INFORMATION) owner_sid = sd.GetSecurityDescriptorOwner() # 将SID转换为用户名 name, domain, _ = win32security.LookupAccountSid(None, owner_sid) return f"{domain}\\{name}" # 调用示例 print(get_file_owner_win("C:\\test.txt"))
- Linux/macOS系统:通过
os.stat获取文件的UID,再用pwd模块映射为用户名:
import os import pwd def get_file_owner_unix(file_path): stat_info = os.stat(file_path) uid = stat_info.st_uid return pwd.getpwuid(uid).pw_name # 调用示例 print(get_file_owner_unix("/home/user/test.txt"))
你还可以结合sys.platform写一个自动适配的跨平台函数:
import sys def get_file_modified_user(file_path): if sys.platform.startswith('win'): return get_file_owner_win(file_path) elif sys.platform in ['linux', 'darwin']: return get_file_owner_unix(file_path) else: raise NotImplementedError(f"暂不支持该平台:{sys.platform}")
2. 用系统命令直接查询
如果不想写代码,也可以用系统自带命令快速查看:
- Windows:
- 命令提示符:
dir /q "你的文件路径",输出里的「所有者」列就是目标信息 - PowerShell:
Get-Acl "你的文件路径" | Select-Object -ExpandProperty Owner
- 命令提示符:
- Linux/macOS:
ls -l "你的文件路径",输出的第三列就是文件所有者- 更精准的命令:Linux用
stat -c %U "你的文件路径",macOS用stat -f %Su "你的文件路径"
关于精准追踪最后修改用户的补充
如果你的需求是严格获取最后一次修改文件内容的用户,仅靠文件元数据可能不够——因为很多文件系统不会直接存储这个信息。这种情况下需要开启系统的文件审计功能:
- Windows:在事件查看器中查看「安全日志」,筛选文件修改相关的事件
- Linux:配置
auditd服务,记录文件的修改操作日志
内容的提问来源于stack exchange,提问作者jjurgens
相关产品推荐
相关产品推荐

