Dre4m Shell
Server IP : 85.214.239.14  /  Your IP : 3.135.249.119
Web Server : Apache/2.4.62 (Debian)
System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.18
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /bin/linux-check-removal
#!/usr/bin/perl

# Copyright 1996-2006 Manoj Srivastava
# Copyright 2016 Ben Hutchings
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

use strict;
use warnings;
use FileHandle;
use POSIX ();

sub usage {
    my $fh = shift;
    print $fh (<< "EOT");
Usage: $0 VERSION

This command is intended to be called from the prerm maintainer scripts
of Linux kernel packages.

The VERSION argument must be the kernel version string as shown by
'uname -r' and used in filenames.

If the currently running kernel matches VERSION, linux-check-removal
will normally prompt the user to confirm this potentially dangerous
action and will fail if the user chooses to abort.  However, if the
current environment is in a chroot or container, or if debconf
prompts are disabled, it will always succeed without prompting.
EOT
}

sub usage_error {
    usage(*STDERR{IO});
    exit 2;
}

# Check usage early, before Debconf::Client::ConfModule initialises and
# adds its complaints about permissions
BEGIN {
    if (@ARGV != 1) {
	usage_error();
    }
    if ($ARGV[0] eq 'help' or grep({$_ eq '--help'} @ARGV)) {
	usage(*STDOUT{IO});
	exit 0;
    }
}

# Are we in a container?  Check for /run/systemd/container or
# $container variable in pid 1's environment.
sub in_container {
    return 1 if -e "/run/systemd/container";
    my $res = 0;
    if (my $fh = new FileHandle('/proc/1/environ', 'r')) {
	local $/ = "\0";
	$res = grep(/^container=/, <$fh>);
	close($fh);
    }
    return $res;
}

# Are we in in a chroot?  Compare root device and inode numbers with pid 1.
sub in_chroot {
    my @my_root_st = stat('/');
    my @pid1_root_st = stat('/proc/1/root');

    return @my_root_st && @pid1_root_st &&
	($my_root_st[0] != $pid1_root_st[0] || $my_root_st[1] != $pid1_root_st[1]);
}

sub check {
    my ($version) = @_;
    my (undef, undef, $running, undef, undef) = POSIX::uname();

    if ($running ne $version || in_chroot() || in_container()) {
	exit 0;
    }

    if (!exists($ENV{'DEBIAN_FRONTEND'}) ||
	$ENV{'DEBIAN_FRONTEND'} ne 'noninteractive') {
	use Debconf::Client::ConfModule qw(:all);

	my $title = 'linux-base/removing-title';
	my $question = "linux-base/removing-running-kernel";
	my ($ret, $seen, $answer);

	# debconf only generates a title automatically when used directly
	# from a maintainer script.  Also, the automatic title says we are
	# 'configuring' a package but we're not.
	($ret) = subst($title, 'package', $ENV{DPKG_MAINTSCRIPT_PACKAGE});
	if ($ret == 10) {
	    # debconf only repopulates the template cache during
	    # package installation and dpkg-reconfigure (and then
	    # only for the package being configured).  If the
	    # cache is removed then we won't be able to use our
	    # template (#908001).  Treat this as non-fatal.
	    print STDERR "W: debconf template $title is uncached\n";
	    goto proceed;
	}
	if ($ret) {
	    die "Failed to substitute package name in title: $ret";
	}
	($ret) = settitle($title);
	if ($ret) {
	    die "Failed to set title: $ret";
	}
	($ret) = fset($question, 'seen', 'false');
	if ($ret == 10) {
	    print STDERR "W: debconf template $question is uncached\n";
	    goto proceed;
	}
	if ($ret) {
	    die "Failed to reset seen flag for $question: $ret";
	}
	($ret) = reset($question);
	if ($ret) {
	    die "Failed to reset answer for $question: $ret";
	}
	($ret) = subst($question, 'running', $running);
	if ($ret) {
	    die "Failed to substitute version in $question: $ret";
	}
	($ret, $seen) = input('critical', $question);
	if ($ret && $ret != 30) {
	    die "Failed to prepare question $question: $ret $seen";
	}
	($ret, $seen) = go();
	if ($ret && $ret != 30) {
	    die "Failed to ask question $question: $ret $seen";
	}
	($ret, $answer) = get($question);
	if ($ret) {
	    die "Failed to retrieve answer for $question: $ret $answer";
	}

	if ($answer eq 'true') {
	    print STDERR "E: Aborting removal of the running kernel\n";
	    exit 1;
	}
    }

  proceed:
    print STDERR "W: Removing the running kernel\n";
    exit 0;
}

check(@ARGV);

Anon7 - 2022
AnonSec Team