mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
samba-tool group list: add more info to samba-tool group list
Reviewed-by: Andrew Bartlett <abartlet@samba.org> Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> Autobuild-Date(master): Sun Mar 17 12:56:47 CET 2013 on sn-devel-104
This commit is contained in:
parent
1d15fc75a3
commit
96d731c79b
@ -27,6 +27,7 @@ from getpass import getpass
|
|||||||
from samba.auth import system_session
|
from samba.auth import system_session
|
||||||
from samba.samdb import SamDB
|
from samba.samdb import SamDB
|
||||||
from samba.dsdb import (
|
from samba.dsdb import (
|
||||||
|
GTYPE_SECURITY_BUILTIN_LOCAL_GROUP,
|
||||||
GTYPE_SECURITY_DOMAIN_LOCAL_GROUP,
|
GTYPE_SECURITY_DOMAIN_LOCAL_GROUP,
|
||||||
GTYPE_SECURITY_GLOBAL_GROUP,
|
GTYPE_SECURITY_GLOBAL_GROUP,
|
||||||
GTYPE_SECURITY_UNIVERSAL_GROUP,
|
GTYPE_SECURITY_UNIVERSAL_GROUP,
|
||||||
@ -35,8 +36,13 @@ from samba.dsdb import (
|
|||||||
GTYPE_DISTRIBUTION_UNIVERSAL_GROUP,
|
GTYPE_DISTRIBUTION_UNIVERSAL_GROUP,
|
||||||
)
|
)
|
||||||
|
|
||||||
security_group = dict({"Domain": GTYPE_SECURITY_DOMAIN_LOCAL_GROUP, "Global": GTYPE_SECURITY_GLOBAL_GROUP, "Universal": GTYPE_SECURITY_UNIVERSAL_GROUP})
|
security_group = dict({"Builtin": GTYPE_SECURITY_BUILTIN_LOCAL_GROUP,
|
||||||
distribution_group = dict({"Domain": GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP, "Global": GTYPE_DISTRIBUTION_GLOBAL_GROUP, "Universal": GTYPE_DISTRIBUTION_UNIVERSAL_GROUP})
|
"Domain": GTYPE_SECURITY_DOMAIN_LOCAL_GROUP,
|
||||||
|
"Global": GTYPE_SECURITY_GLOBAL_GROUP,
|
||||||
|
"Universal": GTYPE_SECURITY_UNIVERSAL_GROUP})
|
||||||
|
distribution_group = dict({"Domain": GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP,
|
||||||
|
"Global": GTYPE_DISTRIBUTION_GLOBAL_GROUP,
|
||||||
|
"Universal": GTYPE_DISTRIBUTION_UNIVERSAL_GROUP})
|
||||||
|
|
||||||
|
|
||||||
class cmd_group_add(Command):
|
class cmd_group_add(Command):
|
||||||
@ -274,6 +280,10 @@ class cmd_group_list(Command):
|
|||||||
takes_options = [
|
takes_options = [
|
||||||
Option("-H", "--URL", help="LDB URL for database or target server", type=str,
|
Option("-H", "--URL", help="LDB URL for database or target server", type=str,
|
||||||
metavar="URL", dest="H"),
|
metavar="URL", dest="H"),
|
||||||
|
Option("-v", "--verbose",
|
||||||
|
help="Verbose output, showing group type and group scope.",
|
||||||
|
action="store_true"),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
takes_optiongroups = {
|
takes_optiongroups = {
|
||||||
@ -282,7 +292,8 @@ class cmd_group_list(Command):
|
|||||||
"versionopts": options.VersionOptions,
|
"versionopts": options.VersionOptions,
|
||||||
}
|
}
|
||||||
|
|
||||||
def run(self, sambaopts=None, credopts=None, versionopts=None, H=None):
|
def run(self, sambaopts=None, credopts=None, versionopts=None, H=None,
|
||||||
|
verbose=False):
|
||||||
lp = sambaopts.get_loadparm()
|
lp = sambaopts.get_loadparm()
|
||||||
creds = credopts.get_credentials(lp, fallback_machine=True)
|
creds = credopts.get_credentials(lp, fallback_machine=True)
|
||||||
|
|
||||||
@ -292,13 +303,36 @@ class cmd_group_list(Command):
|
|||||||
domain_dn = samdb.domain_dn()
|
domain_dn = samdb.domain_dn()
|
||||||
res = samdb.search(domain_dn, scope=ldb.SCOPE_SUBTREE,
|
res = samdb.search(domain_dn, scope=ldb.SCOPE_SUBTREE,
|
||||||
expression=("(objectClass=group)"),
|
expression=("(objectClass=group)"),
|
||||||
attrs=["samaccountname"])
|
attrs=["samaccountname", "grouptype"])
|
||||||
if (len(res) == 0):
|
if (len(res) == 0):
|
||||||
return
|
return
|
||||||
|
|
||||||
for msg in res:
|
if verbose:
|
||||||
self.outf.write("%s\n" % msg.get("samaccountname", idx=0))
|
self.outf.write("Group Name Group Type Group Scope\n")
|
||||||
|
self.outf.write("-----------------------------------------------------------------------------\n")
|
||||||
|
|
||||||
|
for msg in res:
|
||||||
|
self.outf.write("%-44s" % msg.get("samaccountname", idx=0))
|
||||||
|
hgtype = hex(int("%s" % msg["grouptype"]) & 0x00000000FFFFFFFF)
|
||||||
|
if (hgtype == hex(int(security_group.get("Builtin")))):
|
||||||
|
self.outf.write("Security Builtin\n")
|
||||||
|
elif (hgtype == hex(int(security_group.get("Domain")))):
|
||||||
|
self.outf.write("Security Domain\n")
|
||||||
|
elif (hgtype == hex(int(security_group.get("Global")))):
|
||||||
|
self.outf.write("Security Global\n")
|
||||||
|
elif (hgtype == hex(int(security_group.get("Universal")))):
|
||||||
|
self.outf.write("Security Universal\n")
|
||||||
|
elif (hgtype == hex(int(distribution_group.get("Global")))):
|
||||||
|
self.outf.write("Distribution Global\n")
|
||||||
|
elif (hgtype == hex(int(distribution_group.get("Domain")))):
|
||||||
|
self.outf.write("Distribution Domain\n")
|
||||||
|
elif (hgtype == hex(int(distribution_group.get("Universal")))):
|
||||||
|
self.outf.write("Distribution Universal\n")
|
||||||
|
else:
|
||||||
|
self.outf.write("\n")
|
||||||
|
else:
|
||||||
|
for msg in res:
|
||||||
|
self.outf.write("%s\n" % msg.get("samaccountname", idx=0))
|
||||||
|
|
||||||
class cmd_group_list_members(Command):
|
class cmd_group_list_members(Command):
|
||||||
"""List all members of an AD group.
|
"""List all members of an AD group.
|
||||||
|
Loading…
Reference in New Issue
Block a user