[ Avaa Bypassed ]




Upload:

Command:

www-data@3.144.13.165: ~ $
#!/usr/bin/perl
#                              -*- Mode: Cperl -*-
# ucfq ---
# Author           : Manoj Srivastava ( srivasta@glaurung.internal.golden-gryphon.com )
# Created On       : Wed Apr 12 14:51:16 2006
# Created On Node  : glaurung.internal.golden-gryphon.com
# Last Modified By : Manoj Srivastava
# Last Modified On : Fri Apr 14 19:30:45 2006
# Last Machine Used: glaurung.internal.golden-gryphon.com
# Update Count     : 81
# Status           : Unknown, Use with caution!
# HISTORY          :
# Description      :
#
# arch-tag: 1390e09f-ee31-4d7f-a968-bd539ea061a0
#
=head1 NAME

ucfq - query ucf registry and hashfile about configuration file details.

=cut

use strict;


package ucf;

use strict;
use Getopt::Long;

# set the version and revision
($main::MYNAME     = $main::0) =~ s|.*/||;
$main::Author      = "Manoj Srivastava";
$main::AuthorMail  = "srivasta\@debian.org";

=head1 SYNOPSIS

 usage: ucfq [options] (file|package)[file|package  ...]

=cut


{  # scope for ultra-private meta-object for class attributes

  my %Ucf =
    (
     Optdesc  =>
     {
      'help|h'         => sub {print ucf->Usage();     exit 0;},
      'with-colons|w!' => sub {$::ConfOpts{"Colons"}= "$_[1]";},
      'state-dir=s'    => sub {$::ConfOpts{"StateDir"}= "$_[1]";},
      'debug|d'        => sub {$::ConfOpts{"DEBUG"}+= "$_[1]";},
      'verbose|v'      => sub {$::ConfOpts{"VERBOSE"}+= "$_[1]";}
     },
     Usage => qq(Usage: $main::MYNAME [options]
Author: $main::Author <$main::AuthorMail>
  where options are:
 --help                This message.
 --debug               Turn on debugging mode.
 --verbose             Make the script more verbose.
 --with-colons         A compact, machine readable version of the output.
 --state-dir </path/>  Set the state directory to /path/ instead of the
                       default /var/lib/ucf.

),
     Defaults =>
     {
      "Colons"   => 0,
      "DEBUG"    => 0,
      "VERBOSE"  => 0,
      "StateDir" => '/var/lib/ucf'
     }
    );
  # tri-natured: function, class method, or object method
  sub _classobj {
    my $obclass = shift || __PACKAGE__;
    my $class   = ref($obclass) || $obclass;
    no strict "refs";   # to convert sym ref to real one
    return \%$class;
  }

  for my $datum (keys %Ucf ) {
    no strict "refs";
    *$datum = sub {
      use strict "refs";
      my ($self, $newvalue) = @_;
      $Ucf{$datum} = $newvalue if @_ > 1;
      return $Ucf{$datum};
    }
  }
}

=head1 OPTIONS

=over 3

=item B<--help> B<h> Print out a usage message.

=item B<--debug> B<-d> Turn on debugging mode.

=item B<--verbose> B<-v> Make the script more verbose..

=item B<--with-colons> B<-w>

=over 2

Normally, the script presents the information in a human readable
tabular format, but that may be harder for a machine to parse. With
this option, the output is a compact, colon separated line, with no
dividers, headers, or footer.

=back

=item B<--state-dr> dir

=over 2

Set the state directory to C</path/to/dir> instead of the default
C</var/lib/ucf>.  Used mostly for testing.

=back

=back

=cut


=head1 DESCRIPTION


This script takes a set of arguments, each of which is a package or a
path to a configuration file, and outputs the associated package, if
any, if the file exists on disk, and whether it has been modfied by te
user.  The output is either a human readable tabular form, or a
compact colon-separated machine friendly format.

This script can potentially be used in package C<postinst> scripts
during purge to query the system for configuration files that may
still exist on the system, and whether these files have been locally
modified by the user -- assuming that the package registered all the
configuration files with B<ucf> using C<ucfr>.

=cut




=head1 INTERNALS

=head2 Class Methods

All class methods mediate access to class variables.  All class
methods can be invoked with zero or one parameters. When invoked with
the optional parameter, the class method sets the value of the
underlying class data.  In either case, the value of the underlying
variable is returned.

=cut

=head1 Class ucf

This is a combination view and controller class that mediates between
the user and the internal model classes.


=head2 new

