reuse fcntl but skip on root