So instead, X does this:
if (access(Y, R_OK)) /* readable */ fd = open(Y, O_RDONLY); else ...
The trick:
What if Y is a different file at open time than at access?