initial commit of file from CVS for smeserver-dirty-tools on Sat Sep 7 20:17:20 AEST 2024
This commit is contained in:
55
root/sbin/e-smith/dt-lock-account
Executable file
55
root/sbin/e-smith/dt-lock-account
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/perl
|
||||
# (C) 2007 Michael Weinberger
|
||||
# See http://wiki.contribs.org/Dirty_Tools for full documentation
|
||||
|
||||
use strict;
|
||||
use esmith::AccountsDB;
|
||||
use Getopt::Long;
|
||||
|
||||
|
||||
my %opts;
|
||||
my $getRes = GetOptions(
|
||||
"unlock"=>\$opts{'unlock'},
|
||||
);
|
||||
|
||||
( my $myself = $0) =~ s/.*\///;
|
||||
$opts{'unlock'} = ($myself eq 'dt-unlock-account' or $opts{'unlock'}) ? 1 : 0;
|
||||
|
||||
my $account=$ARGV[0];
|
||||
|
||||
die "Usage: dt-lock-account account\n dt-unlock-account account\n" if not $account;
|
||||
|
||||
if( $account eq 'admin' )
|
||||
{
|
||||
print "not applicable to account 'admin'\n"; exit -1;
|
||||
}
|
||||
|
||||
my $accountdb = esmith::AccountsDB->open or die "Could not open account db";
|
||||
|
||||
my $acct = $accountdb->get($account);
|
||||
|
||||
|
||||
if (not $acct or $acct->prop('type') ne "user")
|
||||
{
|
||||
print "User '$account' does not exist.\n";
|
||||
exit -1;
|
||||
}
|
||||
|
||||
if( $opts{'unlock'} )
|
||||
{
|
||||
my $status=system("/usr/bin/passwd", "-u", $account)>>8;
|
||||
if( $status==254 )
|
||||
{
|
||||
print "Account $account has never been assigned a password. Cannot unlock.\n";
|
||||
exit -1;
|
||||
}
|
||||
die "Error running /usr/bin/passwd command to unlock account $account" if $status>0 and $status!=254;
|
||||
system("/usr/bin/smbpasswd", "-e", $account) == 0
|
||||
or die "Error running /usr/bin/smbpasswd command to unlock account $account";
|
||||
$acct->set_prop('PasswordSet', 'yes');
|
||||
}
|
||||
else
|
||||
{
|
||||
not system("/sbin/e-smith/signal-event", "user-lock", $account)
|
||||
or die "Error occurred while locking account '$account'";
|
||||
}
|
Reference in New Issue
Block a user