Index: trunk/include/sh_suidchk.h
===================================================================
--- trunk/include/sh_suidchk.h	(revision 118)
+++ trunk/include/sh_suidchk.h	(revision 119)
@@ -19,4 +19,5 @@
 int sh_suidchk_set_fps        (const char * c);
 int sh_suidchk_set_yield      (const char * c);
+int sh_suidchk_set_nosuid     (const char * c);
 int sh_suidchk_set_quarantine (const char * c);
 int sh_suidchk_set_qmethod    (const char * c);
Index: trunk/man/samhainrc.5
===================================================================
--- trunk/man/samhainrc.5	(revision 118)
+++ trunk/man/samhainrc.5	(revision 119)
@@ -303,4 +303,15 @@
 .BI SuidCheckFps= fps 
 Limit files per seconds for SUID check. 
+.br
+.BI SuidCheckNosuid= 0|1 
+Check filesystems mounted as nosuid. Defaults to not.
+.br
+.BI SuidCheckQuarantineFiles= 0|1 
+Whether to quarantine files. Defaults to not.
+.br
+.BI SuidCheckQuarantineMethod= 0|1|2
+Quarantine method. Delete = 1, remove suid/sgid flags = 1, move to quarantine directory = 2. Defaults to 1 (remove suid/sgid flags).
+.br
+.BI 
 .TP
 .I "[Mounts]"
Index: trunk/src/sh_suidchk.c
===================================================================
--- trunk/src/sh_suidchk.c	(revision 118)
+++ trunk/src/sh_suidchk.c	(revision 119)
@@ -112,4 +112,8 @@
   },
   {
+    N_("suidchecknosuid"),
+    sh_suidchk_set_nosuid
+  },
+  {
     N_("suidcheckquarantinefiles"),
     sh_suidchk_set_quarantine
@@ -134,4 +138,5 @@
 static time_t  ShSuidchkInterval = 7200;
 static long    ShSuidchkFps      = 0;
+static int     ShSuidchkNosuid   = S_FALSE;
 static int     ShSuidchkYield    = S_FALSE;
 static int     ShSuidchkQEnable  = S_FALSE;
@@ -954,6 +959,5 @@
 		  0 != strncmp (_("mmfs"),    fs, 4) && 
 		  0 != strncmp (_("msdos"),   fs, 5) &&
-		  0 != strncmp (_("nfs"),     fs, 3) && 
-		  0 != strncmp (_("nosuid"),  fs, 6) &&
+		  0 != strncmp (_("nfs"),     fs, 3) &&
 		  0 != strncmp (_("proc"),    fs, 4) &&
 		  0 != strncmp (_("vfat"),    fs, 4)
@@ -961,6 +965,8 @@
 		  )
 		{
-		  /* fprintf(stderr, "%s: %s\n", fs, tmpcat); */
-		  (void) sh_suidchk_check_internal(tmpcat);
+		  if ((ShSuidchkNosuid == S_TRUE) || 
+		      (0 != strncmp (_("nosuid"),  fs, 6)))
+		    /* fprintf(stderr, "%s: %s\n", fs, tmpcat); */
+		    (void) sh_suidchk_check_internal(tmpcat);
 		}
 	    }
@@ -1374,4 +1380,12 @@
 }
 
+int sh_suidchk_set_nosuid (const char * c)
+{
+  int i;
+  SL_ENTER(_("sh_suidchk_set_nosuid"));
+  i = sh_util_flagval(c, &ShSuidchkNosuid);
+  SL_RETURN(i, _("sh_suidchk_set_nosuid"));
+}
+
 int sh_suidchk_set_quarantine (const char * c)
 {
@@ -1907,5 +1921,5 @@
 	   */
 #ifdef HAVE_HASMNTOPT
-	  if (NULL == hasmntopt(mnt, "nosuid"))
+	  if (NULL == hasmntopt(mnt, "nosuid") || (ShSuidchkNosuid == S_TRUE))
 	    type = mnt->mnt_type;
 	  else
@@ -1985,5 +1999,5 @@
        /* patch by Konstantin Khrooschev <nathoo@co.ru> 
 	*/
-       if( fss.f_flag & ST_NOSUID )
+       if( (fss.f_flag & ST_NOSUID)  && (ShSuidchkNosuid == S_FALSE))
          type = _("nosuid");
     }
@@ -2035,7 +2049,7 @@
 #ifdef MNT_VISFLAGMASK
       flags = fss.f_flags & MNT_VISFLAGMASK;
-      if (flags & MNT_NOSUID)
+      if ((flags & MNT_NOSUID) && (ShSuidchkNosuid == S_FALSE))
 #else 
-      if (fss.f_flags & MNT_NOSUID) 
+      if ((fss.f_flags & MNT_NOSUID) && (ShSuidchkNosuid == S_FALSE)) 
 #endif
          type = _("nosuid");
