晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /scripts/ |
Upload File : |
#!/usr/local/cpanel/3rdparty/bin/perl
# cpanel - scripts/realadduser 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
BEGIN {
$ENV{'LANG'} = 'C';
}
use strict;
use Fcntl ();
use Cpanel::Finally ();
use AcctLock ();
use Cpanel::Logger ();
use Cpanel::LoginDefs ();
use Cpanel::PwCache ();
use Cpanel::SysAccounts ();
use Whostmgr::Accounts::IdTrack ();
my $logger = Cpanel::Logger->new();
my $mailgid = ( Cpanel::PwCache::getpwnam('mail') )[3];
my $nochecks = 0;
my $shell = 0;
my $debug = 0;
my $is_system_account = 0;
if (@ARGV) {
while ( my $arg = shift @ARGV ) {
last if !$arg;
if ( $arg =~ m/^-+(\S+)/ ) {
my $flag = $1;
if ( $flag eq 'nochecks' ) {
$nochecks = 1;
}
elsif ( $flag =~ m/^(no)?shell$/ ) {
if ($1) {
$shell = 'noshell';
}
else {
$shell = shift @ARGV;
}
}
elsif ( $flag =~ m/debug/i ) {
$debug = 1;
}
elsif ( $flag eq 'r' || $flag eq 'system' ) {
$is_system_account = 1;
}
}
else {
unshift @ARGV, $arg;
last;
}
}
}
my $username = $ARGV[0];
my $homeroot = $ARGV[1];
my $pass = $ARGV[2];
my $myuid = $ARGV[3];
my $mygid = $ARGV[4];
if ( !$ARGV[0] ) {
my $up;
chomp( $up = <STDIN> );
my @UP = split( / /, $up );
$username = $UP[0];
$homeroot = $UP[1];
$pass = $UP[2];
}
if ( !$username ) {
Cpanel::Logger::logger(
{
'message' => "Syntax: adduser <username> <homeroot> <password>",
'level' => 'die',
'service' => 'realadduser',
'output' => 2,
'backtrace' => 0,
}
);
}
if ( !$homeroot ) {
Cpanel::Logger::logger(
{
'message' => "Syntax: adduser <username> <homeroot> <password>",
'level' => 'die',
'service' => 'realadduser',
'output' => 2,
'backtrace' => 0,
}
);
}
if ( !-e '/etc/allowstupidstuff' ) {
if ( $username =~ /^\d+/ ) {
Cpanel::Logger::logger(
{
'message' => "Invalid username $username. Usernames must not begin with a number.",
'level' => 'die',
'service' => 'realadduser',
'output' => 2,
'backtrace' => 0,
}
);
}
}
if ( !$shell ) {
if ( -x '/bin/rstsh' ) {
$shell = '/bin/rstsh';
}
elsif ( -x '/bin/bash' ) {
$shell = '/bin/bash';
}
elsif ( -x '/usr/local/bin/bash' ) {
$shell = '/usr/local/bin/bash';
}
elsif ( -x '/bin/sh' ) {
$shell = '/bin/sh';
}
else {
Cpanel::Logger::logger(
{
'message' => "No valid shell found. Using /bin/false",
'level' => 'warn',
'service' => 'realadduser',
'output' => 2,
'backtrace' => 0,
}
);
$shell = '/bin/false';
}
}
elsif ( $shell eq 'noshell' ) {
if ( -x '/usr/local/cpanel/bin/noshell' ) {
$shell = '/usr/local/cpanel/bin/noshell';
}
else {
$shell = '/bin/false';
}
}
if ($debug) {
Cpanel::Logger::logger(
{
'message' => "User: $username Home: $homeroot Shell: $shell Checks: $nochecks",
'level' => 'debug',
'service' => 'realadduser',
'output' => 1,
'backtrace' => 0,
}
);
exit;
}
my $home = $homeroot;
if ( !-e $home ) {
mkdir( $home, 0755 );
}
if ( $pass eq '' ) {
Cpanel::Logger::logger(
{
'message' => "No password specified for $username",
'level' => 'info',
'service' => 'realadduser',
'output' => 1,
'backtrace' => 0,
}
);
}
my ( $minuid, $mingid, $maxuid, $maxgid );
if ($is_system_account) {
$minuid = Cpanel::LoginDefs::get_sys_uid_min();
$mingid = Cpanel::LoginDefs::get_sys_gid_min();
$maxuid = Cpanel::LoginDefs::get_sys_uid_max();
$maxgid = Cpanel::LoginDefs::get_sys_gid_max();
}
else {
$minuid = Cpanel::LoginDefs::get_uid_min();
$mingid = Cpanel::LoginDefs::get_gid_min();
$maxuid = Cpanel::LoginDefs::get_uid_max();
$maxgid = Cpanel::LoginDefs::get_gid_max();
}
my $username_nodash = $username;
if ( !$nochecks ) {
$username_nodash =~ s/-//g;
}
my @UIDS;
my @GIDS;
AcctLock::acctlock();
my $unlock = Cpanel::Finally->new( sub { AcctLock::acctunlock(); } );
my ( $idalloc_status, $idalloc_statusmsg, $idalloc_uid, $idalloc_gid ) = Whostmgr::Accounts::IdTrack::allocate( { 'minuid' => $minuid, 'mingid' => $mingid } );
if ( !$idalloc_status ) {
die $idalloc_statusmsg;
}
Cpanel::SysAccounts::add_system_user(
$username,
'pass' => $pass,
'uid' => $idalloc_uid,
'gid' => $idalloc_gid,
'homedir' => "$home/$username",
'shell' => $shell,
);
Cpanel::Logger::logger(
{
'message' => "User $username added",
'level' => 'info',
'service' => 'realadduser',
'output' => 1,
'backtrace' => 0,
}
);