open_directory_utils 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/Gemfile.lock +1 -1
- data/README.md +14 -6
- data/examples/connection-sample.yml +6 -0
- data/examples/create_od_users.rb +45 -0
- data/examples/users-sample.yml +17 -0
- data/lib/open_directory_utils/clean_check.rb +10 -0
- data/lib/open_directory_utils/commands_base.rb +125 -0
- data/lib/open_directory_utils/commands_group.rb +53 -162
- data/lib/open_directory_utils/commands_user_attribs_ldap.rb +23 -79
- data/lib/open_directory_utils/commands_user_attribs_od.rb +188 -100
- data/lib/open_directory_utils/connection.rb +76 -33
- data/lib/open_directory_utils/dscl.rb +1 -1
- data/lib/open_directory_utils/version.rb +1 -1
- metadata +6 -2
@@ -1,5 +1,6 @@
|
|
1
1
|
require "open_directory_utils/dscl"
|
2
2
|
require "open_directory_utils/clean_check"
|
3
|
+
require "open_directory_utils/commands_base"
|
3
4
|
|
4
5
|
module OpenDirectoryUtils
|
5
6
|
|
@@ -9,10 +10,11 @@ module OpenDirectoryUtils
|
|
9
10
|
# * https://superuser.com/questions/592921/mac-osx-users-vs-dscl-command-to-list-user/621055?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
|
10
11
|
module CommandsUserAttribsLdap
|
11
12
|
|
12
|
-
include OpenDirectoryUtils::Dscl
|
13
|
+
# include OpenDirectoryUtils::Dscl
|
13
14
|
include OpenDirectoryUtils::CleanCheck
|
15
|
+
include OpenDirectoryUtils::CommandsBase
|
14
16
|
|
15
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
17
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER cn "$NAME"
|
16
18
|
def user_set_common_name(attribs, dir_info)
|
17
19
|
attribs = user_record_name_alternatives(attribs)
|
18
20
|
|
@@ -34,7 +36,7 @@ module OpenDirectoryUtils
|
|
34
36
|
end
|
35
37
|
alias_method :user_set_cn, :user_set_common_name
|
36
38
|
|
37
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
39
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME givenName "$VALUE"
|
38
40
|
def user_set_given_name(attribs, dir_info)
|
39
41
|
attribs = user_record_name_alternatives(attribs)
|
40
42
|
|
@@ -51,7 +53,7 @@ module OpenDirectoryUtils
|
|
51
53
|
dscl( user_attrs, dir_info )
|
52
54
|
end
|
53
55
|
|
54
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
56
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME sn "$VALUE"
|
55
57
|
def user_set_surname(attribs, dir_info)
|
56
58
|
attribs = user_record_name_alternatives(attribs)
|
57
59
|
|
@@ -107,7 +109,7 @@ module OpenDirectoryUtils
|
|
107
109
|
dscl( user_attrs, dir_info )
|
108
110
|
end
|
109
111
|
|
110
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
112
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME homedirectory "$VALUE"
|
111
113
|
def user_set_home_directory(attribs, dir_info)
|
112
114
|
attribs = user_record_name_alternatives(attribs)
|
113
115
|
|
@@ -125,7 +127,7 @@ module OpenDirectoryUtils
|
|
125
127
|
dscl( user_attrs, dir_info )
|
126
128
|
end
|
127
129
|
|
128
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
130
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME loginShell "$VALUE"
|
129
131
|
def user_set_login_shell(attribs, dir_info)
|
130
132
|
attribs = user_record_name_alternatives(attribs)
|
131
133
|
|
@@ -146,9 +148,9 @@ module OpenDirectoryUtils
|
|
146
148
|
|
147
149
|
# OTHER FIELDS
|
148
150
|
#####################
|
149
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
150
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
151
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
151
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME mail "$VALUE"
|
152
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME email "$VALUE"
|
153
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-user-mailattribute "$VALUE"
|
152
154
|
def user_set_first_email(attribs, dir_info)
|
153
155
|
attribs = user_record_name_alternatives(attribs)
|
154
156
|
|
@@ -218,117 +220,59 @@ module OpenDirectoryUtils
|
|
218
220
|
dscl( user_attrs, dir_info )
|
219
221
|
end
|
220
222
|
|
221
|
-
#
|
222
|
-
# https://serverfault.com/questions/20702/how-do-i-create-user-accounts-from-the-terminal-in-mac-os-x-10-5?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
|
223
|
-
# https://superuser.com/questions/1154564/how-to-create-a-user-from-the-macos-command-line
|
224
|
-
def user_create_min(attribs, dir_info)
|
225
|
-
attribs = user_record_name_alternatives(attribs)
|
226
|
-
|
227
|
-
check_critical_attribute( attribs, :record_name )
|
228
|
-
attribs = tidy_attribs(attribs)
|
229
|
-
|
230
|
-
command = {action: 'create', scope: 'Users', value: nil, attribute: nil}
|
231
|
-
user_attrs = attribs.merge(command)
|
232
|
-
|
233
|
-
dscl( user_attrs, dir_info )
|
234
|
-
|
235
|
-
answer = []
|
236
|
-
attribs[:value] = nil
|
237
|
-
answer << dscl( user_attrs, dir_info )
|
238
|
-
attribs[:value] = nil
|
239
|
-
answer << user_set_password(attribs, dir_info)
|
240
|
-
attribs[:value] = nil
|
241
|
-
answer << user_set_real_name(attribs, dir_info)
|
242
|
-
|
243
|
-
return answer
|
244
|
-
end
|
245
|
-
|
246
|
-
# https://images.apple.com/server/docs/Command_Line.pdf
|
247
|
-
# https://serverfault.com/questions/20702/how-do-i-create-user-accounts-from-the-terminal-in-mac-os-x-10-5?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
|
248
|
-
# https://superuser.com/questions/1154564/how-to-create-a-user-from-the-macos-command-line
|
249
|
-
def user_create_full(attribs, dir_info)
|
250
|
-
attribs = user_record_name_alternatives(attribs)
|
251
|
-
|
252
|
-
check_critical_attribute( attribs, :record_name )
|
253
|
-
attribs = tidy_attribs(attribs).dup
|
254
|
-
|
255
|
-
answer = []
|
256
|
-
attribs[:value] = nil
|
257
|
-
answer << user_create_min(attribs, dir_info)
|
258
|
-
attribs[:value] = nil
|
259
|
-
answer << user_set_shell(attribs, dir_info)
|
260
|
-
attribs[:value] = nil
|
261
|
-
answer << user_set_first_name(attribs, dir_info)
|
262
|
-
attribs[:value] = nil
|
263
|
-
answer << user_set_last_name(attribs, dir_info)
|
264
|
-
attribs[:value] = nil
|
265
|
-
answer << user_set_unique_id(attribs, dir_info)
|
266
|
-
attribs[:value] = nil
|
267
|
-
answer << user_set_primary_group_id(attribs, dir_info)
|
268
|
-
attribs[:value] = nil
|
269
|
-
answer << user_set_nfs_home_directory(attribs, dir_info)
|
270
|
-
# skip email if non-sent
|
271
|
-
unless attribs[:email].nil? and attribs[:mail].nil? and attribs[:apple_user_mailattribute].nil?
|
272
|
-
attribs[:value] = nil
|
273
|
-
answer << user_set_email(attribs, dir_info)
|
274
|
-
end
|
275
|
-
|
276
|
-
return answer.flatten
|
277
|
-
end
|
278
|
-
|
279
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/$shortname_USERNAME mobile "$VALUE"
|
223
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME mobile "$VALUE"
|
280
224
|
def user_set_mobile_phone
|
281
225
|
end
|
282
226
|
|
283
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
227
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME telephoneNumber "$VALUE"
|
284
228
|
def user_set_work_phone
|
285
229
|
end
|
286
230
|
|
287
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
231
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME homePhone "$VALUE"
|
288
232
|
def user_set_home_phone
|
289
233
|
end
|
290
234
|
|
291
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
235
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME title "$VALUE"
|
292
236
|
def user_set_title
|
293
237
|
end
|
294
238
|
|
295
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
239
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME departmentNumber "$VALUE"
|
296
240
|
def user_set_department
|
297
241
|
end
|
298
242
|
|
299
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
243
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME street "$VALUE"
|
300
244
|
def user_set_street
|
301
245
|
end
|
302
246
|
alias_method :las_set_dorm, :user_set_street
|
303
247
|
alias_method :las_set_housing, :user_set_street
|
304
248
|
|
305
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
249
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname l "$VALUE"
|
306
250
|
def user_set_city
|
307
251
|
end
|
308
252
|
alias_method :las_, :user_set_city
|
309
253
|
|
310
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
254
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME st "$VALUE"
|
311
255
|
def user_set_state
|
312
256
|
end
|
313
257
|
alias_method :las_cultural_trip, :user_set_state
|
314
258
|
|
315
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
259
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME postalCode "$VALUE"
|
316
260
|
def user_set_postcode
|
317
261
|
end
|
318
262
|
alias_method :las_faculty_family, :user_set_postcode
|
319
263
|
|
320
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
264
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER c "$VALUE"
|
321
265
|
def user_set_country
|
322
266
|
end
|
323
267
|
|
324
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
268
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME labeledURI "$VALUE"
|
325
269
|
def user_set_homepage
|
326
270
|
end
|
327
271
|
alias_method :user_set_webpage, :user_set_homepage
|
328
272
|
alias_method :las_enrollment_date, :user_set_homepage
|
329
273
|
alias_method :las_begin_date, :user_set_homepage
|
330
274
|
|
331
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
275
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER description "$NAME"
|
332
276
|
def user_set_comments
|
333
277
|
end
|
334
278
|
alias_method :user_set_description, :user_set_comments
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require "open_directory_utils/dscl"
|
2
2
|
require "open_directory_utils/clean_check"
|
3
|
+
require "open_directory_utils/commands_base"
|
3
4
|
|
4
5
|
module OpenDirectoryUtils
|
5
6
|
|
@@ -9,8 +10,9 @@ module OpenDirectoryUtils
|
|
9
10
|
# * https://superuser.com/questions/592921/mac-osx-users-vs-dscl-command-to-list-user/621055?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
|
10
11
|
module CommandsUserAttribsOd
|
11
12
|
|
12
|
-
include OpenDirectoryUtils::Dscl
|
13
|
+
# include OpenDirectoryUtils::Dscl
|
13
14
|
include OpenDirectoryUtils::CleanCheck
|
15
|
+
include OpenDirectoryUtils::CommandsBase
|
14
16
|
|
15
17
|
# GET INFO
|
16
18
|
##########
|
@@ -39,16 +41,17 @@ module OpenDirectoryUtils
|
|
39
41
|
|
40
42
|
# CHANGE OD
|
41
43
|
###########
|
42
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
44
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER RealName "$VALUE"
|
43
45
|
def user_set_real_name(attribs, dir_info)
|
44
46
|
attribs = user_record_name_alternatives(attribs)
|
45
47
|
|
48
|
+
attribs[:value] = attribs[:value] || attribs[:common_name]
|
46
49
|
attribs[:value] = attribs[:value] || attribs[:cn]
|
47
50
|
attribs[:value] = attribs[:value] || attribs[:realname]
|
48
51
|
attribs[:value] = attribs[:value] || attribs[:real_name]
|
49
52
|
attribs[:value] = attribs[:value] || attribs[:fullname]
|
50
53
|
attribs[:value] = attribs[:value] || attribs[:full_name]
|
51
|
-
if attribs[:last_name]
|
54
|
+
if attribs[:last_name] or attribs[:first_name]
|
52
55
|
attribs[:value] = attribs[:value] || "#{attribs[:first_name]} #{attribs[:last_name]}"
|
53
56
|
end
|
54
57
|
attribs[:value] = attribs[:value] || attribs[:record_name]
|
@@ -63,12 +66,14 @@ module OpenDirectoryUtils
|
|
63
66
|
dscl( user_attrs, dir_info )
|
64
67
|
end
|
65
68
|
|
66
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
69
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME FirstName "$VALUE"
|
67
70
|
def user_set_first_name(attribs, dir_info)
|
68
71
|
attribs = user_record_name_alternatives(attribs)
|
69
72
|
|
70
73
|
attribs[:value] = attribs[:value] || attribs[:given_name]
|
74
|
+
attribs[:value] = attribs[:value] || attribs[:givenname]
|
71
75
|
attribs[:value] = attribs[:value] || attribs[:first_name]
|
76
|
+
attribs[:value] = attribs[:value] || attribs[:firstname]
|
72
77
|
|
73
78
|
check_critical_attribute( attribs, :record_name )
|
74
79
|
check_critical_attribute( attribs, :value, :first_name )
|
@@ -80,12 +85,13 @@ module OpenDirectoryUtils
|
|
80
85
|
dscl( user_attrs, dir_info )
|
81
86
|
end
|
82
87
|
|
83
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
88
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME LastName "$VALUE"
|
84
89
|
def user_set_last_name(attribs, dir_info)
|
85
90
|
attribs = user_record_name_alternatives(attribs)
|
86
91
|
|
87
92
|
attribs[:value] = attribs[:value] || attribs[:sn]
|
88
93
|
attribs[:value] = attribs[:value] || attribs[:surname]
|
94
|
+
attribs[:value] = attribs[:value] || attribs[:lastname]
|
89
95
|
attribs[:value] = attribs[:value] || attribs[:last_name]
|
90
96
|
|
91
97
|
check_critical_attribute( attribs, :record_name )
|
@@ -98,10 +104,10 @@ module OpenDirectoryUtils
|
|
98
104
|
dscl( user_attrs, dir_info )
|
99
105
|
end
|
100
106
|
|
101
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
107
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME NameSuffix "$VALUE"
|
102
108
|
def user_set_name_suffix
|
103
109
|
end
|
104
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
110
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-namesuffix "$VALUE"
|
105
111
|
def user_set_apple_name_suffix
|
106
112
|
end
|
107
113
|
|
@@ -125,27 +131,7 @@ module OpenDirectoryUtils
|
|
125
131
|
dscl( user_attrs, dir_info )
|
126
132
|
end
|
127
133
|
|
128
|
-
#
|
129
|
-
def user_set_primary_group_id(attribs, dir_info)
|
130
|
-
attribs = user_record_name_alternatives(attribs)
|
131
|
-
|
132
|
-
attribs[:value] = attribs[:value] || attribs[:group_id]
|
133
|
-
attribs[:value] = attribs[:value] || attribs[:gidnumber]
|
134
|
-
attribs[:value] = attribs[:value] || attribs[:groupnumber]
|
135
|
-
attribs[:value] = attribs[:value] || attribs[:group_number]
|
136
|
-
attribs[:value] = attribs[:value] || attribs[:primary_group_id]
|
137
|
-
|
138
|
-
check_critical_attribute( attribs, :record_name )
|
139
|
-
check_critical_attribute( attribs, :value, :group_id )
|
140
|
-
attribs = tidy_attribs(attribs)
|
141
|
-
|
142
|
-
command = {action: 'create', scope: 'Users', attribute: 'PrimaryGroupID'}
|
143
|
-
user_attrs = attribs.merge(command)
|
144
|
-
|
145
|
-
dscl( user_attrs, dir_info )
|
146
|
-
end
|
147
|
-
|
148
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1/ -create /Users/someuser NFSHomeDirectory /Users/someuser
|
134
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/someuser NFSHomeDirectory /Users/someuser
|
149
135
|
def user_set_nfs_home_directory(attribs, dir_info)
|
150
136
|
attribs = user_record_name_alternatives(attribs)
|
151
137
|
|
@@ -163,41 +149,6 @@ module OpenDirectoryUtils
|
|
163
149
|
dscl( user_attrs, dir_info )
|
164
150
|
end
|
165
151
|
|
166
|
-
# /usr/bin/pwpolicy -a diradmin -p "TopSecret" -u username -setpassword "AnotherSecret"
|
167
|
-
# /usr/bin/dscl -plist -u diradmin -P #{adminpw} /LDAPv3/127.0.0.1/ -passwd /Users/#{shortname} "#{passwd}"
|
168
|
-
def user_set_password(attribs, dir_info)
|
169
|
-
attribs = user_record_name_alternatives(attribs)
|
170
|
-
|
171
|
-
attribs[:value] = attribs[:value] || attribs[:password]
|
172
|
-
attribs[:value] = attribs[:value] || attribs[:passwd]
|
173
|
-
attribs[:value] = attribs[:value] || '*'
|
174
|
-
|
175
|
-
check_critical_attribute( attribs, :record_name )
|
176
|
-
check_critical_attribute( attribs, :value, :password )
|
177
|
-
attribs = tidy_attribs(attribs)
|
178
|
-
|
179
|
-
command = {action: 'passwd', scope: 'Users'}
|
180
|
-
user_attrs = attribs.merge(command)
|
181
|
-
|
182
|
-
dscl( user_attrs, dir_info )
|
183
|
-
end
|
184
|
-
# /usr/bin/dscl /LDAPv3/127.0.0.1 -auth #{shortname} "#{passwd}"
|
185
|
-
def user_verify_password(attribs, dir_info)
|
186
|
-
attribs = user_record_name_alternatives(attribs)
|
187
|
-
|
188
|
-
attribs[:value] = attribs[:value] || attribs[:password]
|
189
|
-
attribs[:value] = attribs[:value] || attribs[:passwd]
|
190
|
-
|
191
|
-
check_critical_attribute( attribs, :record_name )
|
192
|
-
check_critical_attribute( attribs, :value, :password )
|
193
|
-
attribs = tidy_attribs(attribs)
|
194
|
-
|
195
|
-
command = {action: 'auth', scope: 'Users'}
|
196
|
-
user_attrs = attribs.merge(command)
|
197
|
-
|
198
|
-
dscl( user_attrs, dir_info )
|
199
|
-
end
|
200
|
-
|
201
152
|
# sudo dscl . -create /Users/someuser UserShell /bin/bash
|
202
153
|
def user_set_shell(attribs, dir_info)
|
203
154
|
attribs = user_record_name_alternatives(attribs)
|
@@ -216,9 +167,9 @@ module OpenDirectoryUtils
|
|
216
167
|
dscl( user_attrs, dir_info )
|
217
168
|
end
|
218
169
|
|
219
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
220
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
221
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
170
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME mail "$VALUE"
|
171
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME email "$VALUE"
|
172
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-user-mailattribute "$VALUE"
|
222
173
|
def user_set_first_email(attribs, dir_info)
|
223
174
|
attribs = user_record_name_alternatives(attribs)
|
224
175
|
|
@@ -274,19 +225,120 @@ module OpenDirectoryUtils
|
|
274
225
|
return answer
|
275
226
|
end
|
276
227
|
|
277
|
-
# dscl . -
|
278
|
-
|
279
|
-
def user_delete(attribs, dir_info)
|
228
|
+
# sudo dscl . -create /Users/someuser PrimaryGroupID 80
|
229
|
+
def user_set_primary_group_id(attribs, dir_info)
|
280
230
|
attribs = user_record_name_alternatives(attribs)
|
281
231
|
|
232
|
+
attribs[:value] = attribs[:value] || attribs[:groupid]
|
233
|
+
attribs[:value] = attribs[:value] || attribs[:group_id]
|
234
|
+
attribs[:value] = attribs[:value] || attribs[:gidnumber]
|
235
|
+
attribs[:value] = attribs[:value] || attribs[:groupnumber]
|
236
|
+
attribs[:value] = attribs[:value] || attribs[:group_number]
|
237
|
+
attribs[:value] = attribs[:value] || attribs[:primarygroupid]
|
238
|
+
attribs[:value] = attribs[:value] || attribs[:primary_group_id]
|
239
|
+
|
282
240
|
check_critical_attribute( attribs, :record_name )
|
241
|
+
check_critical_attribute( attribs, :value, :group_id )
|
283
242
|
attribs = tidy_attribs(attribs)
|
284
243
|
|
285
|
-
command = {action: '
|
244
|
+
command = {action: 'create', scope: 'Users', attribute: 'PrimaryGroupID'}
|
245
|
+
user_attrs = attribs.merge(command)
|
246
|
+
|
247
|
+
dscl( user_attrs, dir_info )
|
248
|
+
end
|
249
|
+
|
250
|
+
# /usr/bin/pwpolicy -a diradmin -p "TopSecret" -u username -setpassword "AnotherSecret"
|
251
|
+
# /usr/bin/dscl -plist -u diradmin -P #{adminpw} /LDAPv3/127.0.0.1 -passwd /Users/#{shortname} "#{passwd}"
|
252
|
+
def user_set_password(attribs, dir_info)
|
253
|
+
attribs = user_record_name_alternatives(attribs)
|
254
|
+
|
255
|
+
attribs[:value] = attribs[:value] || attribs[:password]
|
256
|
+
attribs[:value] = attribs[:value] || attribs[:passwd]
|
257
|
+
attribs[:value] = attribs[:value] || '*'
|
258
|
+
|
259
|
+
check_critical_attribute( attribs, :record_name )
|
260
|
+
check_critical_attribute( attribs, :value, :password )
|
261
|
+
attribs = tidy_attribs(attribs)
|
262
|
+
|
263
|
+
command = {action: 'passwd', scope: 'Users'}
|
264
|
+
user_attrs = attribs.merge(command)
|
265
|
+
|
266
|
+
dscl( user_attrs, dir_info )
|
267
|
+
end
|
268
|
+
# /usr/bin/dscl /LDAPv3/127.0.0.1 -auth #{shortname} "#{passwd}"
|
269
|
+
def user_password_verified?(attribs, dir_info)
|
270
|
+
attribs = user_record_name_alternatives(attribs)
|
271
|
+
|
272
|
+
attribs[:value] = attribs[:value] || attribs[:password]
|
273
|
+
attribs[:value] = attribs[:value] || attribs[:passwd]
|
274
|
+
|
275
|
+
check_critical_attribute( attribs, :record_name )
|
276
|
+
check_critical_attribute( attribs, :value, :password )
|
277
|
+
attribs = tidy_attribs(attribs)
|
278
|
+
|
279
|
+
command = {action: 'auth', scope: 'Users'}
|
286
280
|
user_attrs = attribs.merge(command)
|
287
281
|
|
288
282
|
dscl( user_attrs, dir_info )
|
289
283
|
end
|
284
|
+
alias_method :user_password_ok?, :user_password_verified?
|
285
|
+
|
286
|
+
# /usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -setpolicy "isDisabled=0"
|
287
|
+
def user_enable_login(attribs, dir_info)
|
288
|
+
attribs = user_record_name_alternatives(attribs)
|
289
|
+
|
290
|
+
check_critical_attribute( attribs, :record_name )
|
291
|
+
attribs = tidy_attribs(attribs)
|
292
|
+
|
293
|
+
command = {attribute: 'enableuser', value: nil}
|
294
|
+
params = command.merge(attribs)
|
295
|
+
pwpolicy(params, dir_info)
|
296
|
+
end
|
297
|
+
# /usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -setpolicy "isDisabled=1"
|
298
|
+
def user_disable_login(attribs, dir_info)
|
299
|
+
attribs = user_record_name_alternatives(attribs)
|
300
|
+
|
301
|
+
check_critical_attribute( attribs, :record_name )
|
302
|
+
attribs = tidy_attribs(attribs)
|
303
|
+
|
304
|
+
command = {attribute: 'disableuser', value: nil}
|
305
|
+
params = command.merge(attribs)
|
306
|
+
pwpolicy(params, dir_info)
|
307
|
+
end
|
308
|
+
|
309
|
+
def user_add_to_group(attribs, dir_info)
|
310
|
+
attribs = user_record_name_alternatives(attribs)
|
311
|
+
|
312
|
+
attribs[:value] = attribs[:group_membership]
|
313
|
+
attribs[:value] = attribs[:value] || attribs[:groupmembership]
|
314
|
+
attribs[:value] = attribs[:value] || attribs[:group_name]
|
315
|
+
attribs[:value] = attribs[:value] || attribs[:groupname]
|
316
|
+
attribs[:value] = attribs[:value] || attribs[:gid]
|
317
|
+
|
318
|
+
check_critical_attribute( attribs, :record_name, :username )
|
319
|
+
check_critical_attribute( attribs, :value, :groupname )
|
320
|
+
attribs = tidy_attribs(attribs)
|
321
|
+
command = { operation: 'edit', action: 'add', type: 'user'}
|
322
|
+
user_attrs = attribs.merge(command)
|
323
|
+
|
324
|
+
dseditgroup( user_attrs, dir_info )
|
325
|
+
end
|
326
|
+
# module_function :user_add_to_group
|
327
|
+
# alias_method :user_set_group_memebership, :user_add_to_group
|
328
|
+
|
329
|
+
|
330
|
+
# /usr/bin/pwpolicy -a diradmin -p A-B1g-S3cret -u $shortname_USERNAME -getpolicy
|
331
|
+
def user_get_policy(attribs, dir_info)
|
332
|
+
attribs = user_record_name_alternatives(attribs)
|
333
|
+
|
334
|
+
check_critical_attribute( attribs, :record_name )
|
335
|
+
attribs = tidy_attribs(attribs)
|
336
|
+
|
337
|
+
command = {attribute: 'getpolicy', value: nil}
|
338
|
+
params = command.merge(attribs)
|
339
|
+
pwpolicy(params, dir_info)
|
340
|
+
end
|
341
|
+
alias_method :user_login_enabled?, :user_get_policy
|
290
342
|
|
291
343
|
# https://images.apple.com/server/docs/Command_Line.pdf
|
292
344
|
# https://serverfault.com/questions/20702/how-do-i-create-user-accounts-from-the-terminal-in-mac-os-x-10-5?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
|
@@ -308,6 +360,11 @@ module OpenDirectoryUtils
|
|
308
360
|
attribs[:value] = nil
|
309
361
|
answer << user_set_password(attribs, dir_info)
|
310
362
|
attribs[:value] = nil
|
363
|
+
answer << user_enable_login(attribs, dir_info) if
|
364
|
+
attribs[:enable]&.eql? 'true' or attribs[:enable]&.eql? true
|
365
|
+
answer << user_disable_login(attribs, dir_info) unless
|
366
|
+
attribs[:enable]&.eql? 'true' or attribs[:enable]&.eql? true
|
367
|
+
attribs[:value] = nil
|
311
368
|
answer << user_set_real_name(attribs, dir_info)
|
312
369
|
|
313
370
|
return answer
|
@@ -320,51 +377,82 @@ module OpenDirectoryUtils
|
|
320
377
|
attribs = user_record_name_alternatives(attribs)
|
321
378
|
|
322
379
|
check_critical_attribute( attribs, :record_name )
|
323
|
-
attribs
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
attribs
|
329
|
-
|
330
|
-
attribs
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
attribs[:
|
337
|
-
|
338
|
-
|
339
|
-
|
380
|
+
# attribs = tidy_attribs(attribs).dup
|
381
|
+
attribs = tidy_attribs(attribs)
|
382
|
+
|
383
|
+
answer = []
|
384
|
+
attribs[:value] = nil
|
385
|
+
answer << user_create_min(attribs, dir_info)
|
386
|
+
attribs[:value] = nil
|
387
|
+
answer << user_set_shell(attribs, dir_info)
|
388
|
+
if attribs[:first_name] or attribs[:firstname] or attribs[:given_name] or
|
389
|
+
attribs[:givenname]
|
390
|
+
attribs[:value] = nil
|
391
|
+
answer << user_set_first_name(attribs, dir_info)
|
392
|
+
end
|
393
|
+
if attribs[:last_name] or attribs[:lastname] or attribs[:sn] or
|
394
|
+
attribs[:surname]
|
395
|
+
attribs[:value] = nil
|
396
|
+
answer << user_set_last_name(attribs, dir_info)
|
397
|
+
end
|
398
|
+
attribs[:value] = nil
|
399
|
+
answer << user_set_unique_id(attribs, dir_info)
|
400
|
+
attribs[:value] = nil
|
401
|
+
answer << user_set_primary_group_id(attribs, dir_info)
|
402
|
+
attribs[:value] = nil
|
403
|
+
answer << user_set_nfs_home_directory(attribs, dir_info)
|
340
404
|
# skip email if non-sent
|
341
|
-
|
405
|
+
if attribs[:email] or attribs[:mail] or attribs[:apple_user_mailattribute]
|
342
406
|
attribs[:value] = nil
|
343
407
|
answer << user_set_email(attribs, dir_info)
|
344
408
|
end
|
409
|
+
# TODO add to groups without error - if group present
|
410
|
+
# "<main> attribute status: eDSSchemaError\n" +
|
411
|
+
# "<dscl_cmd> DS Error: -14142 (eDSSchemaError)"]
|
412
|
+
# # enroll in a group membership if info present
|
413
|
+
if attribs[:group_name] or attribs[:groupname] or attribs[:gid] or
|
414
|
+
attribs[:group_membership] or attribs[:groupmembership]
|
415
|
+
attribs[:value] = nil
|
416
|
+
answer << user_add_to_group(attribs, dir_info)
|
417
|
+
end
|
345
418
|
|
346
419
|
return answer.flatten
|
347
420
|
end
|
421
|
+
alias_method :user_create, :user_create_full
|
422
|
+
|
423
|
+
# dscl . -delete /Users/yourUserName
|
424
|
+
# https://tutorialforlinux.com/2011/09/15/delete-users-and-groups-from-terminal/
|
425
|
+
def user_delete(attribs, dir_info)
|
426
|
+
attribs = user_record_name_alternatives(attribs)
|
427
|
+
|
428
|
+
check_critical_attribute( attribs, :record_name )
|
429
|
+
attribs = tidy_attribs(attribs)
|
430
|
+
|
431
|
+
command = {action: 'delete', scope: 'Users', value: nil, attribute: nil}
|
432
|
+
user_attrs = attribs.merge(command)
|
433
|
+
|
434
|
+
dscl( user_attrs, dir_info )
|
435
|
+
end
|
348
436
|
|
349
|
-
# 1st keyword -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
350
|
-
# other keywords -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
437
|
+
# 1st keyword -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-keyword "$VALUE"
|
438
|
+
# other keywords -- /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword "$VALUE"
|
351
439
|
def user_set_first_keyword
|
352
440
|
end
|
353
441
|
|
354
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
442
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$shortname_USERNAME apple-keyword "$VALUE"
|
355
443
|
def user_append_keyword
|
356
444
|
end
|
357
445
|
|
358
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
446
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-company "$VALUE"
|
359
447
|
def user_set_company
|
360
448
|
end
|
361
449
|
alias_method :las_program_info, :user_set_company
|
362
450
|
|
363
|
-
# first - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
364
|
-
# others - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
365
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
366
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
367
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
451
|
+
# first - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle "$VALUE"
|
452
|
+
# others - /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle "$VALUE"
|
453
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$USER apple-imhandle "AIM:created: $CREATE"
|
454
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle "ICQ:start: $START"
|
455
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -append /Users/$USER apple-imhandle "MSN:end: $END"
|
368
456
|
def user_set_chat
|
369
457
|
end
|
370
458
|
alias_method :user_set_chat_channels, :user_set_chat
|
@@ -372,19 +460,19 @@ module OpenDirectoryUtils
|
|
372
460
|
alias_method :las_start_date, :user_set_chat
|
373
461
|
alias_method :las_end_date, :user_set_chat
|
374
462
|
|
375
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
463
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-webloguri "$VALUE"
|
376
464
|
def user_set_blog
|
377
465
|
end
|
378
466
|
alias_method :user_set_weblog, :user_set_blog
|
379
467
|
alias_method :las_sync_date, :user_set_blog
|
380
468
|
|
381
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
469
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-organizationinfo "$VALUE"
|
382
470
|
def user_set_org_info
|
383
471
|
end
|
384
472
|
alias_method :las_set_organizational_info, :user_set_org_info
|
385
473
|
alias_method :las_link_student_to_parent, :user_set_org_info
|
386
474
|
|
387
|
-
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1
|
475
|
+
# /usr/bin/dscl -u diradmin -P A-B1g-S3cret /LDAPv3/127.0.0.1 -create /Users/$shortname_USERNAME apple-relationships "$VALUE"
|
388
476
|
def user_set_relationships
|
389
477
|
end
|
390
478
|
alias_method :las_link_parent_to_student, :user_set_relationships
|