私は、sendmailのmqueueフォルダからデータを削除するPerlスクリプトを使用しています。SetuidからPerlへのスクリプト
Insecure dependency in chdir while running setuid at /file/find
それを解決して正常ルートprivelegesでスクリプトを実行する方法:IというPerlスクリプトにsetuid
し、ユーザーからそれを実行しようと、それはこのメッセージをスロー
?
!/usr/bin/perl
use strict;
my $qtool = "/usr/local/bin/qtool.pl";
my $mqueue_directory = "/var/spool/mqueue";
my $messages_removed = 0;
use File::Find;
# Recursively find all files and directories in $mqueue_directory
find(\&wanted, $mqueue_directory);
sub wanted {
# Is this a qf* file?
if (/^qf(\w{14})/) {
my $qf_file = $_;
my $queue_id = $1;
my $deferred = 0;
my $from_postmaster = 0;
my $delivery_failure = 0;
my $double_bounce = 0;
open (QF_FILE, $_);
while(<QF_FILE>) {
$deferred = 1 if (/^MDeferred/);
$from_postmaster = 1 if (/^S<>$/);
$delivery_failure = 1 if \
(/^H\?\?Subject: DELIVERY FAILURE: (User|Recipient)/);
if ($deferred && $from_postmaster && $delivery_failure) {
$double_bounce = 1;
last;
}
}
close (QF_FILE);
if ($double_bounce) {
print "Removing $queue_id...\n";
system "$qtool", "-d", $qf_file;
$messages_removed++;
}
}
}
print "\n$messages_removed total \"double bounce\" message(s) removed from ";
print "mail queue.\n";
goldilocksが解決策を提供しました。さて、setuidの実行ファイルを避け、 'sudo'を使用してください。あなたの監査人はあなたのセキュリティを高く評価し、プロセスRUID!= EUIDのためにエスカレートされた権限を取得することを拒否するソフトウェアがあると、驚くことはありません。 – JRFerguson