Внутри API java.io вы можете убедиться, что проверки выполняются. Если вы хотите контролировать доступ (обходя сбой до того, как он произойдет), вы должны выполнить соответствующие проверки ДО внутренних проверок, выполненных вызовами API.
Java-код часто запускается на компьютерах, которые вы контролируете, но он также часто запускается на компьютерах, которые вы не контролируете. Подумайте о Java-апплетах. Они должны запросить разрешение на доступ к файловой системе, потому что автору программы не должен быть разрешен беспрепятственный доступ к файловой системе всех остальных.
Если вам нужно помешать одной группе людей совершить что-то вредоносное, вам нужно помешать всем, возможно, сделать что-то вредоносное, чтобы безопасность была реальной. В противном случае злоумышленники просто скажут, что они являются частью группы, которой не доверяют.
Исполняемый файл командной строки Java запускается по умолчанию с разрешениями, позволяющими вам касаться вашей собственной файловой системы. Предполагается, что если вы запустили программу локально, вы могли бы испортить части вашей файловой системы, к которым у вас был доступ в любом случае. Апплеты запускаются с удалением всех этих разрешений по умолчанию. Таким образом, пользователь, просматривающий веб-страницу, на которой находится апплет, должен вручную предоставить разрешения удаленной программе (апплету) на доступ к своей файловой системе.
То, что вы видите, является доказательством того, что не существует специальной задней двери, которая обходит безопасность для некоторых пользователей (или в некоторых условиях).