gpt4 book ai didi

python - 如何在 linux 中模拟

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:34 24 4
gpt4 key购买 nike

我用 python 和 PyQt 开发了一个多平台桌面应用程序,我想在其中实现模拟的概念。我有一个要求,用户选择一个文件,应用程序将检查命名约定和其他内容。如果一切正常,那么它会将文件复制到服务器中,只有模拟用户可以说 (user123) 具有完全权限,其他只有读取权限。

我可以通过使用 win32securitywin32con 在 Windows 中实现这一点

模拟登录

Self.handel=win32security.LogonUser(self.loginID,self.domain,self.password,win32con.LOGON32_LOGON_INTERACTIVE,win32con.LOGON32_PROVIDER_DEFAULT)
win32security.ImpersonateLoggedOnUser(self.handel)

并返回给用户

win32security.RevertToSelf()

谁能建议在 Linux (RHEL 6) 下解决这个问题的方法。

最佳答案

首先,考虑您的任务是否真的需要操作系统级别的模拟。

  • 如果您使用例如PySmbClient 访问 Windows 文件共享,然后您自己管理所有连接,您只需向 smbclient 提供不同的凭据即可。

  • 如果您使用 PyKDE4.kio,据我所知同样适用(KIO 使用 smbclient)。

  • 如果您通过现有的系统级装载访问文件服务器,则不会像在 Windows 中那样进行实际的“模拟”;只需更改流程即可完成'"effective UID"通常只有当程序具有 root 权限(或 Linux 上的 root 等效 CAP_SETUID 权限)时才能完成。

    uid = pw.getpwnam(username).pw_uid

    os.seteuid(uid)
    ...
    os.seteuid(0)

    (这不能保证与在内核 key 环中存储凭据的网络文件系统一起工作......我还没有答案。)

  • 但是,大多数桌面程序没有 root 权限(而且不应该有)。在这种情况下,seteuid() 不可用,特权操作通常由桌面应用使用某种形式的 IPC(通常是 D-Bus)联系的特权守护进程完成。

关于python - 如何在 linux 中模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23079096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com