如何用Python修改文件权限,仅允许当前运行的Python程序全量访问
仅让当前Python程序拥有文件全量访问权限的最简方法
Unix-like 系统(Linux/macOS)
最简方式是将文件权限设置为仅所有者拥有读、写、执行权限(八进制0o700),这样组和其他用户完全没有任何访问权限。直接用os.chmod即可实现:
import os filename = "your_file.txt" # 设置权限为仅所有者可读、可写、可执行 os.chmod(filename, 0o700)
这里0o700等价于stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR,直接写八进制数更简洁。需要注意:root用户不受此权限限制,仍能访问文件,这是Unix系统的固有特性。
Windows 系统
Windows依赖ACL(访问控制列表)管理权限,需要移除所有其他用户的权限,仅保留当前进程所属用户的完全控制权限。可以借助pywin32库实现:
首先安装依赖:
pip install pywin32
然后执行权限设置:
import win32security import os filename = "your_file.txt" # 获取当前运行程序的用户SID current_user_sid = win32security.GetCurrentUser() # 获取文件的安全描述符 sd = win32security.GetFileSecurity(filename, win32security.DACL_SECURITY_INFORMATION) # 创建仅允许当前用户完全控制的新ACL dacl = win32security.ACL() dacl.AddAccessAllowedAce(win32security.ACL_REVISION, win32security.FILE_ALL_ACCESS, current_user_sid) # 应用新的ACL(关闭权限继承) sd.SetSecurityDescriptorDacl(1, dacl, 0) win32security.SetFileSecurity(filename, win32security.DACL_SECURITY_INFORMATION, sd)
这段代码会清除文件原有所有非当前用户的权限,确保只有运行该Python程序的用户能操作文件。
内容的提问来源于stack exchange,提问作者SOFArminRh
相关产品推荐
相关产品推荐

