Назад | Перейти на главную страницу

Не могу удалить файлы с сервера

Когда я пытаюсь удалить файлы со своего ftp с помощью filezilla, я получаю следующую ошибку:

550 image.jpg: В доступе отказано

Права доступа к файлу для этого изображения - 644, пытался изменить его на что-то более высокое, но безуспешно ...

550 CHMOD 777 image.jpg: Операция запрещена

Пытался удалить из панели plesk, но то же самое.

Любые идеи? У меня vps хостинг с linux / centos.

Когда вы удаляете файл, вы не изменяете его, а изменяете его родительский каталог, удаляя filename->inode переписка. Файл может иметь несколько имен (жестких ссылок) в одной файловой системе. Когда счетчик ссылок inode становится равным 0, inode освобождается. Поэтому вам нужно изменить разрешения для родительского каталога, а не для файла.

Второй возможный случай - в файловых системах Linux файл может иметь атрибуты, которые могут предотвратить его удаление. Видеть man chattr для подробностей.

У вас нет прав доступа к файлу. Вы не являетесь владельцем файла. Следовательно, вы не можете удалить или изменить права доступа к файлу. Попробуйте это в оболочке:

sudo rm -f image.jpg

Я нашел решение! Проблема была вызвана тем, что я создавал родительскую папку для файла с помощью функции php mkdir. Эта папка создавалась с разрешением 755 независимо от того, что я использовал в качестве второго параметра для функции mkdir. Решение состоит в том, чтобы добавить две волшебные строки до и после функции mkdir, например:

$old_mask = umask(0);
mkdir($folder);
umask($old_mask);

Я точно не знаю, что они делают, но сейчас это работает. Родительская папка имеет разрешение 777, и я могу удалить любые файлы внутри нее.

опубликовать

ls -la image.jpg

и попробуйте сделать что-нибудь вроде этого:

  1. создать какой-нибудь файл в этом каталоге
  2. удалить этот файл