This is the constructor for the class. It takes a number of optional
parameters. If the parameter B<Colons> is present, then the output
will be compact. The parameters B<DEBUG> and B<VERBOSE> turn on
additional diagnostics from the script.

=cut

sub new {
  my $this = shift;
  my %params = @_;
  my $class = ref($this) || $this;
  my $self = {};

  bless $self => $class;

  # validate and sanitize the settings
  $self->validate(%params);

  return $self;
}

=head2 validate

This routine is responsible for ensuring that the parameters passed in
(presumably from the command line) are given preference.

=cut

sub validate{
  my $this     = shift;
  my %params   = @_;
  my $defaults = $this->Defaults();


  # Make sure runtime options override what we get from the config file
  for my $option (keys %params) {
    $this->{Con_Ref}->{"$option"} = $params{"$option"};
  }

  # Ensure that if default parameters have not been set on the comman
  # line on in the configuration file, if any, we use the built in
  # defaults.
  for my $default (keys %$defaults) {
    if (! defined $this->{Con_Ref}->{"$default"}) {
      $this->{Con_Ref}->{"$default"} = $defaults->{"$default"};
    }
  }
}

=head2 get_config_ref

This routine returns a reference to the configuration hash

=cut

sub get_config_ref {

  my $this     = shift;
  return $this->{Con_Ref};
}

=head2 dump_config

This routine returns a C<Data::Dumper> for debugging purposes

=cut

sub dump_config {
  my $this     = shift;
  for (keys %{$this->{Con_Ref}}) {
    print  "$_ = [${$this->{Con_Ref}}{$_}]\n"
  }
}

=head2 process

This routine is the work horse routine -- it parses the command line
arguments, and queries the on disk databases, determines of the files
exist, and have been modified.

=cut


sub process {
  my $this      = shift;

# Step 1: Process all arguments in sequence.
# Step 2: determine if the arument given is a package name (no / in
#         arg)

  %{$this->{packages}}    = map { +"$_" => 1} grep {! m,/,} @ARGV;
  %{$this->{configs}}     = map { +"$_" => 1} grep {  m,/,} @ARGV;
  $this->{pkg_list}       = object_list->new;
  $this->{file_list}      = object_list->new;
  $this->{registry_proxy} =
    registry->new("StateDir" => $this->{Con_Ref}->{StateDir});
  $this->{hashfile_proxy} =
    hashfile->new("StateDir" => $this->{Con_Ref}->{StateDir});

  for (keys %{$this->{packages}} ) {
    my $package = pkg->new('Name' => "$_");
    $this->{pkg_list}->element($_, $package);
  }
  for (keys %{$this->{configs}}) {
    warn "Need a fully qualified path name for config file \"$_\"\n"
      unless m,^/,;
    # Don't die for etch
    exit 0 unless m,^/,;

    my $file = conffile->new('Name' => "$_");
    $this->{file_list}->element($_, $file);
  }
# Step 3: If so, gather all files associated with the package
  for my $package ($this->{pkg_list}->list) {
    my $pkg_files = $this->{registry_proxy}->list_files($package);
    for my $file (@$pkg_files) {
      if (! defined $this->{file_list}->element($file)) {
        my $ret = conffile->new('Name' => "$file");
        $this->{file_list}->element($file, $ret);
      }
      $this->{file_list}->element($file)->conffile_package($package);
    }
  }
# Step 4: for all configuration files, determine package (unless
#         already determined), if any
# Step 5: For each configuration file, check if it exists
# Step 6: For each existing file, see if it has been changed

  for my $file ($this->{file_list}->list) {
    $this->{file_list}->element($file)->conffile_hash($file, $this->{hashfile_proxy}->hash($file));
    if (! defined $this->{file_list}->element($file)->conffile_package) {
      $this->{file_list}->element($file)->conffile_package($this->{registry_proxy}->find_pkg($file));
    }
  }
}

=head2 report

This routine generates a nicely formatted report based on the
information gathered during the processing. There are two kinds of
reports, the first being a user friendly tabular form, the second
(turned on by the C<-w> option) a easily parseable colon separated
report.

=cut


our ($out_pkg, $out_file, $there, $mod);

format STDOUT_TOP =
Configuration file                            Package             Exists Changed
.

format STDOUT =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<< @|||   @|||
$out_file,                                    $out_pkg,           $there,$mod
.

sub report {
  my $this      = shift;
  for my $file (sort $this->{file_list}->list) {
    ($out_pkg, $out_file, $there, $mod) =
      $this->{file_list}->element($file)->conffile_report;
    if ($this->{Con_Ref}->{Colons}) {
      print "$out_file:$out_pkg:$there:$mod\n";
    }
    else {
      write;
    }
  }
}

