
The regular chown system call will dereference a symlink and apply ownership changes to the file at which it points. some oses provide system calls that do not dereference a symlink but instead apply their changes directly to the named path, even if that path is a symlink (in much the same way that lstat will return attributes of a symlink rather than the file at which it points).
file::lchown provides a wrapper around those system calls.