NAME
File::lchown
- modify attributes of symlinks without dereferencing them
SYNOPSIS
use File::lchown qw( lchown lutimes );
lchown $uid, $gid, $linkpath or die "Cannot lchown() - $!";
lutimes $atime, $mtime, $linkpath or die "Cannot lutimes() - $!";
DESCRIPTION
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).
FUNCTIONS
$count = lchown $uid, $gid, @paths
Set the new user or group ownership of the specified paths, without dereferencing any symlinks. Passing the value -1
as either the $uid
or $gid
will leave that attribute unchanged. Returns the number of files successfully changed.
$count = lutimes $atime, $mtime, @paths
Set the access and modification times on the specified paths, without dereferencing any symlinks. Passing undef
as both $atime
and $mtime
will update the times to the current system time.
Note that for both lchown
and lutimes
, if more than one path is given, if later paths succeed after earlier failures, then the value of $!
will not be reliable to indicate the nature of the failure. If you wish to use $!
to report on failures, make sure only to pass one path at a time.
TODO
Implement sub-second precision on
lutimes
, most likely by taking floats or two-element ARRAY refs, similar toTime::HiRes
uses.
SEE ALSO
lchown(2)
- change ownership of a filelutimes(2)
- change file timestamps
AUTHOR
Paul Evans <leonerd@leonerd.org.uk>