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
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
# 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
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
# File lib/open_directory_utils/commands_groups.rb, line 30 def group_exists?(attribs, dir_info) group_get_info(attribs, dir_info) end
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
# 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
# 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
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