Por acidente, corri chmod -u filename
e removi todas as permissões que tinha filename
.
A página do manual não faz referência a uma -u
opção. Experimentando, pude concluir que ele remove não todas as permissões, mas apenas lê e executa o acesso, deixando o acesso de gravação intacto.
Então, o que isso faz exatamente?
Minha conclusão acima está errada, agora acho que o que ele faz é remover as permissões que o proprietário possui de todas as categorias.
Eu acho que o comportamento é análogo a a=u
, só que é -
, em vez de =
e a
podem ser descartados assim como pode com, por exemplo, a+x
.
permissions
chmod
y_wc
fonte
fonte
[ugoa...][[-+=][perms...]...]
, ondeperms
é zero ou mais letras do conjuntorwxXst
, ou uma única letra do conjuntougo
" (página man chmod GNU); O POSIX é bastante obscuro, mas define uma produção "permcopy" para o mesmo efeito.u
), as permissões concedidas a outros usuários membros do grupo de arquivos (g
) , e as permissões concedidas a usuários que não estão em nenhuma das duas categorias anteriores (o
). "u
, especificarei as permissões concedidas ao usuário que possui o arquivo. Mas não diz o que faz. O que especificar mesmo significa?Respostas:
Esta não é uma opção, mas uma maneira padrão (mas incomum) de especificar as permissões. Isso significa remover (
-
) as permissões associadas com o dono do arquivo (u
), para todos os usuários (sem precedentesu
,g
ouo
). Isso está documentado na página do manual.A página de manual do GNU chmod documenta isso como:
e depois
Portanto,
-u
significa remover (-
) quaisquer permissões atualmente ativadas para o proprietário (u
) para todos (equivalente aa-u
, exceto honrar a umask atual). Embora isso muitas vezes não seja muito útil, àschmod +u
vezes o análogo é copiar as permissões do proprietário para outras pessoas quando operar recursivamente, por exemplo.Também está documentado no POSIX , mas é mais obscuramente definido: a especificação da permissão é ampla
who[+-=]perms
(ou um número) e o efeito disso é especificado mais detalhadamente:e depois
fonte
perms
pode seru
que eu consegui. Sim,u
especifica as permissões ou o proprietário. Mas como segue que-u
remove as permissões do proprietário (móduloumask
) de todos os usuários?-
sempre faz: remove as permissões especificadas da classe especificada de usuários.-u
é exatamente análogo a-w
(ou mais próximo) deugo-u
.chmod
questão de documentação? Deixe-me saber se você acha que isso merece uma pergunta separada. "and = faz com que eles sejam adicionados e faz com que os bits não mencionados sejam removidos, exceto que os bits de ID do grupo e usuário não mencionados do diretório não são afetados." Isso, para mim, está dizendo que, dado um diretório cujo proprietário possui apenas acesso de gravação,chmod u=rx directory
deixará as permissões do proprietário comorwx
. Mas não é isso que acontece, eles se tornam o esperador-x
. Estou interpretando mal alguma coisa?s
bits setuid / setgid ( ) são deixados em paz se você não os mencionar, e qualquer outra coisa que você não especificou é removida.A resposta é um pouco semelhante a /unix//a/429424/255251 .
não remove toda a permissão, mas considera
umask
valor.Agora altere o valor umask
fonte