ti-enxame.com

+ ou @ marca após executar 'ls -al'

No Mac OS X, executar 'ls -al' me dá algo assim.

 drwxrwxrwx + equipe do smcho 136 maio 5 09:18 Público 
 drwxr-xr-x + 6 equipe do smcho 204 1 de fevereiro de 2010 Sites 
 drwxrwxrwx 9 equipe do smcho 306 2 de fevereiro de 2010 backup 
 drwxr-xr-x @ 36 funcionários da smcho 1224 4 de setembro 22:51 bin 
  • O que significa + ou @ no final da primeira coluna?
  • Isso é exclusivo para Mac ou comum no UNIX?

ADICIONADO

Após a resposta de Michael Mrozek, executei 'ls -ale' para obter o seguinte.

 drwx ------ + 66 funcionários smcho 2244 30 de agosto 13:40 Biblioteca 
 0: group: com.Apple.sharepoint.group.3 permite pesquisa 
 1: grupo: todos negam excluir 
 drwxr-xr-x 3 equipe do smcho 102 set 4 15:01 Correio 
 drwx ------ + 13 equipe do smcho 442 28 de agosto de 17:55 Filmes 
 0: grupo: todos negam exclusão 
 Drwx ------ + 6 funcionários smcho 204 9 de julho 09:37 Música 
 0: grupo: todos negam exclusão 
 drwx ------ + 11 funcionários smcho 374 28 de agosto 16:55 Imagens 
 0: group: everyone negy delete 
 drwxr-xr-x 3 funcionários smcho 102 Mar 18 15:43 Projetos 
 drwxrwxrwx + 4 funcionários da smcho 136 maio 5 09:18 Público 
 0: grupo: todos negam exclusão 
 drwxr-xr-x + 6 equipe da smcho 204 1º de fevereiro de 2010 Sites 
 0: group: todos negam exclusão 

O que essas mensagens anexadas significam? Por que eu os tenho para alguns arquivos? Não me lembro de fazer nada em particular por eles.

30
prosseek

O sufixo @ É exclusivo do Mac OS e é coberto por esta pergunta ; portanto, copiei essa parte da minha resposta a partir daí; significa que o arquivo possui atributos estendidos . Você pode usar o utilitário de linha de comando xattr para visualizá-los e modificá-los:

xattr --list filename
xattr --set propname propvalue filename
xattr --delete propname filename

O sufixo + Significa que o arquivo tem uma lista de controle de acesso e é comum em qualquer * nix que suporte ACLs. Dar ls o sinalizador -e Fará com que ele mostre as ACLs associadas após o arquivo, e chmod pode ser usado para modificá-lo. A maior parte disso é da página de manual chmod:

Você adiciona uma ACL com chmod +a "type:name flag permission,..." E a remove com chmod -a. O argumento para chmod é bastante complicado:

  • o tipo é user ou group, para esclarecer se name está se referindo a um nome de usuário ou um nome de grupo. Se name for inequívoco, você poderá omitir o tipo
  • nome é o nome de usuário ou grupo ao qual a ACL se aplica
  • o sinalizador é allow se esta entrada da ACL estiver concedendo uma permissão ou deny se estiver negando uma permissão
  • permissão é a permissão real sendo modificada; você pode listar quantos quiser, separados por vírgula
    • delete - Permite que o arquivo/diretório seja excluído
    • readattr - Ler atributos básicos
    • writeattr - Escreva atributos básicos
    • readextattr - Leia atributos estendidos (usando xattr, de cima)
    • writeextattr - Grava atributos estendidos
    • readsecurity - Ler informações da ACL
    • escreve segurança - Grava informações da ACL
    • chown - Alterar proprietário
    • Permissões específicas do diretório
      • list - Mostra os arquivos/pastas no diretório
      • search - Encontre um arquivo/pasta no diretório por nome
      • add_file - Crie um novo arquivo no diretório
      • add_subdirectory - Crie um novo diretório no diretório
      • delete_child - Remova um arquivo/diretório no diretório
      • Controle de herança
        • file_inherit - ACLs no diretório são herdadas por arquivos
        • directory_inherit - ACLs no diretório são herdadas por subdiretórios
        • limit_inherit - impede que as ACLs herdadas por este diretório sejam herdadas por subdiretórios
        • only_inherit - Herdado por todos os itens recém-criados, mas ignorados
    • Permissões específicas do arquivo
      • read - Abra o arquivo para leitura
      • write - Abra o arquivo para escrever
      • anexar - Abrir o arquivo para anexar
      • execute - Execute o arquivo

No seu exemplo específico, a maioria das entradas da ACL é group:everyone deny delete. Ou seja, todos os usuários do grupo everyone (que naturalmente são todos) têm a permissão para excluir a pasta. Acredito que, embora não encontre nenhuma documentação sobre o assunto, essas são ACLs padrão para impedir a remoção de pastas raiz essenciais - alguém corrige isso se não for esse o caso. A única outra entrada é group:com.Apple.sharepoint.group.3 allow search, Que permite aos Serviços de Diretório procurar arquivos por nome na pasta /Library

40
Michael Mrozek