Como leio permissões numéricas maiores que 777?

0

Eu percebi isso agora, ao usar find e stat para obter as permissões de todos os itens em /usr/local/share/locale antes de alterá-los recursivamente . stat mostra as permissões em um formato numérico com o qual não estou familiarizado - todos os diretórios são 40755 e os arquivos são 100644 . Eu estou supondo que os últimos três são apenas permissões octal normais (que eu já conheço), mas o que significam os 40 s e 100 s?

    
por Blacklight Shining 13.08.2012 / 09:25

1 resposta

3

stat(1) é basicamente um wrapper para stat(2) , e a página do manual de stat(2) revela isso:

 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 */

Assim, o líder 100 significa que é um arquivo normal e o líder 40 significa que é um diretório.

    
por 13.08.2012 / 11:41