]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - config/cfgroot/ids-functions.pl
ids-functions.pl: Set correct ownership for the stored error file.
[ipfire-2.x.git] / config / cfgroot / ids-functions.pl
index 2a358b1cc114faede8a879d14113a6c5807ac837..efe89b512f6f4530fae6c2eac23b2e14a8d0f267 100644 (file)
@@ -387,6 +387,9 @@ sub _store_error_message ($) {
 
         # Close file.
         close (ERRORFILE);
+
+       # Set correct ownership for the file.
+       &set_ownership("$storederrorfile");
 }
 
 #
@@ -794,4 +797,48 @@ sub generate_ignore_file() {
        close(FILE);
 }
 
+#
+## Function to set correct ownership for single files and directories.
+#
+
+sub set_ownership($) {
+       my ($target) = @_;
+
+       # User and group of the WUI.
+       my $uname = "nobody";
+       my $grname = "nobody";
+
+       # The chown function implemented in perl requies the user and group as nummeric id's.
+       my $uid = getpwnam($uname);
+       my $gid = getgrnam($grname);
+
+       # Check if the given target exists.
+       unless ($target) {
+               # Stop the script and print error message.
+               die "The $target does not exist. Cannot change the ownership!\n";
+       }
+
+       # Check weather the target is a file or directory.
+       if (-f $target) {
+               # Change ownership ot the single file.
+               chown($uid, $gid, "$target");
+       } elsif (-d $target) {
+               # Do a directory listing.
+               opendir(DIR, $target) or die $!;
+                       # Loop through the direcory.
+                       while (my $file = readdir(DIR)) {
+
+                               # We only want files.
+                               next unless (-f "$target/$file");
+
+                               # Set correct ownership for the files.
+                               chown($uid, $gid, "$target/$file");
+                       }
+
+               closedir(DIR);
+
+               # Change ownership of the directory.
+               chown($uid, $gid, "$target");
+       }
+}
 1;