fixed authentication issue for root

Resolves: bz#1041578
Resolves: rhbz#1069149
This commit is contained in:
Michal Minar 2014-02-24 11:46:11 +01:00
parent 60ab8d414a
commit 3932b8be2f
2 changed files with 56 additions and 1 deletions

View File

@ -0,0 +1,50 @@
Index: pywbem-20131121/cim_http.py
===================================================================
--- pywbem-20131121.orig/cim_http.py
+++ pywbem-20131121/cim_http.py
@@ -42,6 +42,33 @@ class AuthError(Error):
"""This exception is raised when an authentication error (401) occurs."""
pass
+try:
+ import pwd
+ def get_user_name(uid=None):
+ """Return user name for given uid.
+ :param int uid: User id of user whose name is desired.
+ If not given, current user will be assumed.
+ """
+ try:
+ if uid is None:
+ uid = os.getuid()
+ return pwd.getpwuid(uid).pw_name
+ except KeyError:
+ pass
+except ImportError: # pwd is available only on *nix
+ def get_user_name(uid=None):
+ """
+ Return user name of current user.
+ :param int uid: Optional argument. Note that uid may be equal only
+ to current user's id, otherwise an exception will be raised.
+ """
+ if uid is not None and uid != os.getuid():
+ raise ValueError("Can not get user name for other user.")
+ try:
+ return getpass.getuser()
+ except KeyError:
+ pass
+
def parse_url(url):
"""Return a tuple of (host, port, ssl) from the URL parameter.
The returned port defaults to 5988 if not specified. SSL supports
@@ -226,10 +253,7 @@ def wbem_request(url, data, creds, heade
local = True
if local:
uid = os.getuid()
- try:
- locallogin = getpass.getuser()
- except KeyError:
- locallogin = None
+ locallogin = get_user_name(uid)
while numTries < tryLimit:
numTries = numTries + 1

View File

@ -4,7 +4,7 @@
Name: pywbem
Version: 0.7.0
Release: 24.%{revdate}svn%{svnrev}%{?dist}
Release: 25.%{revdate}svn%{svnrev}%{?dist}
Summary: Python WBEM Client and Provider Interface
Group: Development/Libraries
License: LGPLv2
@ -23,6 +23,7 @@ Requires: m2crypto
Patch0: pywbem-20130411-mof_compiler-import.patch
Patch1: pywbem-20131121-ssl_verify_host.patch
Patch2: pywbem-20131121-utf_encoding.patch
Patch3: pywbem-20131121-local_root_auth.patch
%description
A Python library for making CIM (Common Information Model) operations over HTTP
@ -56,6 +57,7 @@ twisted.protocols.http.HTTPClient base class.
%patch0 -p1 -b .mofcomp-imports
%patch1 -p1 -b .ssl_verify_host
%patch2 -p1 -b .utf_encoding
%patch3 -p1 -b .local_root_auth
%build
# dirty workaround to fix the mof_compiler.py module path
@ -86,6 +88,9 @@ rm -rf %{buildroot}
%{python_sitelib}/pywbem/twisted_client.py*
%changelog
* Mon Feb 24 2014 Michal Minar <miminar@redhat.com> 0.7.0-25.20131121svn656
- Fixed local authentication under root.
* Thu Jan 23 2014 Michal Minar <miminar@redhat.com> 0.7.0-24.20131121svn656
- Added support for non-ascii strings.