Ok to switch from Crypt to Shadow Password?
Ryan Schmidt
ryandesign at macports.org
Tue Jan 1 20:39:54 PST 2008
On Jan 1, 2008, at 22:32, Jordan K. Hubbard wrote:
> On Jan 1, 2008, at 8:01 PM, Tabitha McNerney wrote:
>
>> Jordan, appreciate the further clarity. Quick question then (just
>> to make sure I'm ultra clear) -- even if a MacPort installs a new
>> entry in the local directory domain with a "Crypt Password" type,
>> what you're saying is that in reality, under Leopard Server (and
>> the past few versions of Mac OS X Server) this password is a
>> Shadow Password disguised to the system as a Crypt Password? I ask
>> because using Workgroup Manager on Leopard Server, I can select
>> the user that was installed by the MacPort (for example, take the
>> openldap MacPort which installs a local directory domain entry
>> with the username "ldap", UID "500" and a User Password Type of
>> "Crypt Password" and I can select the pop-up menu with the "Crypt
>> Password" selection and change the type to either "Shadow
>> Password" or "OpenDirectory" because I am also running an
>> OpenDirectory Master on the same machine).
>
> I'm not sure how MacPorts installs user records on Leopard (I've
> never looked). Presumably, it just drops a plist file into /var/db/
> dslocal/nodes/Default/users since that's all you need to do in
> Leopard. The contents of that plist file, however, can specify a
> number of different password types - "it all depends" is about the
> best answer I can give you there. You should look at the
> authentication_authority array in the user plists you're wondering
> about and verify that they're doing whatever it is you want them to
> do (this is an array value, so there are multiple options here).
> I'd be surprised if MacPorts was using some obsolete password
> types, but you never know I guess.
It looks like MacPorts uses dscl to create users and groups, on all
versions of Mac OS X. See src/port1.0/portutil.tcl.
proc adduser {name args} {
global os.platform
set passwd {*}
set uid [nextuid]
set gid [existsgroup nogroup]
set realname ${name}
set home /dev/null
set shell /dev/null
foreach arg $args {
if {[regexp {([a-z]*)=(.*)} $arg match key val]} {
regsub -all " " ${val} "\\ " val
set $key $val
}
}
if {[existsuser ${name}] != 0 || [existsuser ${uid}] != 0} {
return
}
if {${os.platform} eq "darwin"} {
exec dscl . -create /Users/${name} Password ${passwd}
exec dscl . -create /Users/${name} UniqueID ${uid}
exec dscl . -create /Users/${name} PrimaryGroupID ${gid}
exec dscl . -create /Users/${name} RealName ${realname}
exec dscl . -create /Users/${name} NFSHomeDirectory ${home}
exec dscl . -create /Users/${name} UserShell ${shell}
} else {
# XXX adduser is only available for darwin, add more support
here
ui_warn "WARNING: adduser is not implemented on $
{os.platform}."
ui_warn "The requested user was not created."
}
}
More information about the macports-users
mailing list