=head1 Class registry

This moel class encapsulates the package-configuration file
associations registry.  It parses the data in the registry, and
provides methods to query the registry based either on package name,
or the full path of the configuration file.

=cut

package registry;
use strict;

=head2 new

This is the constructor for the class.  It takes a required parameter
B<StateDir>, and based on that, proceeds toparse the registry and
populate internal data structures.

=cut

sub new {
  my $this = shift;
  my %params = @_;
  my $class = ref($this) || $this;
  my $self = {};

  die "Missing required parameter StateDir"
    unless $params{StateDir};

  if (-e "$params{StateDir}/registry") {
    if (! -r "$params{StateDir}/registry") {
      die "Can't read registry file $params{StateDir}/registry:$!";
    }
    open (REG, "$params{StateDir}/registry") ||
      die "Can't read registry file $params{StateDir}/registry:$!";
    while (<REG>) {
      chomp;
      my ($pkg, $file) = m/^(\S+)\s+(\S+)$/;
      $self->{Packages}->{$file} = $pkg;
      if (exists $self->{List}->{$pkg}) {
        push @{$self->{List}->{$pkg}}, $file;
      }
      else {
        $self->{List}->{$pkg} = [ $file ];
      }
    }
  }

  bless $self => $class;

  return $self;
}

=head2 list_files

This routine queries the registry and lists all configuration files
associated with the given package.  Takes the package name as a
required parameter.

=cut

sub list_files {
  my $this      = shift;
  my $pkg       = shift;

  if (exists $this->{List}->{$pkg}) {
    return [ @{$this->{List}->{$pkg}} ];
  }
  else {
    return [];
  }
}


=head2 find_pkg

This routine queries the registry for the package associated with the
given file.  Takes the path of the configuration file as a required
parameter.

=cut

sub find_pkg {
  my $this      = shift;
  my $file      = shift;

  if (exists $this->{Packages}->{$file}) {
    return $this->{Packages}->{$file};
  }
  else {
    return undef;
  }
}

=head1 Class hashfile

This moel class encapsulates the configuration file hash database.  It
parses the data in the database, and provides methods to query the
hash of the configuration file.

=cut

package hashfile;
use strict;

sub new {
  my $this = shift;
  my %params = @_;
  my $class = ref($this) || $this;
  my $self = {};

  die "Missing required parameter StateDir"
    unless $params{StateDir};


  if (-e "$params{StateDir}/hashfile") {
    if (! -r "$params{StateDir}/hashfile") {
      die "Can't read registry file $params{StateDir}/hashfile:$!";
    }
    open (HASH, "$params{StateDir}/hashfile") ||
      die "Can't read registry file $params{StateDir}/hashfile:$!";
    while (<HASH>) {
      chomp;
      my ($hash, $file) = m/^(\S+)\s+(\S+)$/;
      $self->{$file} = $hash
    }
  }

  bless $self => $class;

  return $self;
}


=head2 hash

This routine queries the database for the hash associated with the
developers version of the given file.  Takes the path of the
configuration file as a required parameter.

=cut


sub hash {
  my $this      = shift;
  my $file      = shift;
  my $value     = shift;

  if ($value) {
    $this->{$file} = $value;
  }
  return $this->{$file};
}

=head1 class conffile

This is the encapsulation of a configuration file metadata.

=cut



package conffile;
use strict;
use Cwd qw{abs_path};


=head2 new

This is the constructor for the class. It takes a number of optional
parameters. If the parameter B<Colons> is present, then the output
will be compact. The parameters B<DEBUG> and B<VERBOSE> turn on
additional diagnostics from the script.

=cut

sub new {
  my $this = shift;
  my %params = @_;
  my $class = ref($this) || $this;
  my $self = {};

  die "Missing required parameter Name"
    unless $params{Name};
  $self->{Name}    = $params{Name};
  $self->{Package} = $params{Package}
    if $params{Package};
  $self->{Exists}  = 'Yes' if -e $self->{Name};
  if ($self->{Exists}) {
    $self->{Name}  = abs_path( $self->{Name});
  }
  bless $self => $class;

  return $self;
}


=head2 conffile_package

This routine is the accessor method of the internal attribute that
holds package name associated with the file.  If an optional C<value>
is present, updates the value of the attribute.

=cut

sub conffile_package {
  my $this      = shift;
  my $value     = shift;

  if ($value ) {
    $this->{Package} = $value;
  }
  if (exists $this->{Package}) {
    return $this->{Package};
  }
  else {
    return undef;
  }
}

