Como mapear permissões de acesso chmod para um inteiro

0

Me deparei com uma parte do código onde as permissões chmod estão sendo mapeadas para um número inteiro.

33204 // -rw-rw-r--
36863 // -rwsrwsrwt
36855 // -rwsrwSrwt
36799 // -rwSrwsrwt
36351 // -rwsrwsrwx
36343 // -rwsrwSrwx

Como essas permissões são mapeadas para um número inteiro?

Estou tentando encontrar para quais permissões esses números 33261, 41453 estão mapeados? Eu olhei para vários links, mas eu poderia encontrar um que converte permissões em um número. Alguém pode me ajudar com a conversão? Obrigado antecipadamente!

    
por SyncMaster 20.07.2017 / 02:24

1 resposta

1

Eles só fazem "sentido" em octal. Aqui está a primeira linha usando um dos meus programas para converter:

$ hex 33204
33204: 33204 0100664 0x81b4 text "14" utf8 064

O 0100664 significa que é um arquivo normal com leitura / gravação (usuário), leitura / gravação (grupo) e somente leitura (outro). As páginas de manual chmod devem mencionar isso, mas o primeiro bit (o valor S_IFREG ) não é mencionado - mesmo por POSIX - com a mesma freqüência que os outros sinalizadores. Aqui está um exemplo de um cabeçalho:

#define S_IFMT  00170000
#define S_IFSOCK 0140000
#define S_IFLNK  0120000
#define S_IFREG  0100000
#define S_IFBLK  0060000
#define S_IFDIR  0040000
#define S_IFCHR  0020000
#define S_IFIFO  0010000
#define S_ISUID  0004000
#define S_ISGID  0002000
#define S_ISVTX  0001000

Leitura adicional:

por 20.07.2017 / 02:27