chmod lança o operando ausente em 764, OK em 664

2

Tendo definido tudo no meu projeto como 777 ( rwxrwxrwx ) para fins de depuração, eu queria discar a abertura e definir os diretórios (não os arquivos) na pasta raiz como 664 ( rw-rw-r-- ).

Para fazer isso eu usei (de Como listar pastas usando comandos bash? ):

chmod 664 -- */

Isso funcionou como esperado. Então percebi que precisava do bit de execução nos diretórios para inseri-los. Então eu tentei:

chmod 764 -- */

Mas isso gerou um erro missing operand after "764" .

Eu posso alterar as permissões manualmente ( chmod 764 <dir-name> ) e não há muitos diretórios, então não é um grande problema, mas eu gostaria de entender.

Por que não consigo usar chmod 764 */ para definir os diretórios no meu caminho atual para rwxrw-r-- ?

    
por user60177 24.01.2015 / 21:36

1 resposta

1

Isso faria sentido se você tivesse definido as opções do shell glob para que

  • * inclui nomes iniciados por . e
  • um curinga que não corresponde a nada simplesmente desaparece, em vez de persistir como ele mesmo. (Por exemplo, se você não tiver arquivos cujos nomes comecem com foo , o comando echo foo* imprime uma linha em branco em vez de imprimir foo* literalmente.

Se o acima for verdadeiro, o primeiro conjunto de comandos . para o modo 664, o que significa que você não tinha permissão para ler . quando emitiu o segundo comando. Por isso, o */ não pôde ser expandido e chmod 764 -- */ tornou-se chmod 764 -- .

    
por 24.01.2015 / 22:18