/usr/bin/gbrowse_change_passwd is in gbrowse 2.54+dfsg-2build1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #!/usr/bin/perl
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
if 0; # not running under some shell
use strict;
use FindBin '$Bin';
use lib "$Bin/../lib";
use GBrowse::ConfigData;
use Bio::Graphics::Browser2;
use Bio::Graphics::Browser2::UserDB;
use Getopt::Long;
my @ORIGINAL_ARGV = @ARGV;
use constant USAGE => <<END;
Usage: $0 user [pass]
Changes the password for the indicated user.
If no password is provided on the command line, then
a new random password will be chosen.
This script uses the "user_account_db" option in the currently
installed GBrowse.conf configuration file to find
the appropriate accounts database.
END
;
if ($ARGV[0] =~ /^--?h/) {
die USAGE;
}
my $wwwuser = GBrowse::ConfigData->config('wwwuser');
my $uid = (getpwnam($wwwuser))[2];
unless ($uid == $<) {
print STDERR "Not running as $wwwuser. Trying to use sudo to remedy. You may be asked for your login password.\n";
my @args = ('sudo','-u',$wwwuser,$0, @ORIGINAL_ARGV);
exec @args;
exit 0;
}
my $globals = Bio::Graphics::Browser2->open_globals or die "Couldn't open GBrowse.conf";
my $userdb = Bio::Graphics::Browser2::UserDB->new($globals);
my $name = shift or die "Please provide a username. Run $0 --help for help\n";
my $pass = shift || get_random_password();
my $uid = $userdb->userid_from_username($name);
$uid || die "unknown user: $name\n";
$userdb->set_password($uid,$pass);
warn "Account \"$name\": password successfully set to $pass.\n";
exit 0;
sub get_random_password {
my $p = '';
my @a = ('a'..'z','A'..'Z',0..9);
for (1..10) {
$p .= $a[rand @a];
}
return $p;
}
__END__
|