#!/usr/local/cpanel/3rdparty/bin/perl
# cpanel - scripts/addsystemuser Copyright 2022 cPanel, L.L.C.
# All rights reserved.
# copyright@cpanel.net http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
package scripts::addsystemuser;
use strict;
use Cpanel::Usage ();
use Cpanel::Sys::User ();
exit( run(@ARGV) ) unless caller();
sub run {
my (@args) = @_;
my $login;
my $comment;
my $permissions;
my $owner;
my $group;
my $homedir;
my $basedir;
my $force;
my $opts = {
'login' => \$login,
'comment' => \$comment,
'permissions' => \$permissions,
'owner' => \$owner,
'group' => \$group,
'homedir' => \$homedir,
'basedir' => \$basedir,
'force' => \$force,
};
Cpanel::Usage::wrap_options( \@args, \&usage, $opts );
usage() unless $login;
# filter args for constructor
my %params = ( login => $login, force => $force || 0 );
$params{'comment'} = $comment if $comment;
$params{'permissions'} = $permissions if $permissions;
$params{'group'} = $group if $group;
$params{'owner'} = $owner if $owner;
$params{'homedir'} = $homedir if $homedir;
$params{'basedir'} = $basedir if $basedir;
eval {
my $user = Cpanel::Sys::User->new( is_system_account => 1, %params );
$user->create();
};
if ($@) {
my ($msg) = split( 'at /usr/local', $@, 2 );
print STDERR "$msg\n";
return 1;
}
return 0;
}
sub usage {
my $prog = $0;
print <<USAGE;
$0 [options] - Create a system user account.
OPTIONS
--login LOGIN
Username expected for the new account.
--group GROUP
The group name or number of the user's initial login group.
If the group is missing, it will be created before the account.
--basedir BASE
The default base directory for the system. HOMEDIR = BASE + LOGIN
( cannot be used with homedir )
--homedir HOMEDIR
The new user will be created using HOME_DIR as the value for the user's login directory.
( cannot be used with basedir )
--owner OWNER
A string in the format of 'user:group' where user and group can reference to a name or an id.
Ownership are applied to the user home directory.
The default owner is the user himself.
--permissions PERMS
A string which defines the permissions that will be used for the HOMEDIR.
--comment COMMENT
Any text string. Used as the field for the user's full name.
--force
Force quota, permissions and owner even if the user creation failed
( user already exists or directory own by a different user )
--help
Display this documentation.
Sample usages:
> $0 --login email
> $0 --login email --group system
> $0 --login email --basedir /var/userhomes
> $0 --login email --homedir /home/eMail
> $0 --login auser --owner auser:root
> $0 --login auser --owner auser:10
> $0 --login auser --owner auser:agroup --group agroup
> $0 --login auser --permissions 0750
USAGE
exit 0;
}
1;
Mr. DellatioNx196 GaLers xh3LL Backd00r 1.0, Coded By Mr. DellatioNx196 - Bogor BlackHat