O que "@" significa nas permissões de arquivo unix?


49

Eu tenho um arquivo com as seguintes permissões no meu MacBook Pro:

-rwxr-xr-x@ 1 root wheel 101K Feb 29 17:09 apachectl

O que @significa? Não consigo executar o arquivo e essa é a única coisa que me destaca. Como posso me livrar disso?

Como pano de fundo, copiei isso de um backup do Time Machine.

Respostas:


35

Se o arquivo ou diretório tiver atributos estendidos, você verá um @ no campo de permissões. Para informações de segurança estendidas (ACLs), você verá um +.

A partir man lsdo OS X:

-@      Display extended attribute keys and sizes in long (-l) output.

O xattrprograma pode ser usado para exibir e manipular atributos estendidos. Veja o que está lá antes de decidir excluir esses atributos. Definitivamente, dê uma olhada rápida na página de manual do xattr também.

Um exemplo rápido de um exemplo de código de compromisso PHP que eu mantenho aqui para referência:

$ ls -@l php-compromise.php 
-rw-r--r--@ 1 user  group  502620 Jul  5  2011 php-compromise.php
    com.apple.FinderInfo        32 
    com.apple.TextEncoding      15 

22

Obrigado a @Jeff pela correção. Eu estava lembrando erradamente.

  • O @é exibido com um atributo estendido está definido
  • O +é exibido para uma ACL.
  • Se você tiver um atributo e uma ACL, verá @.

Execute o comando ls -le filenamepara ver se ele possui alguma ACL definida.

Como seu problema parece estar ao acessar o arquivo, aposto que você tem uma ACL definida além de um atributo estendido.

Para se livrar de uma ACL, execute echo | sudo chmod -E filenameum arquivo ou echo | sudo chmod -R -E directory namediretório.

Veja a página de manual do chmod .


Obrigado pela resposta. como posso me livrar disso?
VinnyD

Atualizado com uma resposta que acredito que deve funcionar.
Zoredache

As permissões da ACL do @Zoredache vêm com um sinal de adição. O @ é "atributos estendidos".

Sim, estou vendo isso enquanto checo. Eu devo ter lembrado de trás para a frente. E o que acontece quando um arquivo tem os dois?
Zoredache

Deixa pra lá, eu tenho um Mac inicializado. Se você tiver um @atributo estendido e um +conjunto de ACL, parece que ls mostrará a @. Como ele está tendo problemas para acessar um arquivo, parece-me provável que o problema seja mais provável que ele tenha um problema com uma ACL.
precisa

8

Com o atributo quarentena da maçã, o chmod não é suficiente para removê-lo.

Você precisa remover o atributo explicitamente:

sudo xattr -d com.apple.quarantine my_file

O OP também perguntou "O que o @ representa?"
Kamafeather 10/10

3

A @representa atributos estendidos, além das permissões de arquivo padrão do Unix.

Verifique os atributos estendidos:

ls -l@

Redefina todos os atributos estendidos para um único arquivo:

sudo xattr -c <filepath>

Redefina todos os atributos estendidos recursivamente:

sudo xattr -rc <directory>
sudo chmod -R -N <directory>

Verificado no macOS High Sierra (10.13) e no macOS Mojave (10.14.6).


0

Descobri que o -Eou -Nsão realmente invisíveis, mesmo ao usar sudo. A única maneira de corrigir isso foi fazendo login como root


Isso não é uma resposta. Provavelmente deve ser um comentário para a resposta a que você está se referindo.
Kamafeather
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.