У меня ситуация, с которой я никогда раньше не сталкивался и не смог найти ее в своем поиске. У меня есть файл PHP, который не может просматриваться или редактироваться владельцем или владельцем любой группы. Как ни странно, Apacheможетпрочитать и обработать файл, так что он не поврежден, насколько я могу судить. Также его можно просматривать и редактировать с помощью sudo
(т. е. как root).
Я обнаружил, что любой файл, который имеет <?php
в первой строке (что довольно распространено для файлов PHP), демонстрирует такое поведение. Я только что проверил это в своем домашнем каталоге:
$ vi henry.txt
Я вставляю туда текст и сохраняю. Никаких проблем. Я могу просмотреть файл:
$ cat henry.txt
Test
Я снова редактирую файл ( vi henry.txt
) и вставляю <?php
первую строку, сдвигая Test
вниз на вторую строку. Затем сохраняю и выхожу. Теперь:
$ cat henry.txt
cat: henry.txt: Operation not permitted
но:
$ sudo cat henry.txt
<?php
Test
Я снова редактирую файл ( sudo vi henry.txt
потому что я не могу редактировать его как я) и удаляю <?php
строку. Сохраняю и выхожу. Теперь:
$ cat henry.txt
Test
На самом деле, мне даже не нужно полное, <?php
чтобы заблокировать доступ. Просто поставьте <?
там, и это будет сделано.
Я совершенно не понимаю, почему это может быть. Буду очень признателен за любые идеи. Если это имеет значение, это Red Hat Enterprise Linux 8. Я пробовал отключать SELinux, но это не помогло.
EDIT: Больше консольного вывода, показывающего владельца файла (меня) и разрешения. Поведение идентично в моем домашнем каталоге и в /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