The man page for access(2) tells :
Warning: Using access() to check if a user is authorized to, for example, open a file before actually doing so using open(2) creates a security hole, because the user might exploit the short time interval between checking and opening the file to manipulate it. For this reason, the use of this system call should be avoided.
So, what kind of security hole it creates?
If somebody doesn't like linux.die.net, here is from freebsd.org and manpagez with similar text to avoid use of access().