2

PHP-скрипт случайно изменил правильные флаги (chmod) каталога на 0. (Нет доступа ни к кому, включая владельца). Если у меня нет корневого доступа к этому серверу, возможно ли снова удалить файл с помощью FTP или PHP?

3 ответа3

6

Если не использовать ACL вне базовой системы разрешений, chmod 000 может быть отменен без дополнительных полномочий. Биты разрешений управляют доступом к содержимому файла, но они не контролируют доступ на запись к самим битам разрешений. Обычно root и владелец файла всегда имеют доступ на запись к битам прав доступа. Таким образом, вы должны иметь возможность «восстановить» файл, если вы можете выполнять действия в качестве владельца файла.

$ id -u                                       
501
$ echo foo > foo                              
$ stat -f '%u %p' foo; cat foo                
501 100644
foo
$ chmod 000 foo
$ stat -f '%u %p' foo; cat foo
501 100000
cat: foo: Permission denied
$ chmod 644 foo
$ stat -f '%u %p' foo; cat foo
501 100644
foo

Если у вас есть доступ к оболочке, и ваш пользователь оболочки владеет файлом (или ваш пользователь может изменить владельца файла (su/sudo/…)), то просто chmod обратно вручную. В противном случае, если вы можете редактировать скрипт PHP (и PHP запускается как владелец файла), просто отредактируйте его, чтобы chmod файл с желаемыми разрешениями.

0

Если вы можете сначала изменить PHP, который создал файл, возможно, вы могли бы заставить PHP сбросить разрешения на то, что вы хотите ...

-1

В основном нет. Вы потеряли весь доступ к файлу. Только root может изменять права доступа к этому файлу. Обратитесь к системному администратору или администраторам хостинговой компании или интернет-провайдера, размещающего сайт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .