This repository has been archived by the owner. It is now read-only.

fs.Stats mode attribute #3045

Closed
gagle opened this Issue Mar 31, 2012 · 4 comments

Comments

Projects
None yet
4 participants
@gagle

gagle commented Mar 31, 2012

fs.Stats

Can someone explain what is the mode attribute number? In theory, the mode are the file permissions but they're not in octal mode due to strict mode restrictions. Then, how should I interpret the mode attribute?

Thanks.

@bnoordhuis

This comment has been minimized.

Member

bnoordhuis commented Mar 31, 2012

In theory, the mode are the file permissions but they're not in octal mode due to strict mode restrictions.

Not just file permissions, see below. Octal doesn't have anything to do with it, it's a number.

From man fstat (details may differ across platforms):

       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 UID 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

@bnoordhuis bnoordhuis closed this Mar 31, 2012

@isaacs

This comment has been minimized.

isaacs commented Apr 1, 2012

To see just the permissions in the standard octal format, you can do var permString = '0' + (stat.mode & 0777).toString(8)

@gagle

This comment has been minimized.

gagle commented Apr 1, 2012

Nice trick isaacs. You should include this snippet in the docs -the page I've posted- the show how to read the file permissions. But unfortunately, you can't use octal literals like 0777 in strict mode. So, to avoid octal literals we can use parseInt:
var permString = '0' + (stat.mode & parseInt('777', 8)).toString(8);

@smart--petea

This comment has been minimized.

smart--petea commented Jul 24, 2015

+1

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.