mirror of
https://github.com/samba-team/samba.git
synced 2025-08-05 12:22:11 +03:00
samba-tool group removemembers: adapt functionality to addmembers command
Adds --member-dn and --object-types options. Signed-off-by: Björn Baumbach <bb@sernet.de> Reviewed-by: Ralph Boehme <slow@samba.org>
This commit is contained in:
committed by
Stefan Metzmacher
parent
aedcf6a527
commit
47f9ee91ed
@ -295,7 +295,7 @@ sudo samba-tool group removemembers supergroup User1
|
|||||||
Example2 shows how to remove a single user account, User2, from the supergroup AD group. It uses the sudo command to run as root when issuing the command.
|
Example2 shows how to remove a single user account, User2, from the supergroup AD group. It uses the sudo command to run as root when issuing the command.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
synopsis = "%prog <groupname> <listofmembers> [options]"
|
synopsis = "%prog <groupname> (<listofmembers>]|--member-dn=<member-dn>) [options]"
|
||||||
|
|
||||||
takes_optiongroups = {
|
takes_optiongroups = {
|
||||||
"sambaopts": options.SambaOptions,
|
"sambaopts": options.SambaOptions,
|
||||||
@ -306,12 +306,32 @@ Example2 shows how to remove a single user account, User2, from the supergroup A
|
|||||||
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("--member-dn",
|
||||||
|
help=("DN of the group member to be removed.\n"
|
||||||
|
"The --object-types option will be ignored."),
|
||||||
|
type=str),
|
||||||
|
Option("--object-types",
|
||||||
|
help=("Comma separated list of object types.\n"
|
||||||
|
"The types are used to filter the search for the "
|
||||||
|
"specified members.\n"
|
||||||
|
"Valid values are: user, group, computer, serviceaccount, "
|
||||||
|
"contact and all.\n"
|
||||||
|
"Default: user,group,computer"),
|
||||||
|
default="user,group,computer",
|
||||||
|
type=str),
|
||||||
]
|
]
|
||||||
|
|
||||||
takes_args = ["groupname", "listofmembers"]
|
takes_args = ["groupname", "listofmembers?"]
|
||||||
|
|
||||||
def run(self, groupname, listofmembers, credopts=None, sambaopts=None,
|
def run(self,
|
||||||
versionopts=None, H=None):
|
groupname,
|
||||||
|
listofmembers=None,
|
||||||
|
credopts=None,
|
||||||
|
sambaopts=None,
|
||||||
|
versionopts=None,
|
||||||
|
H=None,
|
||||||
|
member_dn=None,
|
||||||
|
object_types="user,group,computer"):
|
||||||
|
|
||||||
lp = sambaopts.get_loadparm()
|
lp = sambaopts.get_loadparm()
|
||||||
creds = credopts.get_credentials(lp, fallback_machine=True)
|
creds = credopts.get_credentials(lp, fallback_machine=True)
|
||||||
@ -319,8 +339,14 @@ Example2 shows how to remove a single user account, User2, from the supergroup A
|
|||||||
try:
|
try:
|
||||||
samdb = SamDB(url=H, session_info=system_session(),
|
samdb = SamDB(url=H, session_info=system_session(),
|
||||||
credentials=creds, lp=lp)
|
credentials=creds, lp=lp)
|
||||||
samdb.add_remove_group_members(groupname, listofmembers.split(","),
|
if member_dn is not None:
|
||||||
add_members_operation=False)
|
groupmembers = [ member_dn ]
|
||||||
|
else:
|
||||||
|
groupmembers = listofmembers.split(',')
|
||||||
|
samdb.add_remove_group_members(groupname,
|
||||||
|
groupmembers,
|
||||||
|
add_members_operation=False,
|
||||||
|
member_types=group_member_types)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# FIXME: Catch more specific exception
|
# FIXME: Catch more specific exception
|
||||||
raise CommandError('Failed to remove members "%s" from group "%s"' % (listofmembers, groupname), e)
|
raise CommandError('Failed to remove members "%s" from group "%s"' % (listofmembers, groupname), e)
|
||||||
|
Reference in New Issue
Block a user