Depending on what you're doing, you may want lstat rather than stat. lstat does not follow symlinks, but instead gives information on the link itself.
The upper bits aren't as magic as they may seem - they tell the file type. From man 2 stat:
The following flags are defined for the st_mode field:To make those constants portable and available by name in perl, use Fcntl ':mode';
S_IFMT 0170000 bitmask for the file type bitfields
S_IFSOCK 0140000 socket
S_IFLNK 0120000 symbolic link
S_IFREG 0100000 regular file
S_IFBLK 0060000 block device
S_IFDIR 0040000 directory
S_IFCHR 0020000 character device
S_IFIFO 0010000 fifo
S_ISUID 0004000 set UID bit
S_ISGID 0002000 set GID bit (see below)
S_ISVTX 0001000 sticky bit (see below)
S_IRWXU 00700 mask for file owner permissions
S_IRUSR 00400 owner has read permission
S_IWUSR 00200 owner has write permission
S_IXUSR 00100 owner has execute permission
S_IRWXG 00070 mask for group permissions
S_IRGRP 00040 group has read permission
S_IWGRP 00020 group has write permission
S_IXGRP 00010 group has execute permission
S_IRWXO 00007 mask for permissions for others (not in group)
S_IROTH 00004 others have read permission
S_IWOTH 00002 others have write permisson
S_IXOTH 00001 others have execute permission
The set GID bit (S_ISGID) has several special uses: For a directory
it indicates that BSD semantics is to be used for that directory:
files created there inherit their group ID from the directory, not
from the effective gid of the creating process, and directories
created there will also get the S_ISGID bit set. For a file that
does not have the group execution bit (S_IXGRP) set, it indicates
mandatory file/record locking.
The `sticky' bit (S_ISVTX) on a directory means that a file in that
directory can be renamed or deleted only by the owner of the file,
by the owner of the directory, and by root.
After Compline,
Zaxo
In reply to Re: converting stat() $mode to unix file permissions
by Zaxo
in thread converting stat() $mode to unix file permissions
by hhoffman
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |