OSError - Errno 13 Отказано в доступе

Я пытаюсь загрузить изображение через страницу администратора, но он продолжает говорить:

[Errno 13] Permission denied: '/path/to/my/site/media/userfolder/2014/05/26'

папки userfolder/2014/05/26 создаются динамически при загрузке.

В Traceback я обнаружил, что ошибка происходит во время этой команды:

В /usr/lib64/python2.6/os.py Строка 157. во время вызова

mkdir(name, mode) 

это означает, что он не может создать какую-либо папку, поскольку у него нет разрешения на это

У меня есть OpenSuse в качестве ОС на сервере. В httpd.conf у меня есть это:

<Directory /path/to/my/site/media>
   Order allow,deny
   Allow from all
</Directory>

Должен ли я chmod или chown что-то?

8 ответов

Решение

Вам необходимо изменить разрешение каталога, чтобы процесс веб-сервера мог изменить каталог.

  • Чтобы изменить владельца каталога, используйте chown:

    chown -R user-id:group-id /path/to/the/directory
    
  • Чтобы увидеть, какой пользователь владеет процессом веб-сервера (изменить httpd соответственно):

    ps aux | grep httpd | grep -v grep
    

    ИЛИ ЖЕ

    ps -efl | grep httpd | grep -v grep
    

Это также может произойти, если у вас есть косая черта перед именем папки:

path = '/folder1/folder2'

OSError: [Errno 13] Permission denied: '/folder1'

появляется ошибка, но эта работает нормально:

path = 'folder1/folder2'

Просто попробуйте:

sudo cp /source /destination

Вероятно, вы столкнулись с проблемой, когда запрос на загрузку выполняется с помощью вызова функции Maybe_download в файле base.py.

Существует конфликт в разрешениях временных файлов, и я сам не смог найти способ изменить разрешения, но смог обойти эту проблему.

Сделайте следующее...

  • Загрузите четыре файла.gz набора данных MNIST по ссылке ( http://yann.lecun.com/exdb/mnist/).
  • Затем создайте папку с именами MNIST_data (или по вашему выбору в папке вашего рабочего каталога / пакетов сайта в папке tenorflow\examples).
  • Сразу скопируйте вставьте файлы в папку.
  • Скопируйте адрес папки (это, вероятно, будет ( C:\Python\Python35\Lib\site-packages\ensorflow\examples\tutorials\mnist\MNIST_data))
  • Измените "\" на "/", так как "\" используется для escape-символов, чтобы получить доступ к расположению папок.
  • Наконец, если вы следуете учебникам, ваша функция вызова будет (mnist = input_data.read_data_sets ("MNIST_data/", one_hot = True)); измените параметр "MNIST_data/" на местоположение вашей папки. Как в моем случае было бы ( mnist = input_data.read_data_sets("C:/Python/Python35/Lib/site-packages/tenorflow/examples/tutorials/mnist/MNIST_data", one_hot=True))

Тогда все готово. Надеюсь, это работает для вас.

Дополняя ответ @falsetru: запустите id в терминале, чтобы получить ваши user_id и group_id

Перейдите в каталог / раздел, где вы столкнулись с проблемой. Откройте терминал, введите id и нажмите Enter. Это покажет вам ваш user_id и group_id

затем введите

chown -R идентификатор-пользователя: идентификатор-группы.

Заменить идентификатор пользователя и идентификатор группы

. в конце указывает текущий раздел / репозиторий

// chown -R 1001:1001 . (это был мой случай)

Другой вариант - убедиться, что файл не открыт нигде на вашем компьютере.

Решение, которое сработало для меня здесь, когда я использовал пакет python 3 os для выполнения операций в каталоге, где у меня не было достаточных разрешений и доступа, было разрешено путем запуска файла python с помощью sudo (root), т.е.:

      sudo python python_file_name.py

Любая другая утилита, которую вы также планируете использовать для chmod или chown этого каталога, также будет работать только при запуске с помощью sudo.

      # file_name.py
base_path = "./parent_dir/child_dir/"
user = os.stat(base_path).st_uid # for getting details of the current user owner of the dir
group = os.stat(base_path).st_gid # for getting details of the current group owner of the dir

print("Present owner and group of the specified path")
print("Owner:", user)
print("Group:", group)
os.chown(base_path, user, group) # change directory permissions

print("\nOwner id of the file:", os.stat(base_path).st_uid)
print("Group id of the file:", os.stat(base_path).st_gid)
os.mkdir(base_path+file_name,mode=0o666)

запустите указанный выше файл с помощью sudo.

      sudo python file_name.py

Надеюсь, этот ответ сработает для вас.

Вечный долг перед stackoverflow и сообществом разработчиков. Приветствую разработчиков.

Просто закройте файл, если он открывается в фоновом режиме. Ошибка исчезает сама собой

Другие вопросы по тегам