Рейтинг:0

Bluetooth: файлы либо не получены, либо пусты

флаг ke

Я пытаюсь передать изображения со своего телефона (более старой модели Huawei) на ПК с Ubuntu 20.04 LTS через Bluetooth.

При открытом диалоговом окне настроек Bluetooth (как это описано на некоторых сайтах) телефон сообщает, что ПК отказал в приеме файла.

Попытка "синий человек" как предложено в другом ответе (или в одном ответе на этот вопрос), у меня странное поведение:

  • Если телефон помечен как "доверенный устройство", я получаю такое же сообщение об ошибке с телефона.
  • Когда телефон был помечен как "ООНдоверенное устройство», телефон сообщил, что файл был успешно отправлен, а Ubuntu сообщил, что файл получен.
    Однако файл не был сохранен на диске, и я не воспроизвел это поведение.

С использованием бт-обекс, мой телефон сообщает "файл успешно передан", но файлы не сохраняются в Загрузки каталог, но пустой файл создается в ~/.кэш/obexd:

$ mkdir целевая папка

$ bt-obex -y -s каталог назначения
[OBEX сервер] Открыт сеанс OBEX
[OBEX сервер] Начата передача
[Запрос на передачу]
  Имя: IMG_20211009_102029.jpg
  Размер: 2667331 байт
[OBEX сервер] Передача OBEX закрыта
[OBEX сервер] Сеанс OBEX закрыт
^ С

$ найти . | grep IMG_20211009_102029
./.кэш/obexd/IMG_20211009_102029.jpg

$ wc .кэш/obexd/*.jpg
0 0 0 .cache/obexd/IMG_20211009_102029.jpg

Не будет проблемой, если файл будет храниться в .кеш/obexd, но, как видите, файл в этом каталоге пуст!

Почему не удается получить файл?

РЕДАКТИРОВАТЬ

Я узнал, что получение файлов с помощью obexpushd работает хорошо...

David avatar
флаг cn
Вы можете уточнить название. Файлы не пустые согласно вопросу. В каталоге, в котором вы ожидали их найти, нет файлов.
Martin Rosenau avatar
флаг ke
@ Дэвид, я изменил название
Рейтинг:0
флаг ke

Сам нашел ответ:

Мой ДОМ directory является символической ссылкой на каталог:

/дом/мое имя является символической ссылкой на /другой_каталог.

По умолчанию, obexd (который используется как встроенным приемником файлов, так и бт-обекс) проверяет, что место назначения временного файла (в ~/.кэш/obexd) и «финальное» (в ~/Загрузки) действительно находятся в подкаталоге ДОМ каталог.

obexd использует «настоящее» имя каталога, если задействованы символические ссылки, поэтому обнаруживает, что полное имя файла /другой_каталог/.cache/obexd/... не начинается с /дом/мое имя/ и отказывается продолжать операцию.

Решение делает pkill obexd и перезапуск obexd передавая реальное имя домашнего каталога, используя аргумент.

Я предполагаю, что эта проверка делается для того, чтобы кто-то не перезаписал файл, например /usr/бин/лс отправив файл с именем ../../../../../usr/bin/ls.

Интересно, эта проверка делается после obexd открыл файл с O_CREAT|O_TRUNC флаги, поэтому в этом случае /usr/бин/лс будет перезаписан пустым файлом!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.