236
236
'mandrake-9.0' => $rh_logindefs_defaults,
237
237
'pld-1.0' => $rh_logindefs_defaults,
238
238
'fedora-1' => $rh_logindefs_defaults,
239
'debian-3.0' => $rh_logindefs_defaults,
239
'debian' => $rh_logindefs_defaults,
240
240
'vine-3.0' => $rh_logindefs_defaults,
241
241
'gentoo' => $gentoo_logindefs_defaults,
242
242
'archlinux' => $gentoo_logindefs_defaults,
444
444
if ($Utils::Backend::tool{"system"} eq "FreeBSD")
446
$command = "$cmd_pw userdel -n \'" . $$user[$LOGIN] . "\' ";
446
@command = ($cmd_pw, "userdel", "-n", $$user[$LOGIN]);
450
450
if ($cmd_deluser)
452
$command = "$cmd_deluser '". $$user[$LOGIN] . "'";
452
@command = ($cmd_deluser, $$user[$LOGIN]);
456
$command = "$cmd_userdel \'" . $$user[$LOGIN] . "\'";
456
@command = ($cmd_userdel, $$user[$LOGIN]);
460
&Utils::File::run ($command);
460
&Utils::File::run (@command);
463
463
sub change_user_chfn
465
465
my ($login, $old_comment, $comment) = @_;
466
466
my ($fname, $office, $office_phone, $home_phone);
469
469
return if !$login;
475
475
if ($Utils::Backend::tool{"system"} eq "FreeBSD")
477
$command = "$cmd_pw usermod -n " . $login . " -c \'" . $str . "\'";
477
@command = ($cmd_pw, "usermod", "-n", $login,
481
$command = "$cmd_usermod -c \'" . $str . "\' " . $login;
482
@command = ($cmd_usermod, "-c", $str, $login);
484
&Utils::File::run ($command);
485
&Utils::File::run (@command);
487
488
# modifies /etc/shadow directly, not good practice,
517
518
my ($login, $password) = @_;
518
my ($pwdpipe, $command);
520
521
if ($Utils::Backend::tool{"system"} eq "FreeBSD")
523
524
$command = "$cmd_pw usermod -H 0";
524
525
$pwdpipe = &Utils::File::run_pipe_write ($command);
525
526
print $pwdpipe $password;
534
$command = "$cmd_usermod " .
535
" -p '" . $password . "' " . $login;
536
@command = ($cmd_usermod, "-p", $password, $login);
537
&Utils::File::run ($command);
538
&Utils::File::run (@command);
553
554
# FreeBSD doesn't create the home directory
554
555
$home = $$user[$HOME];
555
&Utils::File::run ("$tool_mkdir -p $home");
556
&Utils::File::run ($tool_mkdir, "-p", $home);
557
558
$command = "$cmd_pw useradd " .
558
559
" -n \'" . $$user[$LOGIN] . "\'" .
562
563
" -s \'" . $$user[$SHELL] . "\'" .
563
564
" -H 0"; # pw(8) reads password from STDIN
566
# @command = ($cmd_pw, "useradd", "-n", $$user[$LOGIN],
567
# "-u", $$user[$UID],
568
# "-d", $$user[$HOME],
569
# "-g", $$user[$GID],
570
# "-s", $$user[$SHELL],
571
# "-H", "0"); # pw(8) reads password from STDIN
565
573
$pwdpipe = &Utils::File::run_pipe_write ($command);
566
574
print $pwdpipe $$user[$PASSWD];
567
575
&Utils::File::close_file ($pwdpipe);
571
579
$home_parents = $$user[$HOME];
572
580
$home_parents =~ s/\/+[^\/]+\/*$//;
573
&Utils::File::run ("$tool_mkdir -p $home_parents");
575
$command = "$cmd_useradd" .
576
" -d \'" . $$user[$HOME] . "\'" .
577
" -g \'" . $$user[$GID] . "\'" .
578
" -s \'" . $$user[$SHELL] . "\'" .
579
" -u \'" . $$user[$UID] . "\'" .
580
" \'" . $$user[$LOGIN] . "\'";
582
&Utils::File::run ($command);
581
&Utils::File::run ($tool_mkdir, "-p", $home_parents);
583
@command = ($cmd_useradd, "-d", $$user[$HOME],
585
"-s", $$user[$SHELL],
589
&Utils::File::run (@command);
583
590
&modify_shadow_password ($$user[$LOGIN], $$user[$PASSWD]);
587
594
$home_parents = $$user[$HOME];
588
595
$home_parents =~ s/\/+[^\/]+\/*$//;
589
&Utils::File::run ("$tool_mkdir -p $home_parents");
596
&Utils::File::run ($tool_mkdir, "-p", $home_parents);
591
598
if ($cmd_adduser &&
592
599
$Utils::Backend::tool{"platform"} !~ /^slackware/ &&
597
604
# use adduser if available and valid (slackware one is b0rk)
598
605
# set empty gecos fields and password, they will be filled out later
599
$command = "$cmd_adduser --gecos '' --disabled-password" .
600
" --home \'" . $$user[$HOME] . "\'" .
601
" --gid \'" . $$user[$GID] . "\'" .
602
" --shell \'" . $$user[$SHELL] . "\'" .
603
" --uid \'" . $$user[$UID] . "\'" .
604
" \'" . $$user[$LOGIN] . "\'";
606
@command = ($cmd_adduser, "--gecos", "",
607
"--disabled-password",
608
"--home", $$user[$HOME],
609
"--gid", $$user[$GID],
610
"--shell", $$user[$SHELL],
611
"--uid", $$user[$UID],
606
&Utils::File::run ($command);
614
&Utils::File::run (@command);
608
616
# password can't be set in non-interactive
609
617
# mode with adduser, call usermod instead
610
$command = "$cmd_usermod " .
611
" -p '" . $$user[$PASSWD] . "' " . $$user[$LOGIN];
618
@command = ($cmd_usermod, "-p", $$user[$PASSWD], $$user[$LOGIN]);
613
&Utils::File::run ($command);
620
&Utils::File::run (@command);
617
624
# fallback to useradd
618
$command = "$cmd_useradd -m" .
619
" -d \'" . $$user[$HOME] . "\'" .
620
" -g \'" . $$user[$GID] . "\'" .
621
" -p \'" . $$user[$PASSWD] . "\'" .
622
" -s \'" . $$user[$SHELL] . "\'" .
623
" -u \'" . $$user[$UID] . "\'" .
624
" \'" . $$user[$LOGIN] . "\'";
625
@command = ($cmd_useradd, "-m",
628
"-p", $$user[$PASSWD],
629
"-s", $$user[$SHELL],
626
&Utils::File::run ($command);
633
&Utils::File::run (@command);
653
660
elsif ($Utils::Backend::tool{"system"} eq "SunOS")
655
$command = "$cmd_usermod" .
656
" -d \'" . $$new_user[$HOME] . "\'" .
657
" -g \'" . $$new_user[$GID] . "\'" .
658
" -l \'" . $$new_user[$LOGIN] . "\'" .
659
" -s \'" . $$new_user[$SHELL] . "\'" .
660
" -u \'" . $$new_user[$UID] . "\'" .
661
" \'" . $$old_user[$LOGIN] . "\'";
662
@command = ($cmd_usermod, "-d", $$new_user[$HOME],
663
"-g", $$new_user[$GID],
664
"-l", $$new_user[$LOGIN],
665
"-s", $$new_user[$SHELL],
666
"-u", $$new_user[$UID],
663
&Utils::File::run ($command);
669
&Utils::File::run (@command);
664
670
&modify_shadow_password ($$new_user[$LOGIN], $$new_user[$PASSWD]);
668
$command = "$cmd_usermod" .
669
" -d \'" . $$new_user[$HOME] . "\'" .
670
" -g \'" . $$new_user[$GID] . "\'" .
671
" -l \'" . $$new_user[$LOGIN] . "\'" .
672
" -p \'" . $$new_user[$PASSWD] . "\'" .
673
" -s \'" . $$new_user[$SHELL] . "\'" .
674
" -u \'" . $$new_user[$UID] . "\'" .
675
" \'" . $$old_user[$LOGIN] . "\'";
674
@command = ($cmd_usermod, "-d", $$new_user[$HOME],
675
"-g", $$new_user[$GID],
676
"-l", $$new_user[$LOGIN],
677
"-s", $$new_user[$SHELL],
678
"-u", $$new_user[$UID],
677
681
&Utils::File::run ($command);