A extensão do arquivo no Linux não é nada especial, é apenas uma parte do nome do arquivo. O agrupamento de arquivos do shell usa *
para todos os caracteres, para que você possa usar apenas chmod a+x *
em vez de .
Quando eu estou prestes a mudar minha permissão de arquivo como este
$ sudo chmod a+x *.*
Este erro aparece
chmod: cannot access ‘*.*’: No such file or directory
E quando eu quiser mudar a permissão de cada arquivo em um diretório com
$ sudo chmod a+x directory/*
O mesmo erro aparece
chmod: cannot access ‘directory/*’: No such file or directory
Quando eu tento o mesmo comando em outro diretório ele funciona, mas sob este diretório / var / www / html não funciona, mas mesmo quando eu mudar o arquivo de permissão por arquivo para um + x quando eu corro
ls
Um erro de permissão aparece
ls: cannot open directory .: Permission denied
A extensão do arquivo no Linux não é nada especial, é apenas uma parte do nome do arquivo. O agrupamento de arquivos do shell usa *
para todos os caracteres, para que você possa usar apenas chmod a+x *
em vez de .
O problema ls
parece que você não tem privilégios suficientes no diretório. Como o link afirma: os diretórios precisam do conjunto de permissões de execução para poder ver seu conteúdo.
cd
de volta a um nível e veja quais são as permissões no diretório do qual você acabou de sair. sudo
não lhe dá nenhum direito de acessar uma pasta se o usuário root não tiver direitos para essa pasta. Talvez sudo -u <username>
possa ajudar.
Se você precisar recorrer pela árvore de diretórios abaixo do seu ponto de partida, use chmod -R
.
Primeiro, gostaria de reconhecer as respostas existentes:
*
para um caractere geral no Ubuntu (ou, eu acredito, Unix em geral). (É possível que directory
no seu exemplo esteja vazio, causando o erro chmod: cannot access ‘directory/*’: No such file or directory
?) R
flag em chmod
para fazê-lo percorrer a árvore de forma recursiva, alterando as permissões de tudo em seu ponto atual. Ou seja, use chmod -R directory
, ou se você não tiver privilégios sudo chmod -R directory
(no entanto, certifique-se de não alterar inadvertidamente as permissões nos arquivos do sistema ao usar sudo
to chmod
; seu próprio usuário simplesmente não tem privilégios para fazer isso, tornando a primeira variante mais segura). No entanto, gostaria de acrescentar que talvez você não queira alterar as permissões dos diretórios da mesma forma que os arquivos '. Conforme explicado na documentação oficial , a permissão de leitura ( r
) para diretórios significa ser capaz de visualizar seu conteúdo (como como usando ls
), a permissão write ( w
) permite que um usuário crie / remova arquivos nele e a permissão de execução ( x
) para cd
dentro. Há uma ótima resposta aqui sugerindo um método para distinguir entre arquivos e diretórios ao aplicar novas permissões recursivamente. A variante que usa xargs
é supostamente mais rápida . Você pode querer adicionar o r
flag a xargs
para evitar um erro no caso de find
não retornar nada, e se você precisar de root
privileges você deve usar sudo
para as duas metades do pipe (novamente cuidado quando chmod
ing como root
), de modo que seria:
onde [desired-*-permissions]
pode receber explicitamente ( 777
) ou usando cartas (como a+x
).