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'
Вероятно, вы столкнулись с проблемой, когда запрос на загрузку выполняется с помощью вызова функции 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 и сообществом разработчиков. Приветствую разработчиков.
Просто закройте файл, если он открывается в фоновом режиме. Ошибка исчезает сама собой