Score:0

Bluetooth: ไม่ได้รับไฟล์หรือไฟล์ว่างเปล่า

ธง ke

ฉันพยายามถ่ายโอนรูปภาพจากโทรศัพท์ของฉัน (รุ่นเก่าของ Huawei) ไปยังพีซีที่ใช้ Ubuntu 20.04 LTS ผ่าน Bluetooth

การเปิดกล่องโต้ตอบการตั้งค่า Bluetooth ค้างไว้ (ตามที่อธิบายไว้ในเว็บไซต์บางแห่ง) โทรศัพท์จะรายงานว่าพีซีปฏิเสธการรับไฟล์

ลอง "บลูแมน" เป็น แนะนำในคำตอบอื่น (หรือในหนึ่งคำตอบเพื่อ คำถามนี้) ฉันมีพฤติกรรมแปลก ๆ :

  • หากโทรศัพท์ถูกทำเครื่องหมายเป็น "ที่เชื่อถือ อุปกรณ์" ฉันได้รับข้อความแสดงข้อผิดพลาดเดียวกันจากโทรศัพท์
  • เมื่อโทรศัพท์ถูกทำเครื่องหมายว่า "ยกเลิกอุปกรณ์ที่เชื่อถือได้" โทรศัพท์รายงานว่าส่งไฟล์สำเร็จแล้ว และ Ubuntu รายงานว่าได้รับไฟล์แล้ว
    อย่างไรก็ตาม ไฟล์ไม่ได้ถูกจัดเก็บไว้ในดิสก์ และฉันไม่ได้สร้างพฤติกรรมนั้นซ้ำอีก

โดยใช้ bt-obexโทรศัพท์ของฉันรายงานว่า "ถ่ายโอนไฟล์สำเร็จ" แต่ไฟล์ไม่ได้ถูกจัดเก็บไว้ใน ดาวน์โหลด ไดเร็กทอรี แต่ ว่างเปล่า ไฟล์ถูกสร้างขึ้นใน ~/.cache/obexd:

$ mkdir ปลายทาง

$ bt-obex -y -s ปลายทาง
[OBEX Server] เปิดเซสชัน OBEX แล้ว
[OBEX Server] เริ่มการถ่ายโอนแล้ว
[ขอโอน]
  ชื่อ: IMG_20211009_102029.jpg
  ขนาด: 2667331 ไบต์
[เซิร์ฟเวอร์ OBEX] ปิดการถ่ายโอน OBEX
[เซิร์ฟเวอร์ OBEX] ปิดเซสชัน OBEX
^ซี

$ หา. | เกรป IMG_20211009_102029
./.cache/obexd/IMG_20211009_102029.jpg

$wc .cache/obexd/*.jpg
0 0 0 .cache/obexd/IMG_20211009_102029.jpg

จะไม่มีปัญหาหากจะเก็บไฟล์ไว้ใน .cache/obexdแต่อย่างที่คุณเห็น ไฟล์ในไดเร็กทอรีนั้นว่างเปล่า!

เหตุใดการรับไฟล์จึงล้มเหลว

แก้ไข

ฉันพบว่าการรับไฟล์โดยใช้ obexpushd ทำได้ดี...

David avatar
cn flag
คุณอาจต้องการชี้แจงชื่อเรื่อง ไฟล์ไม่ว่างเปล่าตามคำถาม ไดเร็กทอรีที่คุณคาดว่าจะพบไม่มีไฟล์
Martin Rosenau avatar
ke flag
@David ฉันเปลี่ยนชื่อเรื่อง
Score:0
ธง ke

ฉันพบคำตอบด้วยตนเอง:

ของฉัน บ้าน ไดเร็กทอรีเป็น symlink ไปยังไดเร็กทอรี:

/บ้าน/ชื่อของฉัน เป็นสัญลักษณ์เชื่อมโยงถึง /other_directory.

โดยค่าเริ่มต้น, obexd (ซึ่งใช้โดยทั้งตัวรับไฟล์ในตัวและ bt-obex) ตรวจสอบว่าทั้งปลายทางไฟล์ชั่วคราว (ใน ~/.cache/obexd) และ "สุดท้าย" อันหนึ่ง (ใน ~/ดาวน์โหลด) อยู่ในไดเร็กทอรีย่อยของ บ้าน ไดเรกทอรี

obexd ใช้ชื่อไดเร็กทอรี "จริง" หากมีการเชื่อมโยง symlink ดังนั้นจึงพบว่าชื่อไฟล์เต็ม /other_directory/.cache/obexd/... ไม่ได้เริ่มต้นด้วย /บ้าน/ชื่อของฉัน/ และไม่ยอมดำเนินการต่อไป

วิธีแก้ปัญหากำลังทำก pkill obexd และเริ่มต้นใหม่ obexd ส่งชื่อโฮมไดเร็กทอรีจริงโดยใช้ไฟล์ -ร การโต้แย้ง.

ฉันคิดว่าการตรวจสอบนี้เสร็จสิ้นเพื่อหลีกเลี่ยงไม่ให้ใครก็ตามเขียนทับไฟล์เช่น /usr/bin/ls โดยส่งไฟล์ชื่อ ../../../../../usr/bin/ls.

น่าสนใจ การตรวจสอบนี้เสร็จสิ้นแล้ว หลังจาก obexd ได้เปิดไฟล์ด้วย O_CREAT|O_TRUNC ธง ดังนั้นในกรณีนี้ /usr/bin/ls จะถูกเขียนทับด้วยไฟล์เปล่า!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา