From 9460712a591118bc1bb923f3ed7f6c251898cc4c Mon Sep 17 00:00:00 2001
From: Gregor Robinson <gregor@fiatflux.co.uk>
Date: Mon, 5 Aug 2013 22:06:46 +0200
Subject: [PATCH] File permission special case for NTFS-3g on POSIX.

Fix issue #347, "*SensitiveFilePermissions fails on ntfs-3g mounted filesystems".
---
 src/shared.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/shared.py b/src/shared.py
index 214c124f..9b8c9325 100644
--- a/src/shared.py
+++ b/src/shared.py
@@ -346,6 +346,19 @@ def checkSensitiveFilePermissions(filename):
         # Windows systems.
         return True
     else:
+        try:
+            # Skip known problems for non-Win32 filesystems without POSIX permissions.
+            import subprocess
+            fstype = subprocess.check_output('stat -f -c "%%T" %s' % (filename),
+                                             shell=True,
+                                             stderr=subprocess.STDOUT)
+            if 'fuseblk' in fstype:
+                logger.info('Skipping file permissions check for %s. Filesystem fuseblk detected.',
+                            filename)
+                return True
+        except:
+            # Swallow exception here, but we might run into trouble later!
+            logger.error('Could not determine filesystem type.', filename)
         present_permissions = os.stat(filename)[0]
         disallowed_permissions = stat.S_IRWXG | stat.S_IRWXO
         return present_permissions & disallowed_permissions == 0