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

67

Quando eu ls -la, ele imprime muitos atributos. Algo assim:

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

Vergonhosamente, tenho que confessar que não sei o significado exato de cada atributo. Por exemplo, qual é o significado de grande Sna string -rwSrwSr--? Qual é o seguinte 1? Eu conheço os outros aproximadamente.

Eonil
fonte
19
Eonil: Não há nada de vergonhoso em precisar fazer uma pergunta, afinal, é disso que trata este site. E quanto aos que dizem RTFM, muitos de nós FAZEM ISSO e ainda não conseguimos encontrar a resposta mais simples depois de percorrer páginas de documentação escrita por programadores difícil de ler (e eu sou programador). Em alguns casos, estamos em sistemas em que as páginas de manual não foram instaladas. Por todos esses motivos e muitos outros, sites como esse são uma dádiva de Deus. Obrigado por fazer a mesma pergunta que eu tive.
Alan
11
Ótima pergunta - muito específica, juntamente com um exemplo concreto.
06516 Ole

Respostas:

49

A documentação do lscomando responde a essas perguntas. Na maioria das variantes unix, consulte a lspágina do manual ( man lsou online). No Linux, procure a documentação Info ( info ls) ou online .

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

Quando um diretório tiver permissões setuid (ou setgid), todos os arquivos criados nesse diretório pertencerão ao usuário (ou grupo) que corresponde ao proprietário (ou grupo) do diretório.

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

Gilles 'SO- parar de ser mau'
fonte
5
O que significa no OS X quando aplicado a um diretório? Por exemplo, $ ls /Usersretornadrws--S---+ 12 jdoe staff 408 Jul 9 2013 jdoe
4
@jww Isso significa que os arquivos criados nesse diretório pertencerão ao grupo que possui o diretório, mas esse é o padrão no OSX de qualquer maneira. Veja en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories e unix.stackexchange.com/questions/12842/…
Gilles 'SO- deixa de ser mau'
@ Gilles, Quando você disse que um arquivo não é "executável"? Isso significa que não possui o privilégio executável ou que não é um tipo de arquivo que pode ser executado?
Ransh 28/08
@ransh Quero dizer a xpermissão execute ( ).
Gilles 'SO- stop be evil'
Eu enviei uma edição semelhante ao ponto feito na resposta de @ Jag abaixo
qneill
16

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

`s '
Se o bit setuid ou setgid e o bit executável correspondente estiverem configurados.

`S '
Se o bit setuid ou setgid estiver definido, mas o bit executável correspondente não estiver definido.

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

Esteira
fonte
2
Basicamente é isso que você começa comchmod g-x,g+s dir
sanmai
6

Em termos (esperançosamente mais simples), isso significa. O diretório é setgid. Todos os arquivos criados lá pertencerão a esse grupo de proprietários dessa pasta.

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

Hm .. Não tenho certeza se isso realmente parecia inglês simples acima ..

Entalhe
fonte
11
Essa resposta não fornece mais informações ou informações diferentes das respostas existentes.
Jayhendren
11
@jayhendren Sim, sim. Ele fala sobre diretórios. Nenhuma outra resposta faz isso. (Gilles provavelmente deve incorporar seu comentário em sua resposta.)
Sparhawk
0

É por causa do Executable está faltando

s -> 'x' está ativado S -> 'x' está desativado.

veja o exemplo abaixo

$ ls -l

total 0

-rwsrw-r--. 1 bpkmails bpkmails 0 Jun 25 20:18 ca

$ chmod u-x ca

$ ls -l

total 0

-rwSrw-r--. 1 bpkmails bpkmails 0 Jun 25 20:18 ca

$
praveen kumar
fonte
Você poderia explicar o que isso acrescenta às respostas existentes?
Stephen Kitt