=head2 conffile_exists

This routine is the accessor method of the internal attribute that
holds the information whether the file exists on disk or not.

=cut

sub conffile_exists {
  my $this      = shift;
  my $name      = shift;
  my $value     = shift;

  die "Missing required parameter Name"
    unless $name;
  if (exists $this->{Exists}) {
    return $this->{Exists};
  }
  else {
    return undef;
  }
}

=head2 conffile_modified

This routine is the accessor method of the internal attribute that
holds the information whether the file exists on disk or not.  If an
optional C<value> is present, updates the value of the attribute.

=cut

sub conffile_modified {
  my $this      = shift;
  my $name      = shift;
  my $value     = shift;

  die "Missing required parameter Name"
    unless $name;
  if ($value ) {
    $this->{Modified} = $value;
  }
  if (exists $this->{Modified}) {
    return $this->{Modified};
  }
  else {
    return undef;
  }
}

=head2 conffile_hash

This routine is the accessor method of the internal attribute that
holds the hash for the developers version of the file.  If an optional
C<value> is present, updates the value of the attribute.  It also
notes whether or not the file is modified from the developers version.

=cut

sub conffile_hash {
  my $this      = shift;
  my $name      = shift;
  my $value     = shift;

  die "Missing required parameter Name"
    unless $name;
  if ($value ) {
    $this->{Hash} = $value;
    if (-e "$name") {
      if (-x "/usr/bin/md5sum") {
        open (NEWHASH, "/usr/bin/md5sum $name |") ||
          die "Could not run md5sum: $!";
        while (<NEWHASH>) {
          chomp;
          my ($hash, $dummy) = m/^(\S+)\s+(\S+)$/;
          if ("$hash" ne "$value") {
            $this->{Modified} = 'Yes';
          }
          else {
            $this->{Modified} = 'No';
          }
        }
        close NEWHASH;
      }
      else {
        die "Could not find /usr/bin/md5sum .\n";
      }
    }
  }
  if (exists $this->{Hash}) {
    return $this->{Hash};
  }
  else {
    return undef;
  }
}

sub conffile_report {
  my $this      = shift;
  return $this->{Package} ? $this->{Package} : "",
    $this->{Name}, $this->{Exists} ? $this->{Exists} : "",
      $this->{Modified}? $this->{Modified} : "";
}


=head1 CLASS PKG

This is an encapsulation of package metadata.  Packages may be
associated with configuration files.

=cut


package pkg;
use strict;


=head2 new

This is the constructor for the class. It takes a number of optional
parameters. If the parameter B<Colons> is present, then the output
will be compact. The parameters B<DEBUG> and B<VERBOSE> turn on
additional diagnostics from the script.

=cut

sub new {
  my $this = shift;
  my %params = @_;
  my $class = ref($this) || $this;
  my $self = {};

  die "Missing required parameter Name"
    unless $params{Name};
  $self->{Name} = $params{Name};

  bless $self => $class;

  return $self;
}

sub list_files {
  my $this   = shift;
  return [];
}

=head1 CLASS object_list

This is a clas which holds lists of object names, either packages or
configuration file object names.  It provides methods to add, access,
and remove objects, as well as an option to list all elements in the
list.

=cut

package object_list;
use strict;



=head2 new

This is the constructor for the class. It takes no arguments.

=cut

sub new {
  my $this = shift;
  my %params = @_;
  my $class = ref($this) || $this;
  my $self = {};

  $self->{"List"} = ();

  bless $self => $class;

  return $self;
}

=head2 element

This is an accessor method for elements of the list. If an optional
value argument exists, it creates or updates the element associtated
with the vaslue. Takes in a required name, which is used as a kay, and
an optional value argument. The value is returned.

=cut

sub element {
  my $this      = shift;
  my $name      = shift;
  my $value     = shift;

  die "Missing required parameter Name"
    unless $name;
  if ($value) {
    $this->{"List"}->{$name} =  $value;
  }
  if (exists $this->{"List"}->{$name}) {
    return $this->{"List"}->{$name};
  }
  else {
    return undef;
  }
}


=head2 remove

Removes elements from the list.  Take in an required name, which is
used as the key for the element to delete.

=cut

sub remove {
  my $this      = shift;
  my $name      = shift;
  die "Missing required parameter Name"
    unless $name;
  delete $this->{"List"}->{$name}
    if (exists $this->{"List"}->{$name} );
}

=head2 list

This routine lists all the elements in the list.  It does not take any
options.

=cut

sub list {
  my $this      = shift;

  return keys %{$this->{"List"}};
}

