--- a/src/su.c
+++ b/src/su.c
@@ -1122,8 +1122,12 @@ int main (int argc, char **argv)
 
 		if (fd >= 0) {
 			err = ioctl (fd, TIOCNOTTY, (char *) 0);
+			if (-1 == err && ENOTTY == errno) {
+				/* There are no controlling terminal already */
+				err = 0;
+			}
 			(void) close (fd);
-		} else if (ENXIO == errno) {
+		} else if (ENXIO == errno || EACCES == errno) {
 			/* There are no controlling terminal already */
 			err = 0;
 		}