Qual é a diferença entre "s" e "S" em ls -la?

51

Quando eu ls -la , ele imprime muitos atributos. Algo parecido com isto:

-rwSrwSr-- 1 www-data www-data   45 2012-01-04 05:17 README

Sinceramente, tenho que confessar que não sei o significado exato de cada atributo. Por exemplo, qual é o significado de grande S na string -rwSrwSr-- ? Qual é o seguinte 1 ? Eu conheço outros mais ou menos.

    
por Eonil 05.01.2012 / 12:52

3 respostas

38

A documentação do comando ls responde a essas perguntas. Na maioria das variantes unix, procure a página ls man ( man ls ou online). No Linux, procure a documentação Info ( info ls ) ou on-line .

A letra s indica que o bit setuid (ou setgid, dependendo da coluna) está definido. Quando um executável é setuid, ele é executado como o usuário que possui o arquivo executável em vez do usuário que invocou o programa. A letra s substitui a letra x . É possível que um arquivo seja setuid mas não executável; isso é denotado por S , onde o capital S avisa que essa configuração está provavelmente errada porque o bit setuid é (quase sempre) inútil se o arquivo não for executável.

Quando um diretório tem permissões setuid (ou setgid), quaisquer arquivos criados nesse diretório pertencerão ao usuário (ou grupo) correspondente ao proprietário (ou grupo) do diretório.

O número após as permissões é o link físico . Um link físico é um caminho para um arquivo (um nome, em outras palavras). A maioria dos arquivos tem um único caminho, mas você pode fazer mais com o comando ln . (Isso é diferente dos links simbólicos: um link simbólico diz "oh, na verdade, esse arquivo está em outro lugar, vá para < location >".) Os diretórios possuem N + 2 links físicos onde N é o número de subdiretórios, porque eles podem ser acessados de seus pais, de si mesmos (por meio da entrada . ) e de cada subdiretório (por meio da entrada .. ).

    
por 06.01.2012 / 00:59
14

De acordo com info coreutils ls (que pode não ser exatamente o que você tem):

's'
If the setuid or setgid bit and the corresponding executable bit are both set.

'S'
If the setuid or setgid bit is set but the corresponding executable bit is not set.

O número após a parte da permissão é o número de links físicos.

    
por 05.01.2012 / 13:29
5

Em termos (esperamos que mais simples), isso significa. O diretório é setgid. Todos os arquivos criados nele serão de propriedade desse grupo do proprietário dessa pasta.

No entanto, a pasta não é executável pelo grupo, por isso é mostrada em maiúscula S. Isso é tipicamente quando um diretório está sendo criado e o diretório terminará como setgid.

Hm .. Não tenho certeza se isso realmente soa como simples Inglês acima ..

    
por 06.12.2016 / 00:50