diff --git a/config/cfgroot/ids-functions.pl b/config/cfgroot/ids-functions.pl index 783fd0166..28f08182a 100644 --- a/config/cfgroot/ids-functions.pl +++ b/config/cfgroot/ids-functions.pl @@ -385,6 +385,12 @@ sub create_empty_file($) { ## If not, call suricatactrl to fix them. # sub _check_rulesdir_permissions() { + # Check if the rulepath main directory is writable. + unless (-W $rulespath) { + # If not call suricatctrl to fix it. + &call_suricatactrl("fix-rules-dir"); + } + # Open snort rules directory and do a directory listing. opendir(DIR, $rulespath) or die $!; # Loop through the direcory. diff --git a/src/misc-progs/suricatactrl.c b/src/misc-progs/suricatactrl.c index 61b76273d..cc674e0f5 100644 --- a/src/misc-progs/suricatactrl.c +++ b/src/misc-progs/suricatactrl.c @@ -32,7 +32,7 @@ int main(int argc, char *argv[]) { } else if (strcmp(argv[1], "reload") == 0) { safe_system("/etc/rc.d/init.d/suricata reload"); } else if (strcmp(argv[1], "fix-rules-dir") == 0) { - safe_system("chown nobody:nobody /etc/suricata/rules/*"); + safe_system("chown -R nobody:nobody /etc/suricata/rules/"); } else { fprintf(stderr, "\nBad argument given.\n\nsuricatactrl (start|stop|restart|reload)\n\n"); exit(1);