1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
#!/usr/bin/perl
use Getopt::Std;
use strict;
my %opts; getopts('tyqV', \%opts);
if (!$opts{'q'}) { open(QUIET, ">&STDOUT"); }
else { open(QUIET, ">>/dev/null"); }
print "\nA)dd, D)elete, or V)iew overrides, or Q)uit? [advq] ";
while (chomp(my $choice = <STDIN>)) {
if ($choice =~ /^\s*v/i) {
my @overrides = `dpkg-statoverride --list`;
print QUIET "\nProgram\t\t\t\t\tUser\tGroup\tMode\n";
if (!@overrides) { print "No file permissions have been overridden.\n"; }
foreach (@overrides) {
my @data = split / /;
chomp (my $program = pop @data);
print $program;
for (my $i = 40 - length $program; $i > 0; $i -= 8) { print "\t"; }
print join ("\t", @data);
print "\n";
}
print "\n";
} elsif ($choice =~ /^\s*d/i) {
print "Remove which override? ";
chomp (my $o = <STDIN>);
if ($o) { system('feta', feta_opts(), 'remove-overrides', $o); }
else { print STDERR "W: Not removing any override.\n"; }
} elsif ($choice =~ /^\s*a/i) {
my @params;
print "Add an override for: "; $params[3] = <STDIN>;
print "User: "; $params[0] = <STDIN>;
print "Group: "; $params[1] = <STDIN>;
print "Mode: "; $params[2] = <STDIN>;
chomp @params;
if (@params == 4) { system('feta', feta_opts(), 'add-override', @params); }
else { print STDERR "W: One or more fields were left blank; not overriding anything."; }
} elsif ($choice =~ /^\s*\q/i) { exit 0; }
else { $choice && print STDERR "Unknown command $choice.\n"; }
print "\nA)dd, D)elete, V)iew overrides, or Q)uit? [advq] ";
}
sub feta_opts {
my @opts;
foreach ('y','t','V','q') { if ($opts{$_}) { push (@opts, "-$_"); } }
return @opts;
}
|