ทำไมสิ่งนี้เกิดขึ้น
Windows จะไม่อ่านไฟล์desktop.ini
เว้นแต่ว่าเป็นไฟล์ระบบ (ดูเหมือนว่าจะใช้งานได้แบบอ่านอย่างเดียว แต่ไฟล์ระบบหมายความว่าไฟล์นั้นจะยังคงซ่อนอยู่แม้ว่าคุณจะตั้งค่าไฟล์ที่ซ่อนอยู่ที่ไม่ใช่ระบบให้มองเห็นได้ก็ตาม)
ทำไมดูเหมือนคุณไม่สามารถแก้ไขได้
ในการแบ่งปัน Samba (การใช้ Unix ของโปรโตคอลการแบ่งปัน SMB / เครือข่าย) บางครั้งแม้ว่าคุณเช่นไปที่คุณสมบัติและตั้งค่า "อ่านอย่างเดียว" มันจะถูกละเว้นและไม่ได้ตั้งค่า นี่เป็นเพราะแซมบ้าไม่ได้จัดเก็บสิทธิ์เหล่านี้ไว้เป็นค่าเริ่มต้น - ซึ่งดูเหมือนว่าจะมีภาษีประสิทธิภาพ (อาจเล็กน้อย) เนื่องจากสิทธิ์ถูกตั้งค่า (AFAIK) และอ่านในสตรีมสำรองเป็นข้อมูลที่เป็นข้อความ (อาจไม่ทำงานหากคุณ แบ่งปัน FS พื้นฐานเช่นFAT )
วิธีแก้ไข
ก่อนอื่นให้แน่ใจว่า Samba เก็บสิทธิ์แบบ DOS (เช่น "ระบบ") โดยเพิ่มบรรทัดนี้ในคำจำกัดความการแชร์ของคุณ:
store dos attributes = yes
บางทีคุณสามารถเพิ่มสิ่งนี้ลง[Global]
ในฉันได้เพิ่มไว้ในการแชร์เฉพาะแทน
นอกจากนี้บางคนจะบอกให้คุณแก้ไขไฟล์ผิด
/usr/share/samba/smb.conf
<= เรื่องไร้สาระ
/etc/samba/smb.conf
<= ไฟล์ที่ถูกต้อง
รีสตาร์ท Samba ( sudo service samba restart
) จากนั้นทำการตรวจสอบอย่างรวดเร็วเพื่อดูว่าคุณสามารถใช้ Windows Explorer เพื่อสร้างไฟล์แบบอ่านได้อย่างเดียวและยังคงมีอยู่หรือไม่
ตกลงตอนนี้คุณสามารถสร้างdesktop.ini
ไฟล์ระบบ / ซ่อนได้ หากต้องการทำสิ่งนี้ให้ไปที่โฟลเดอร์ที่มีพร้อมท์คำสั่งและใช้:
attrib +s +h desktop.ini
เป็นทางเลือกนอกจากนี้ (หากไอคอนของคุณสัมพันธ์และเก็บไว้ในโฟลเดอร์เดียวกับของฉัน)
attrib +s +h folder.ico
สุดท้ายคุณต้องทำเครื่องหมายโฟลเดอร์ว่าเป็นแบบอ่านอย่างเดียว (ไม่สมเหตุสมผลและฟังดูงี่เง่าคุณจึงรู้ว่ามันถูกต้อง)
attrib +r .
แน่นอนคุณสามารถ (ควร) สคริปต์นี้ ใช้ทุบตี MSysGit ฉันทำสิ่งนี้ใน NAS ของฉันทั้งหมด:
find . -type f -iname desktop.ini | while read -r i; do
echo "Processing \"$(basename "${i%/*}")\""
attrib +s +h "$i"
attrib +s +h "${i%/*}/folder.ico" # Optional, in case you have these.
attrib +r "${i%/*}"
done