Why do octal permissions start with 40?
I just installed nemo and I am displaying the octal permission field. The permissions are things like 40755 and 100755. I am familiar with the last three digits (755) and I assume those are rwx permissions for owner, group and everyone else. What are the prefix permissions - the 40 and the 100 in my example?
They are the file type. 10 is a fifo, and 40 is a directory. From man 2 stat
:
The following flags are defined for the st_mode field: S_IFMT 0170000 bit mask for the file type bit fields 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-user-ID bit S_ISGID 0002000 set-group-ID 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 permission S_IXOTH 00001 others have execute permission
Remark/correction: octal permission is given on 7 positions:0000000 lets call them gfedcba.
Position "a" is for "others" and is the sum of the rights : 1 (execute or enter for a directory), 2 (write) and 4 (read). exemple: 7 is 4+2+1; 6 is 4+2 ...
Postion "b" is the same but for "group"
Position "c" is for the "owner"
Position "d" is for the sum of the special carracters: 1 for sticky (only the owner can rename or delete a file if this is set wathever are the other permissions) 2 for forced group (group of a new file will be the dir's group if the owner of the file is allowed to "write" in that dir) 4 for forced owner (owner of a new file will be the dir's owner if the real owner (the creator) of the file have the "write" permission in the dir)
Position "e" to "g" is for the "node" type: (001 is a FIFO) (002 is a carracter device) 004 is a dir 006 is a block device (you could find some in /dev) 010 is a file 012 is a symlink .. (See list in precedent reply)