Структура STAT - FUSE

  • оригинал здесь
  • Струкура stat (struct stat) содержит следующие поля (формат : тип+имя поля+описание):

    1. dev_t st_dev ID of device containing file
    2. ino_t st_ino inode number
    3. mode_t st_mode file permissions and type
    4. nlink_t st_nlink number of hard links
    5. uid_t st_uid user ID of file owner
    6. gid_t st_gid group ID of file owner
    7. dev_t st_rdev device ID (for special files)
    8. off_t st_size total size, in bytes
    9. blksize_t st_blksize block size for filesystem I/O
    10. blkcnt_t st_blocks number of blocks allocated
    11. time_t st_atime time of last access
    12. time_t st_mtime time of last modification
    13. time_t st_ctime time of last status change

    Поле модификации st_mode имеет следующие определённые флаги (могут служить значением для поля как вместе - так и в объединении) - формат описания флагов далее следующий = имя флага + его восьмеричное значение + описание:

    1. S_IFMT 0170000 bitmask for the file type bitfields
    2. S_IFSOCK 0140000 socket
    3. S_IFLNK 0120000 symbolic link
    4. S_IFREG 0100000 regular file
    5. S_IFBLK 0060000 block device
    6. S_IFDIR 0040000 directory
    7. S_IFCHR 0020000 character device
    8. S_IFIFO 0010000 FIFO
    9. S_ISUID 0004000 set UID bit
    10. S_ISGID 0002000 set-group-ID bit (see below)
    11. S_ISVTX 0001000 sticky bit (see below)
    12. S_IRWXU 00700 mask for file owner permissions
    13. S_IRUSR 00400 owner has read permission
    14. S_IWUSR 00200 owner has write permission
    15. S_IXUSR 00100 owner has execute permission
    16. S_IRWXG 00070 mask for group permissions
    17. S_IRGRP 00040 group has read permission
    18. S_IWGRP 00020 group has write permission
    19. S_IXGRP 00010 group has execute permission
    20. S_IRWXO 00007 mask for permissions for others (not in group)
    21. S_IROTH 00004 others have read permission
    22. S_IWOTH 00002 others have write permission
    23. S_IXOTH 00001 others have execute permission

    The set-group-ID 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 group ID 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, the set-group-ID bit 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 a privileged process.