diff --git a/System/Posix/Files.hsc b/System/Posix/Files.hsc
index 1822294cb71b1fd601fa23c34a9f1d8c35894976..6aea6a9ead2e1c2cd451795fa1698e56242cb7b7 100644
--- a/System/Posix/Files.hsc
+++ b/System/Posix/Files.hsc
@@ -154,7 +154,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 cb68668c1c520455a012548686f727144fb9ec8f..ec58cb1b9716ccd07132e27dfa444f3ec734093c 100644
--- a/System/Posix/Files/ByteString.hsc
+++ b/System/Posix/Files/ByteString.hsc
@@ -147,22 +147,23 @@ fileExist name =
   withFilePath name $ \s -> do
     r <- c_access s (#const F_OK)
     if (r == 0)
-	then return True
-	else do err <- getErrno
-	        if (err == eNOENT)
-		   then return False
-		   else throwErrnoPath "fileExist" name
+        then return True
+        else do err <- getErrno
+                if (err == eNOENT)
+                   then return False
+                   else throwErrnoPath "fileExist" name
 
 access :: RawFilePath -> CMode -> IO Bool
 access name flags = 
   withFilePath name $ \s -> do
     r <- c_access s (fromIntegral flags)
     if (r == 0)
-	then return True
-	else do err <- getErrno
-	        if (err == eACCES)
-		   then return False
-		   else throwErrnoPath "fileAccess" name
+        then return True
+        else do err <- getErrno
+                if (err == eACCES || err == eROFS || err == eTXTBSY ||
+                    err == ePERM)
+                   then return False
+                   else throwErrnoPath "fileAccess" name
 
 
 -- | @getFileStatus path@ calls gets the @FileStatus@ information (user ID,
@@ -278,7 +279,7 @@ readSymbolicLink file =
   allocaArray0 (#const PATH_MAX) $ \buf -> do
     withFilePath file $ \s -> do
       len <- throwErrnoPathIfMinus1 "readSymbolicLink" file $ 
-	c_readlink s buf (#const PATH_MAX)
+        c_readlink s buf (#const PATH_MAX)
       peekFilePathLen (buf,fromIntegral len)
 
 foreign import ccall unsafe "readlink"
@@ -325,7 +326,7 @@ setSymbolicLinkOwnerAndGroup :: RawFilePath -> UserID -> GroupID -> IO ()
 setSymbolicLinkOwnerAndGroup name uid gid = do
   withFilePath name $ \s ->
     throwErrnoPathIfMinus1_ "setSymbolicLinkOwnerAndGroup" name
-	(c_lchown s uid gid)
+        (c_lchown s uid gid)
 
 foreign import ccall unsafe "lchown"
   c_lchown :: CString -> CUid -> CGid -> IO CInt