1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00
samba-mirror/source4/setup/newuser
Andrew Tridgell 5196640c2c r15518: the 'password' option in POPT_COMMON_CREDENTIALS was conflicting with
the password option in newuser. Move the local options above the
global options to fix.
(This used to be commit 2adcd4ff4e)
2007-10-10 14:05:45 -05:00

81 lines
1.5 KiB
Plaintext
Executable File

#!/bin/sh
exec smbscript "$0" ${1+"$@"}
/*
add a new user to a Samba4 server
Copyright Andrew Tridgell 2005
Released under the GNU GPL v2 or later
*/
options = GetOptions(ARGV,
"POPT_AUTOHELP",
'username=s',
'unixname=s',
'password=s',
"POPT_COMMON_SAMBA",
"POPT_COMMON_VERSION",
"POPT_COMMON_CREDENTIALS",
'quiet');
if (options == undefined) {
println("Failed to parse options");
return -1;
}
libinclude("base.js");
libinclude("provision.js");
/*
print a message if quiet is not set
*/
function message()
{
if (options["quiet"] == undefined) {
print(vsprintf(arguments));
}
}
/*
show some help
*/
function ShowHelp()
{
print("
Samba4 newuser
newuser [options]
--username USERNAME choose new username
--unixname USERNAME choose unix name of new user
--password PASSWORD set password
You must provide at least a username
");
exit(1);
}
if (options['username'] == undefined) {
ShowHelp();
}
if (options['password'] == undefined) {
random_init(local);
options.password = randpass(12);
printf("chose random password %s\n", options.password);
}
if (options['unixname'] == undefined) {
options.unixname = options.username;
}
var nss = nss_init();
if (nss.getpwnam(options.unixname) == undefined) {
printf("ERROR: Unix user '%s' does not exist\n", options.unixname);
exit(1);
}
var creds = options.get_credentials();
var system_session = system_session();
newuser(options.username, options.unixname, options.password, message, system_session, creds);
return 0;