diff --git a/System/Posix/Files.hsc b/System/Posix/Files.hsc
index c8b5ddf3fd1196b10580e4ec9c28aa63bd807f14..7c209872042483e6e3af033300fa833ef6af7507 100644
--- a/System/Posix/Files.hsc
+++ b/System/Posix/Files.hsc
@@ -152,7 +152,8 @@ access name flags =
     if (r == 0)
         then return True
         else do err <- getErrno
-                if (err == eACCES || err == eROFS || err == eTXTBSY)
+                if (err == eACCES || err == eROFS || err == eTXTBSY ||
+                    err == ePERM)
                    then return False
                    else throwErrnoPath "fileAccess" name
 
diff --git a/System/Posix/Files/ByteString.hsc b/System/Posix/Files/ByteString.hsc
index 1b346a77d767205541c1ba559a7d8e8d3e728686..dc1a3f843b4c31e8fae6d236cc1ad5e45ac7452d 100644
--- a/System/Posix/Files/ByteString.hsc
+++ b/System/Posix/Files/ByteString.hsc
@@ -158,7 +158,8 @@ access name flags =
     if (r == 0)
         then return True
         else do err <- getErrno
-                if (err == eACCES || err == eROFS || err == eTXTBSY)
+                if (err == eACCES || err == eROFS || err == eTXTBSY ||
+                    err == ePERM)
                    then return False
                    else throwErrnoPath "fileAccess" name