如何读取大于 777 的数字权限?

如何读取大于 777 的数字权限?

我刚才注意到了这一点,在使用find和获取之前stat的所有项目的权限时/usr/local/share/locale递归地改变它们.stat以我不熟悉的数字格式显示权限 - 所有目录都是40755,文件是100644。我猜最后三个只是普通的八进制权限(我已经知道了),但是40s 和100s 是什么意思?

答案1

stat(1)主要是的包装器stat(2),并且的手册页stat(2)显示了这一点:

 The status information word st_mode has the following bits:

 #define S_IFMT   0170000  /* type of file */
 #define S_IFIFO  0010000  /* named pipe (fifo) */
 #define S_IFCHR  0020000  /* character special */
 #define S_IFDIR  0040000  /* directory */
 #define S_IFBLK  0060000  /* block special */
 #define S_IFREG  0100000  /* regular */
 #define S_IFLNK  0120000  /* symbolic link */
 #define S_IFSOCK 0140000  /* socket */
 #define S_IFWHT  0160000  /* whiteout */
 #define S_ISUID  0004000  /* set user id on execution */
 #define S_ISGID  0002000  /* set group id on execution */
 #define S_ISVTX  0001000  /* save swapped text even after use */
 #define S_IRUSR  0000400  /* read permission, owner */
 #define S_IWUSR  0000200  /* write permission, owner */
 #define S_IXUSR  0000100  /* execute/search permission, owner */

因此前导 100 表示它是一个常规文件,前导 40 表示它是一个目录。

相关内容