package main;
use Getopt::Long;

sub main {
  my $optdesc = ucf->Optdesc();
  my $parser  = new Getopt::Long::Parser;
  $parser->configure("bundling");
  $parser->getoptions (%$optdesc);
  my $query = ucf->new(%::ConfOpts);
  $query->process;
  $query->report;
}

&main;

exit 0;

=head1 CAVEATS

This is very inchoate, at the moment, and needs testing.

=cut

=head1 BUGS

None Known so far.

=cut

=head1 AUTHOR

Manoj Srivastava <srivasta\@debian.org>

=head1 COPYRIGHT AND LICENSE

This script is a part of the Ucf package, and is

Copyright (c) 2006 Manoj Srivastava <srivasta\@debian.org>

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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

=cut

1;

__END__

Filemanager

Name Type Size Permission Actions
[ File 50.44 KB 0755
aa-enabled File 34.52 KB 0755
aa-exec File 34.52 KB 0755
aa-features-abi File 30.52 KB 0755
addpart File 14.38 KB 0755
arch File 30.51 KB 0755
awk File 154.79 KB 0755
b2sum File 50.52 KB 0755
base32 File 34.51 KB 0755
base64 File 34.51 KB 0755
basename File 34.51 KB 0755
basenc File 46.51 KB 0755
bash File 1.33 MB 0755
bashbug File 6.66 KB 0755
bootctl File 70.49 KB 0755
bunzip2 File 38.38 KB 0755
busctl File 90.49 KB 0755
bzcat File 38.38 KB 0755
bzcmp File 2.17 KB 0755
bzdiff File 2.17 KB 0755
bzegrep File 3.69 KB 0755
bzexe File 4.78 KB 0755
bzfgrep File 3.69 KB 0755
bzgrep File 3.69 KB 0755
bzip2 File 38.38 KB 0755
bzip2recover File 14.3 KB 0755
bzless File 1.27 KB 0755
bzmore File 1.27 KB 0755
c_rehash File 6.8 KB 0755
captoinfo File 86.41 KB 0755
cat File 34.46 KB 0755
chage File 70.49 KB 2755
chardet File 965 B 0755
chardetect File 965 B 0755
chattr File 14.31 KB 0755
chcon File 58.51 KB 0755
chfn File 71.01 KB 4755
chgrp File 54.51 KB 0755
chmod File 54.51 KB 0755
choom File 22.38 KB 0755
chown File 58.51 KB 0755
chrt File 26.38 KB 0755
chsh File 43.76 KB 4755
cksum File 34.41 KB 0755
clear File 14.31 KB 0755
clear_console File 14.23 KB 0755
cloud-id File 966 B 0755
cloud-init File 970 B 0755
cloud-init-per File 2.06 KB 0755
cmp File 42.39 KB 0755
comm File 34.52 KB 0755
console-conf File 982 B 0755
core-sshd-host-keygen File 1.49 KB 0755
cp File 138.51 KB 0755
csplit File 106.51 KB 0755
ctstat File 22.66 KB 0755
cut File 38.51 KB 0755
cvtsudoers File 296.4 KB 0755
dash File 122.74 KB 0755
date File 102.51 KB 0755
dbus-cleanup-sockets File 14.29 KB 0755
dbus-daemon File 227.32 KB 0755
dbus-monitor File 26.29 KB 0755
dbus-run-session File 14.29 KB 0755
dbus-send File 26.29 KB 0755
dbus-update-activation-environment File 14.29 KB 0755
dbus-uuidgen File 14.29 KB 0755
dd File 66.52 KB 0755
delpart File 14.38 KB 0755
df File 83.08 KB 0755
dh_bash-completion File 4.31 KB 0755
diff File 130.55 KB 0755
diff3 File 54.52 KB 0755
dir File 134.98 KB 0755
dircolors File 38.52 KB 0755
dirname File 30.38 KB 0755
dmesg File 70.61 KB 0755
dnsdomainname File 22.23 KB 0755
domainname File 22.23 KB 0755
dpkg-deb File 134.49 KB 0755
dpkg-realpath File 4.09 KB 0755
du File 146.51 KB 0755
ec2metadata File 8.38 KB 0755
echo File 34.3 KB 0755
editor File 1.45 MB 0755
egrep File 28 B 0755
env File 42.95 KB 0755
ex File 1.45 MB 0755
expand File 34.53 KB 0755
expiry File 22.59 KB 2755
expr File 102.41 KB 0755
factor File 70.51 KB 0755
faillog File 22.59 KB 0755
fallocate File 22.38 KB 0755
false File 26.3 KB 0755
fgrep File 28 B 0755
finalrd File 2.06 KB 0755
fincore File 22.42 KB 0755
find File 275.48 KB 0755
findmnt File 63.61 KB 0755
flock File 22.48 KB 0755
fmt File 38.51 KB 0755
fold File 34.51 KB 0755
free File 26.23 KB 0755
gdbserver File 564.73 KB 0755
getconf File 34.29 KB 0755
getent File 38.65 KB 0755
getopt File 22.38 KB 0755
gpasswd File 70.38 KB 4755
gpgv File 271.04 KB 0755
grep File 178.45 KB 0755
groups File 34.51 KB 0755
growpart File 26.22 KB 0755
gunzip File 2.29 KB 0755
gzexe File 6.3 KB 0755
gzip File 91.23 KB 0755
hardlink File 34.43 KB 0755
head File 42.51 KB 0755
helpztags File 2.46 KB 0755
hostid File 30.51 KB 0755
hostname File 22.23 KB 0755
hostnamectl File 30.38 KB 0755
i386 File 26.65 KB 0755
iconv File 66.41 KB 0755
id File 38.51 KB 0755
infocmp File 62.38 KB 0755
infotocap File 86.41 KB 0755
install File 142.52 KB 0755
ionice File 18.38 KB 0755
ip File 702.05 KB 0755
ipcmk File 22.45 KB 0755
ipcrm File 18.38 KB 0755
ipcs File 38.38 KB 0755
iptables-xml File 96.95 KB 0755
ischroot File 14.2 KB 0755
join File 46.55 KB 0755
journalctl File 78.39 KB 0755
json-patch-jsondiff File 1004 B 0755
jsondiff File 1004 B 0755
jsonpatch File 3.77 KB 0755
jsonpointer File 1.79 KB 0755
jsonschema File 397 B 0755
kernel-install File 4.79 KB 0755
kill File 30.23 KB 0755
kmod File 166.36 KB 0755
kmodsign File 18.45 KB 0755
last File 34.38 KB 0755
lastb File 34.38 KB 0755
lastlog File 27.63 KB 0755
lcf File 7.6 KB 0755
ldd File 5.32 KB 0755
less File 194.38 KB 0755
lessecho File 14.31 KB 0755
lessfile File 8.83 KB 0755
lesskey File 23.7 KB 0755
lesspipe File 8.83 KB 0755
link File 30.51 KB 0755
linux32 File 26.65 KB 0755
linux64 File 26.65 KB 0755
ln File 58.51 KB 0755
lnstat File 22.66 KB 0755
locale File 57.56 KB 0755
locale-check File 14.15 KB 0755
localectl File 26.37 KB 0755
localedef File 326.96 KB 0755
logger File 34.97 KB 0755
login File 51.73 KB 0755
loginctl File 58.48 KB 0755
logname File 30.51 KB 0755
ls File 134.98 KB 0755
lsattr File 14.31 KB 0755
lsblk File 122.38 KB 0755
lscpu File 98.38 KB 0755
lsipc File 50.38 KB 0755
lslocks File 30.7 KB 0755
lslogins File 50.38 KB 0755
lsmem File 34.38 KB 0755
lsmod File 166.36 KB 0755
lsns File 38.38 KB 0755
man File 128 B 0755
mawk File 154.79 KB 0755
mcookie File 26.45 KB 0755
md5sum File 42.41 KB 0755
md5sum.textutils File 42.41 KB 0755
mesg File 14.38 KB 0755
mkdir File 66.51 KB 0755
mkfifo File 38.51 KB 0755
mknod File 42.51 KB 0755
mksquashfs File 254.68 KB 0755
mkswapfile File 865 B 0755
mktemp File 38.51 KB 0755
more File 42.38 KB 0755
mount File 46.38 KB 4755
mountpoint File 18.38 KB 0755
mv File 134.52 KB 0755
namei File 22.38 KB 0755
nawk File 154.79 KB 0755
nc File 38.63 KB 0755
nc.openbsd File 38.63 KB 0755
netcat File 38.63 KB 0755
networkctl File 102.38 KB 0755
newgrp File 39.55 KB 4755
nice File 34.51 KB 0755
nisdomainname File 22.23 KB 0755
nl File 98.57 KB 0755
nohup File 34.41 KB 0755
nproc File 34.51 KB 0755
nsenter File 26.6 KB 0755
nstat File 30.38 KB 0755
numfmt File 54.54 KB 0755
od File 66.51 KB 0755
openssl File 977.8 KB 0755
p11-kit File 30.38 KB 0755
p11tool File 218.38 KB 0755
pager File 194.38 KB 0755
partx File 58.38 KB 0755
passwd File 58.57 KB 4755
paste File 34.41 KB 0755
pathchk File 34.51 KB 0755
pdb3 File 61.74 KB 0755
pdb3.10 File 61.74 KB 0755
perl File 3.63 MB 0755
perl5.34.0 File 3.63 MB 0755
pgrep File 30.24 KB 0755
pidof File 26.38 KB 0755
pidwait File 30.24 KB 0755
ping File 74.88 KB 0755
ping4 File 74.88 KB 0755
ping6 File 74.88 KB 0755
pinky File 34.41 KB 0755
pkaction File 18.3 KB 0755
pkcheck File 22.3 KB 0755
pkcs11-tool File 157.02 KB 0755
pkill File 30.24 KB 0755
pkttyagent File 18.3 KB 0755
pldd File 22.37 KB 0755
plymouth File 46.3 KB 0755
pmap File 34.24 KB 0755
pr File 66.58 KB 0755
printenv File 30.38 KB 0755
printf File 50.44 KB 0755
prlimit File 26.89 KB 0755
ps File 138.45 KB 0755
ptx File 126.55 KB 0755
pwd File 34.51 KB 0755
pwdx File 14.23 KB 0755
py3clean File 7.63 KB 0755
py3compile File 12.88 KB 0755
py3versions File 11.63 KB 0755
pybabel File 953 B 0755
pybabel-python3 File 953 B 0755
pydoc3 File 79 B 0755
pydoc3.10 File 79 B 0755
pygettext3 File 23.67 KB 0755
pygettext3.10 File 23.67 KB 0755
pyserial-miniterm File 975 B 0755
pyserial-ports File 969 B 0755
python3 File 5.67 MB 0755
python3.10 File 5.67 MB 0755
rbash File 1.33 MB 0755
rcp File 130.59 KB 0755
rdma File 98.52 KB 0755
readlink File 38.41 KB 0755
realpath File 38.41 KB 0755
renice File 14.38 KB 0755
reset File 26.31 KB 0755
resizepart File 22.38 KB 0755
resolvectl File 130.52 KB 0755
rev File 14.38 KB 0755
rgrep File 30 B 0755
rlogin File 827.04 KB 0755
rm File 58.51 KB 0755
rmdir File 42.41 KB 0755
routef File 208 B 0755
routel File 1.62 KB 0755
rsh File 827.04 KB 0755
rtstat File 22.66 KB 0755
run-parts File 26.54 KB 0755
runcon File 34.51 KB 0755
rview File 1.45 MB 0755
savelog File 10.24 KB 0755
sbattach File 26.54 KB 0755
sbkeysync File 34.74 KB 0755
sbsiglist File 14.6 KB 0755
sbsign File 34.7 KB 0755
sbvarsign File 22.73 KB 0755
sbverify File 34.61 KB 0755
scp File 130.59 KB 0755
script File 50.38 KB 0755
scriptlive File 42.38 KB 0755
scriptreplay File 34.38 KB 0755
sdiff File 46.39 KB 0755
sed File 110.57 KB 0755
select-editor File 2.39 KB 0755
sensible-browser File 1.26 KB 0755
sensible-editor File 1.24 KB 0755
sensible-pager File 565 B 0755
seq File 46.51 KB 0755
setarch File 26.65 KB 0755
setpriv File 38.38 KB 0755
setsid File 14.38 KB 0755
setterm File 34.38 KB 0755
sftp File 142.66 KB 0755
sg File 39.55 KB 4755
sh File 122.74 KB 0755
sha1sum File 42.41 KB 0755
sha224sum File 50.41 KB 0755
sha256sum File 50.41 KB 0755
sha384sum File 58.41 KB 0755
sha512sum File 58.41 KB 0755
shred File 50.51 KB 0755
shuf File 46.51 KB 0755
skill File 30.23 KB 0755
slabtop File 22.23 KB 0755
sleep File 34.51 KB 0755
slogin File 827.04 KB 0755
snap File 16.86 MB 0755
File 0 B 0
snice File 30.23 KB 0755
sort File 98.8 KB 0755
splash-client File 404 B 0755
split File 50.97 KB 0755
sqfscat File 131.9 KB 0755
sqfstar File 254.68 KB 0755
ss File 125.07 KB 0755
ssh File 827.04 KB 0755
ssh-add File 166.42 KB 0755
ssh-agent File 286.43 KB 2755
ssh-argv0 File 1.42 KB 0755
ssh-copy-id File 12.38 KB 0755
ssh-keygen File 446.44 KB 0755
ssh-keyscan File 190.44 KB 0755
stat File 78.52 KB 0755
stdbuf File 42.51 KB 0755
stty File 74.51 KB 0755
su File 54.38 KB 4755
sudo File 226.97 KB 4755
sudoedit File 226.97 KB 4755
sudoreplay File 87.64 KB 0755
sum File 34.41 KB 0755
sync File 34.41 KB 0755
systemctl File 1.06 MB 0755
systemd File 1.55 MB 0755
systemd-analyze File 1.73 MB 0755
systemd-ask-password File 18.48 KB 0755
systemd-cat File 18.38 KB 0755
systemd-cgls File 22.48 KB 0755
systemd-cgtop File 38.39 KB 0755
systemd-cryptenroll File 50.53 KB 0755
systemd-delta File 26.37 KB 0755
systemd-detect-virt File 18.37 KB 0755
systemd-escape File 22.37 KB 0755
systemd-hwdb File 118.66 KB 0755
systemd-id128 File 26.37 KB 0755
systemd-inhibit File 22.39 KB 0755
systemd-machine-id-setup File 18.48 KB 0755
systemd-mount File 50.59 KB 0755
systemd-notify File 22.38 KB 0755
systemd-path File 18.37 KB 0755
systemd-run File 62.57 KB 0755
systemd-socket-activate File 26.37 KB 0755
systemd-stdio-bridge File 22.38 KB 0755
systemd-sysext File 46.49 KB 0755
systemd-sysusers File 62.68 KB 0755
systemd-tmpfiles File 98.57 KB 0755
systemd-tty-ask-password-agent File 34.37 KB 0755
systemd-umount File 50.59 KB 0755
tabs File 18.3 KB 0755
tac File 98.41 KB 0755
tail File 66.52 KB 0755
tar File 505.81 KB 0755
taskset File 22.38 KB 0755
tee File 34.51 KB 0755
tempfile File 14.02 KB 0755
test File 42.44 KB 0755
tic File 86.41 KB 0755
timedatectl File 815 B 0755
timedatectl.real File 46.37 KB 0755
timeout File 38.95 KB 0755
tload File 18.24 KB 0755
toe File 22.3 KB 0755
top File 130.06 KB 0755
touch File 90.51 KB 0755
tput File 26.34 KB 0755
tr File 46.51 KB 0755
true File 26.3 KB 0755
truncate File 34.51 KB 0755
tset File 26.31 KB 0755
tsort File 46.51 KB 0755
tty File 30.51 KB 0755
tzselect File 15.02 KB 0755
ucf File 40.9 KB 0755
ucfq File 18.91 KB 0755
ucfr File 10.47 KB 0755
uclampset File 26.38 KB 0755
udevadm File 1.08 MB 0755
umount File 34.38 KB 4755
uname File 34.51 KB 0755
uncompress File 2.29 KB 0755
unexpand File 34.53 KB 0755
uniq File 42.51 KB 0755
unlink File 30.51 KB 0755
unshare File 30.6 KB 0755
unsquashfs File 131.9 KB 0755
update-alternatives File 58.24 KB 0755
uptime File 14.23 KB 0755
users File 34.51 KB 0755
utmpdump File 22.38 KB 0755
vcs-run File 6.75 KB 0755
vdir File 134.98 KB 0755
vi File 1.45 MB 0755
view File 1.45 MB 0755
vim.tiny File 1.45 MB 0755
vmstat File 38.24 KB 0755
w File 22.23 KB 0755
wall File 22.38 KB 0755
watch File 26.6 KB 0755
wc File 42.42 KB 0755
wdctl File 30.4 KB 0755
whereis File 30.84 KB 0755
which File 946 B 0755
which.debianutils File 946 B 0755
who File 50.52 KB 0755
whoami File 30.51 KB 0755
wpa_passphrase File 14.31 KB 0755
x86_64 File 26.65 KB 0755
xargs File 62.41 KB 0755
xdg-open File 38 B 0755
xdg-settings File 1.68 KB 0755
xxd File 18.28 KB 0755
yes File 30.38 KB 0755
ypdomainname File 22.23 KB 0755
zcat File 1.94 KB 0755
zcmp File 1.64 KB 0755
zdiff File 5.76 KB 0755
zdump File 26.21 KB 0755
zegrep File 29 B 0755
zfgrep File 29 B 0755
zforce File 2.03 KB 0755
zgrep File 7.91 KB 0755
zless File 2.15 KB 0755
zmore File 1.8 KB 0755
znew File 4.47 KB 0755