+ ou @ marca depois de executar 'ls -al' [duplicado]

27

No Mac OS X, o comando 'ls -al' me oferece algo assim.

drwxrwxrwx+  4 smcho  staff     136 May  5 09:18 Public
drwxr-xr-x+  6 smcho  staff     204 Feb  1  2010 Sites
drwxrwxrwx   9 smcho  staff     306 Feb  2  2010 backup
drwxr-xr-x@ 36 smcho  staff    1224 Sep  4 22:51 bin
  • Qual é o + ou @ no final da primeira coluna significa?
  • Isso é exclusivo do Mac ou comum no UNIX?

ADICIONADO

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

drwx------+ 66 smcho  staff    2244 Aug 30 13:40 Library
 0: group:com.apple.sharepoint.group.3 allow search
 1: group:everyone deny delete
drwxr-xr-x   3 smcho  staff     102 Sep  4 15:01 Mail
drwx------+ 13 smcho  staff     442 Aug 28 17:55 Movies
 0: group:everyone deny delete
drwx------+  6 smcho  staff     204 Jul  9 09:37 Music
 0: group:everyone deny delete
drwx------+ 11 smcho  staff     374 Aug 28 16:55 Pictures
 0: group:everyone deny delete
drwxr-xr-x   3 smcho  staff     102 Mar 18 15:43 Projects
drwxrwxrwx+  4 smcho  staff     136 May  5 09:18 Public
 0: group:everyone deny delete
drwxr-xr-x+  6 smcho  staff     204 Feb  1  2010 Sites
 0: group:everyone deny delete

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

    
por prosseek 06.09.2010 / 03:15

1 resposta

38

O sufixo @ é exclusivo do Mac OS e é coberto por essa pergunta , então copiei esta parte da minha resposta de lá; isso significa que o arquivo tem 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. Conceder ls o -e sinalizador mostrará as ACLs associadas após o arquivo, e chmod poderá ser usado para modificá-las. A maior parte disso é da página chmod man:

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

  • tipo é user ou group , para esclarecer se name está se referindo a um nome de usuário ou um nome de grupo. Se name não for ambíguo, você pode omitir o tipo
  • name é o nome de usuário ou grupo que a ACL aplica a
  • A bandeira é allow se essa entrada da ACL estiver concedendo uma permissão ou deny se estiver negando uma permissão
  • permissão é a permissão real que está sendo modificada; você pode listar quantas quiser, separadas por vírgula
    • delete - Permite que o arquivo / diretório seja excluído
    • readattr - Leia os atributos básicos
    • writeattr - Escreva atributos básicos
    • readextattr - Leia atributos estendidos (usando xattr , de cima)
    • writeextattr - Gravar atributos estendidos
    • readsecurity - Leia as informações da ACL
    • writesecurity - Gravar 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 pelo nome
      • add_file - Cria um novo arquivo no diretório
      • add_subdirectory - Cria um novo diretório no diretório
      • delete_child - Remove um arquivo / diretório no diretório
      • Controle de herança
        • file_inherit - as ACLs no diretório são herdadas por arquivos
        • directory_inherit - as ACLs no diretório são herdadas por subdiretórios
        • limit_inherit - Impede que as ACLs herdadas por esse diretório sejam herdadas por subdiretórios
        • only_inherit - Herdado por todos os itens recém-criados, mas ignorado
    • Permissões específicas do arquivo
      • read - Abra o arquivo para ler
      • write - Abra o arquivo para escrever
      • acrescentar - Abra 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 no grupo everyone (que é naturalmente todo mundo) não têm permissão para excluir a pasta. Eu acredito, embora eu não possa encontrar nenhuma documentação sobre isso, que estas são as ACLs padrão para impedir que você remova as pastas raiz essenciais - alguém corrija isso se não for o caso. A única outra entrada é group:com.apple.sharepoint.group.3 allow search , que permite que os Serviços de Diretório pesquisem arquivos por nome na pasta /Library

    
por 06.09.2010 / 03:19

Tags