From: Rob van der Linde Date: Tue, 5 Mar 2024 02:30:47 +0000 (+1300) Subject: netcmd: models: User.find also tries object_sid X-Git-Tag: tdb-1.4.11~1438 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=12f3db0109a4dbe5e96425bdff73c874f538ef9e;p=thirdparty%2Fsamba.git netcmd: models: User.find also tries object_sid Signed-off-by: Rob van der Linde Reviewed-by: Douglas Bagnall Reviewed-by: Andrew Bartlett --- diff --git a/python/samba/netcmd/domain/models/user.py b/python/samba/netcmd/domain/models/user.py index 79a8ecce477..0e05bfc3358 100644 --- a/python/samba/netcmd/domain/models/user.py +++ b/python/samba/netcmd/domain/models/user.py @@ -22,6 +22,7 @@ from ldb import Dn +from samba.dcerpc.security import dom_sid from samba.dsdb import DS_GUID_USERS_CONTAINER from .fields import DnField, EnumField, IntegerField, NtTimeField, StringField @@ -75,13 +76,16 @@ class User(OrganizationalPerson): @classmethod def find(cls, ldb, name): - """Helper function to find a user first by Dn then sAMAccountName. + """Helper function to find a user by Dn, objectSid, or sAMAccountName. - If the Dn can't be parsed, use sAMAccountName instead. + If the Dn or Sid can't be parsed, use sAMAccountName instead. """ try: query = {"dn": Dn(ldb, name)} except ValueError: - query = {"account_name": name} + try: + query = {"object_sid": dom_sid(name)} + except ValueError: + query = {"account_name": name} return cls.get(ldb, **query)