Por que os caracteres do ponto de interrogação aparecem ao alterar as permissões do diretório?

26

Estou tentando alterar temporariamente as permissões de uma pasta cujas permissões iniciais são

[email protected]:/var/log$ ls -l squid*
squid3:
total 4
-rw-r----- 1 proxy proxy    0 Jan 16 14:43 access.log
-rw-r----- 1 proxy proxy 1359 Jan 16 14:43 cache.log
ls: cannot open directory squid-deb-proxy: Permission denied

para alguma coisa depois

[email protected]:/var/log$ sudo chmod -R 644 squid*
[email protected]:/var/log$ ls -l squid*
squid3:
ls: cannot access squid3/cache.log: Permission denied
ls: cannot access squid3/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log

squid-deb-proxy:
ls: cannot access squid-deb-proxy/store.log: Permission denied
ls: cannot access squid-deb-proxy/cache.log: Permission denied
ls: cannot access squid-deb-proxy/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log
-????????? ? ? ? ?            ? store.log

Você notará que após a mudança de permissões, haverá pontos de interrogação em todos os lugares. Por que isso está acontecendo? Eu basicamente quero ler o log de acesso para ver se o servidor squid-deb-proxy está recebendo solicitações do cliente ou não.

    
por Registered User 16.01.2013 / 21:08

3 respostas

29

Para ver as permissões de um diretório, você precisa passar o -d flag para ls , assim:

ls -ld squid3

Para ler um arquivo, sua permissão de leitura precisa ser definida. No entanto, para ler um diretório e a listagem de seus arquivos, as permissões de leitura e execução precisam ser definidas . Se não forem, você receberá erros estranhos como os que está enfrentando.

Para definir a permissão de leitura em arquivos e as permissões de leitura e execução em diretórios de forma recursiva, use este comando:

chmod -R a+rX directoryname

Aqui está uma explicação desse comando:

  • chmod é o nome do comando, usado para alterar as permissões dos arquivos.
  • -R é o sinalizador recursivo. Significa aplicar este comando ao diretório e a todos os seus filhos e filhos de seus filhos, e assim por diante.
  • a significa todos: aplique essas permissões ao proprietário do arquivo, ao proprietário do grupo do arquivo e a todos os outros usuários.
  • + significa adicionar as seguintes permissões, caso ainda não estejam definidas.
  • r significa a permissão de leitura.
  • X significa a permissão de execução, mas apenas nos diretórios. Em minúsculas x significaria a permissão de execução em arquivos e diretórios.

Mais informações são encontradas na página de manual do comando chmod .

    
por Flimm 16.01.2013 / 21:26
3

Eu também tive esse problema. Eu não poderia fazer chmod ou chown no arquivo. Eu tentei deletar. Acontece que tentar excluí-lo (comando rm) causou o problema. O kicker é que o arquivo é compartilhado entre dois sistemas diferentes . Depois de fechar o arquivo no outro sistema, o arquivo desapareceu. Veja mais detalhes da minha configuração. sistema 1: VM guest do Ubuntu. Aqui é onde eu fiz o comando rm. sistema 2: host do Windows 7. Foi aqui que eu abri o arquivo usando o comando less (no cygwin, não necessariamente relevante).

    
por Alan 21.04.2016 / 20:24
2

Como você afirmou que seu objetivo é ler /var/log/squid/access.log , sua melhor solução é digitar sudo less /var/log/squid/access.log , o que poupa o trabalho de chmodding repetidamente.

    
por user1721265 16.01.2013 / 21:56