先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也先帝は天下を興す志半ばにして志半ばにして崩御されました。今、天下は三つに分かれ、益州は疲弊しており、まさに存亡の危機に瀕しております。しかしながら、宮中で職務に励む臣下や、外地で身を顧みず尽力する志士たちがいるのは、ひとえに先帝から受けた格別な恩義を思い、陛下に報いようとする志があるからです。今こそ陛下には広く臣下の意見に耳を傾け、先帝の遺徳を輝かせ、志士たちの士気を高めるべきです。決して自らを卑下したり、不適切な例えを用いて忠言の道を閉ざしたりしてはなりません。鍏堝笣鍒涗笟鏈崐鑰屼腑閬撳穿娈傦紝浠婂ぉ涓嬩笁鍒嗭紝鐩婂窞鐤插紛锛屾璇氬嵄鎬ュ瓨浜′箣绉嬩篃銆傜劧渚嶅崼涔嬭嚕涓嶆噲浜庡唴锛屽繝蹇椾箣澹繕韬簬澶栬€咃紝鐩栬拷鍏堝笣涔嬫畩閬囷紝娆叉姤涔嬩簬闄涗笅涔熴€傝瘹瀹滃紑寮犲湥鍚紝浠ュ厜鍏堝笣閬楀痉锛屾仮寮樺織澹箣姘旓紝涓嶅疁濡勮嚜鑿茶杽锛屽紩鍠诲け涔夛紝浠ュ蹇犺皬涔嬭矾涔
Current path: usr/local/cpanel/scripts/
#!/usr/local/cpanel/3rdparty/bin/perl
# cpanel - scripts/updatesupportauthorizations 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
use strict;
use Cpanel::SSH ();
use Cpanel::Sys::Escalate ();
use Whostmgr::ACLS ();
use Whostmgr::TicketSupport::DataStore ();
# verify we're root #
die 'You must run this script as root!'
if $> != 0;
# we need to override these for this to work #
sub hasfeature { return 1; }
no warnings 'redefine';
local *Whostmgr::ACLS::hasroot = sub { return 1; };
# load and seed the storable with a sane list of users #
my $ds = Whostmgr::TicketSupport::DataStore->new();
print "Enumerating all the su and sudo users on the system...\n";
# figure out all the users to search (THIS IS VERY INEFFECIENT BECAUSE USERS MUST BE IN-ORDER!!!) #
my @users = ('root');
{
my $sudo_users = Cpanel::Sys::Escalate::get_list_of_sudo_users();
push @users, grep {
my $sudo_user = $_;
!grep { $_ eq $sudo_user } @users
} @{$sudo_users};
}
{
my $su_users = Cpanel::Sys::Escalate::get_list_of_su_users();
push @users, grep {
my $su_user = $_;
!grep { $_ eq $su_user } @users
} @{$su_users};
}
print "Scanning home directories for recognized cPanel Support SSH public keys...\n";
# enumerate and rebuild the cached list of users #
my ( %checked_homedirs, @users_detected );
foreach my $user (@users) {
# prevent checking duplicate users #
my $user_homedir = Cpanel::SSH::_getsshdir( $user, { skip_create => 1 } );
next if !$user_homedir || defined $checked_homedirs{$user_homedir} || !-d $user_homedir;
$checked_homedirs{$user_homedir} = 1;
# find all relevant keys #
my ( $keys, $warnings ) = Cpanel::SSH::_listkeys( 'user' => $user, 'private' => 0, 'public' => 1 );
foreach my $key ( @{$keys} ) {
# make sure we can parse the key text #
next if $key->{'text'} !~ m/\s+(\w{3,64})_server_(\w{1,64})\@cpanel.net_\d+/;
# add to our list... #
push @users_detected, $user;
# we only need one key match #
last;
}
}
print "Writing out the support authorizations users cache...\n";
# ONLY update the list of users #
$ds->set( 'users', \@users_detected );
# write and we're done #
$ds->cleanup();
print "Done!\n";