Tenho uma situação que nunca vi antes e não consegui encontrar na minha pesquisa. Eu tenho um arquivo PHP que não pode ser visualizado ou editado pelo proprietário ou por qualquer proprietário do grupo. Estranhamente, Apachepodeleia e processe o arquivo, para que não esteja corrompido, pelo que posso dizer. Além disso, ele pode ser visualizado e editado sudo
(ou seja, como root).
O que descobri é que qualquer arquivo que tenha <?php
na primeira linha (o que é bastante comum para arquivos PHP) apresenta esse comportamento. Acabei de testar isso no meu diretório inicial:
$ vi henry.txt
Coloquei um texto nele e salvei. Sem problemas. Posso visualizar o arquivo:
$ cat henry.txt
Test
Eu edito o arquivo novamente ( vi henry.txt
) e coloco <?php
na primeira linha, empurrando Test
para baixo até a segunda linha. Então eu salvo e saio. Agora:
$ cat henry.txt
cat: henry.txt: Operation not permitted
mas:
$ sudo cat henry.txt
<?php
Test
Eu edito o arquivo novamente ( sudo vi henry.txt
porque não posso editá-lo sozinho) e removo a <?php
linha. Salvar e sair. Agora:
$ cat henry.txt
Test
Na verdade, nem preciso do full <?php
para bloquear o acesso. Simplesmente colocar <?
lá já bastará.
Não sei por que isso acontece. Qualquer idéia seria muito apreciada. Caso seja importante, este é o Red Hat Enterprise Linux 8. Tentei desabilitar o SELinux, mas não fez diferença.
EDIT: Mais saída do console, mostrando a propriedade do arquivo (eu) e as permissões. O comportamento é idêntico no meu diretório inicial e em/tmp.
[hartley_h@webnix07 ~]$ cd /tmp
[hartley_h@webnix07 tmp]$ echo "Test" > henry.txt
[hartley_h@webnix07 tmp]$ ls -l henry.txt
-rw-r-----. 1 hartley_h domain users 5 Oct 29 15:44 henry.txt
[hartley_h@webnix07 tmp]$ cat henry.txt
Test
[hartley_h@webnix07 tmp]$ echo "<?php" > henry.txt
[hartley_h@webnix07 tmp]$ ls -l henry.txt
-rw-r-----. 1 hartley_h domain users 6 Oct 29 15:45 henry.txt
[hartley_h@webnix07 tmp]$ cat henry.txt
cat: henry.txt: Operation not permitted