2014-04-15 3 views
1

나는 파이썬과 PyQt로 다중 플랫폼 데스크톱 응용 프로그램을 개발했으며, 그 안에서 가장 (impersonation) 개념을 구현하려고한다. 사용자가 파일을 선택하고 응용 프로그램에서 이름 지정 규칙 및 기타 사항을 확인하는 요구 사항이 있습니다. everythin이 괜찮 으면 가장 (impersonate) 사용자 만이 (user123)에게 읽기 권한 만 가진 모든 권한을 가지고 있다고 말할 수있는 서버에서 파일을 복사합니다.리눅스에서 가장을 가장하는 방법

내가 할 수 LOGIN에게

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

를 가장 및 사용자

win32security.RevertToSelf() 

수있는 사람에게 되돌릴 win32security

win32con를 사용하여 Windows에서이를 달성 할 수 이것에 대한 접근을 제안한다. Linux (RHEL 6).

답변

0

먼저 작업에 OS 수준의 가장이 필요한지 생각해보십시오.

  • PySmbClient를 사용하여 Windows 파일 공유에 액세스 한 다음 모든 연결을 직접 관리하면 smbclient에 다른 자격 증명을 제공 할 수 있습니다.

  • PyKDE4.kio를 사용하는 경우 동일한 내용이 적용됩니다 (KIO는 smbclient를 사용함).

  • 기존 시스템 수준의 탑재를 통해 파일 서버에 액세스하는 경우 Windows와 같은 실제 "가장"이 없습니다. 프로세스 '"effective UID"을 간단히 변경하여 수행되며 일반적으로 프로그램에 루트 권한 (또는 Linux에서 루트와 동등한 CAP_SETUID 권한)이있는 경우에만 수행 할 수 있습니다.

    uid = pw.getpwnam(username).pw_uid 
    
    os.seteuid(uid) 
    ... 
    os.seteuid(0) 
    

    이 (이것은 커널 열쇠 고리에 자격 증명을 저장 네트워크 파일 시스템과 함께 작동하지 않을 수 있습니다 ... 나는 아직 그에 대한 답변이 없습니다.) 그러나

  • , 대부분의 데스크탑 프로그램은하지 않습니다 루트 권한이 있어야합니다 (이 아니어야합니다). 이 경우 seteuid()를 사용할 수 없으며 일반적으로 권한있는 작업은 데스크탑 응용 프로그램이 IPC (일반적으로 D-Bus) 형식을 사용하여 접촉하는 권한있는 데몬에 의해 수행됩니다.