chmod: O que significa o parâmetro `+ a`?

16

Eu estava seguindo um tutorial e ele me disse para executar

sudo chmod +a "SOME_PARAMS" some/dir

Fiquei surpreso ao ver que falha me dizendo

chmod: invalid mode: `+a'

Então, eu me pergunto: o que significa esse +amodo? Como eu o traduzia em algo que o Ubuntu entende? E também gosto de saber por que não é universalmente suportado.

k0pernikus
fonte

Respostas:

24

Eu nunca vi +a, apenas algo como o chmod a+rque significa "adicionar permissões de leitura a todos os usuários" (proprietário / usuário, grupo, outros).

De man 1 chmod:

O formato de um modo simbólico é [ugoa ...] [[+ - =] [perms ...] ...], onde perms é zero ou mais letras do conjunto rwxXst ou uma única letra do conjunto ugo. Vários modos simbólicos podem ser dados, separados por vírgulas.

Uma combinação das letras ugoa controla quais acessos de usuários ao arquivo serão alterados: o usuário que possui (u), outros usuários do grupo de arquivos (g), outros usuários que não pertencem ao grupo de arquivos (o) ou todos usuários (a). Se nada disso for dado, o efeito é como se um fosse, mas os bits definidos no umask não serão afetados.

Certo, como você disse em um comentário, é específico do Mac OS X. Em http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/chmod.1.html :

As opções de manipulação da ACL são as seguintes:

+ a
O modo + a analisa uma nova entrada da ACL a partir do próximo argumento na linha de comando e a insere no local canônico na ACL. Se a entrada fornecida se referir a uma identidade já listada, as duas entradas serão combinadas.

Lekensteyn
fonte
5
Não é tanto um erro, mas mais MacOS específica developer.apple.com/library/mac/#documentation/Darwin/Reference/...
k0pernikus