Noções básicas sobre os modos do sistema de arquivos Linux

1

Eu li mais de 10 artigos e estou tentando entender o sistema de arquivos linux. Há um ponto que estou tentando entender que não consigo entender. Perdoe-me por soar muito idiota:

Ao listar os detalhes do arquivo, recebo um "modo" numérico de um arquivo, que se refere a suas permissões. Alguns modos de exemplo:

33206
16822

De alguma forma, eles parecem precisar converter em octais e se parecem com algo assim:

0777

A partir daí, é possível deduzir as permissões legíveis por humanos, como:

drwxr-xr-x
-rwxr--r--

Estou tentando descobrir como ir desse primeiro passo para o terceiro. E eu estou totalmente perdido.

    
por dthree 06.08.2015 / 09:59

4 respostas

4

O primeiro conjunto de números provavelmente não tem nada a ver com o conjunto de permissões para o arquivo. Se você obteve essa informação usando ls -l , esse número corresponde ao tamanho do arquivo em bytes.

Os valores octal não são exibidos neste formato, mas o 'legível humano' é. A maneira que eu me lembro de octais é que o primeiro dos quatro dígitos é para fazer com bits especiais (setuid, setgid, pegajoso) estes são para uso mais avançado, então eu não me preocuparia com eles imediatamente. Então, cada conjunto legível de rwx humano compõe o valor dos próximos 3 dígitos, que são ordenados por proprietário, grupo e todos. r = 4, w = 2 e x = 1, então a leitura / gravação é 4 + 2 = 6.

A página de ajuda do Ubuntu é bem clara, eu acho.

Eu também sugeriria usar ls -lh para listar arquivos, já que o tamanho do arquivo é convertido para legível, então a saída é em Kilobytes, Megabytes e Gigabytes.

    
por Arronical 06.08.2015 / 10:18
4

Se você quer dizer por "notação decimal" "notação octal": ambas as notações octal e de caractere são comunicadas entre os usuários * nix.

Em particular, observe que em permissões em octal e caracteres podem ser divididos em 3 partes. Assim:

rwx | r-x | r-x
7   | 5   | 5

Agora observe a posição de cada letra.

  • Na primeira parte, é verdadeiro, verdadeiro, verdadeiro (ou set, set, set). Qual é o número 7 em octal? 111.

  • Segunda permissão? set, unset, set. Octal 5? 101. Como você pode ver a notação octal em bits corresponde às letras para set / unset.

Quanto aos três conjuntos, esse proprietário, o grupo desse usuário e outras permissões de usuários e grupos. No exemplo acima, o proprietário pode ler a gravação e a execução, mas os usuários no grupo do proprietário e outros usuários não podem gravar, eles só podem ler e executar um arquivo.

    
por Sergiy Kolodyazhnyy 06.08.2015 / 10:21
2

Você pode obter o valor octals com:

stat -c "%a %n" file

No entanto, há uma tonelada de calculadora de permissões de arquivos on-line:

e muito mais ...

    
por Arnon 09.08.2015 / 07:33
1

Obrigado por toda a ajuda e sugestões das outras respostas. Eu usei estas e algumas outras descobertas para juntar as seguintes soluções de conversão em JS:

converter = {

    listing: {
      '0': '---',
      '1': '--x',
      '2': '-w-',
      '3': '-wx',
      '4': 'r--',
      '5': 'r-x',
      '6': 'rw-',
      '7': 'rwx'
    },

    modeToRWX(mode) {
      let octal = this.modeToOctal(mode);
      let rwx = this.octalToRWX(octal);
      return rwx;
    },

    modeToOctal(mode) {
      let octal = '0' + (mode & 0o777).toString(8);
      return octal;
    },

    octalToRWX(octal) {
      if (!octal) { return void 0; }
      const list = this.listing;
      let full = String((octal.length === 4) ? octal : '0' + octal);
      let a = list[String(octal).charAt(1)];
      let b = list[String(octal).charAt(2)];
      let c = list[String(octal).charAt(3)];
      return a + b + c;
    }

}
    
por dthree 09.08.2015 / 18:11