module OpenDirectoryUtils::CommandsGroups

this is a long list of pre-built dscl commands affecting groups to accomplish common actions @note - these commands were derived from the following resrouces:

Public Instance Methods

group_create(attribs, dir_info)
Alias for: group_create_full
group_create_full(attribs, dir_info) click to toggle source

create group – dscl . -create /Groups/ladmins add group passwd – dscl . -create /Groups/ladmins passwd “*” add group name – dscl . -create /Groups/ladmins RealName “Local Admins” group ID number – dscl . -create /Groups/ladmins gid 400 group id number – dscl . -create /Groups/GROUP PrimaryGroupID GID

# File lib/open_directory_utils/commands_groups.rb, line 131
def group_create_full(attribs, dir_info)
  attribs = group_record_name_alternatives(attribs)

  answer          = []
  attribs[:value] = nil
  answer         << group_create_min( attribs, dir_info )
  attribs[:value] = nil
  answer         << group_set_primary_group_id( attribs, dir_info )
  attribs[:value] = nil
  answer         << group_set_real_name( attribs, dir_info )
  # attribs[:value] = nil
  # answer         << group_set_password( attribs, dir_info )

  return answer
end
Also aliased as: group_create
group_create_min(attribs, dir_info) click to toggle source
# File lib/open_directory_utils/commands_groups.rb, line 74
def group_create_min(attribs, dir_info)
  attribs = group_record_name_alternatives(attribs)

  check_critical_attribute( attribs, :record_name )

  command = {action: 'create', scope: 'Groups', attribute: nil, value: nil}
  user_attrs = attribs.merge(command)

  dscl( user_attrs, dir_info )
end
group_delete(attribs, dir_info) click to toggle source

dscl . -delete /Groups/yourGroupName tutorialforlinux.com/2011/09/15/delete-users-and-groups-from-terminal/

# File lib/open_directory_utils/commands_groups.rb, line 63
def group_delete(attribs, dir_info)
  attribs = group_record_name_alternatives(attribs)

  check_critical_attribute( attribs, :record_name )

  command = {action: 'delete', scope: 'Groups', attribute: nil, value: nil}
  user_attrs = attribs.merge(command)

  dscl( user_attrs, dir_info )
end
group_exists?(attribs, dir_info) click to toggle source
# File lib/open_directory_utils/commands_groups.rb, line 30
def group_exists?(attribs, dir_info)
  group_get_info(attribs, dir_info)
end
group_get_info(attribs, dir_info) click to toggle source

dscl . read /Groups/ladmins

# File lib/open_directory_utils/commands_groups.rb, line 18
def group_get_info(attribs, dir_info)
  attribs = group_record_name_alternatives(attribs)

  check_critical_attribute( attribs, :record_name )

  command = {action: 'read', scope: 'Groups', value: nil}
  user_attrs = attribs.merge(command)

  dscl( user_attrs, dir_info )
end
Also aliased as: group_info
group_info(attribs, dir_info)
Alias for: group_get_info
group_set_primary_group_id(attribs, dir_info) click to toggle source
# File lib/open_directory_utils/commands_groups.rb, line 85
def group_set_primary_group_id(attribs, dir_info)
  attribs = group_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs[:primary_group_id]
  attribs[:value] = attribs[:value] || attribs[:group_number]
  attribs[:value] = attribs[:value] || attribs[:groupnumber]
  attribs[:value] = attribs[:value] || attribs[:gidnumber]
  attribs[:value] = attribs[:value] || attribs[:group_id]

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :group_id )

  command = {action: 'create', scope: 'Groups', attribute: 'PrimaryGroupID'}
  user_attrs = attribs.merge(command)

  dscl( user_attrs, dir_info )
end
group_set_real_name(attribs, dir_info) click to toggle source
# File lib/open_directory_utils/commands_groups.rb, line 103
def group_set_real_name(attribs, dir_info)
  attribs = group_record_name_alternatives(attribs)

  attribs[:value] = attribs[:value] || attribs[:real_name]
  attribs[:value] = attribs[:value] || attribs[:long_name]
  attribs[:value] = attribs[:value] || attribs[:longname]
  attribs[:value] = attribs[:value] || attribs[:full_name]
  attribs[:value] = attribs[:value] || attribs[:fullname]
  attribs[:value] = attribs[:value] || attribs[:name]
  attribs[:value] = attribs[:value] || attribs[:group_name]
  attribs[:value] = attribs[:value] || attribs[:groupname]
  attribs[:value] = attribs[:value] || attribs[:gid]
  attribs[:value] = attribs[:value] || attribs[:cn]

  check_critical_attribute( attribs, :record_name )
  check_critical_attribute( attribs, :value, :real_name )

  command = {action: 'create', scope: 'Groups', attribute: 'RealName'}
  user_attrs = attribs.merge(command)

  dscl( user_attrs, dir_info )
end
user_in_group?(attribs, dir_info) click to toggle source

dscl . -read /Groups/ladmins TODO: switch to dseditgroup -o checkmember -m username groupname dseditgroup -o checkmember -m btihen employee

yes btihen is a member of employee

dseditgroup -o checkmember -m btihen student

no btihen is NOT a member of student
# File lib/open_directory_utils/commands_groups.rb, line 40
def user_in_group?(attribs, dir_info)
  temp       = user_record_name_alternatives(attribs)
  username   = temp[:record_name]
  # pp username
  # pp attribs

  attribs    = group_record_name_alternatives(attribs)
  # groupname  = attribs[:record_name]
  attribs[:value] = username
  # pp attribs

  check_critical_attribute( attribs, :value, :username )
  check_critical_attribute( attribs, :record_name, :groupname )
  attribs    = tidy_attribs(attribs)

  command    = {action: 'read', scope: 'Groups', attribute: nil, value: nil}
  cmd_attribs = attribs.merge(command)

  dscl( cmd_attribs, dir_info )
end