φυβλαςのβλογ
phyblasのブログ



การจัดการสิทธิ์ของไฟล์ใน linux และ mac (chmod chown chgrp)
เขียนเมื่อ 2019/01/26 12:39
แก้ไขล่าสุด 2024/09/21 13:29
ใน mac และ linux นั้นไฟล์แต่ละไฟล์จะมีกำหนดสิทธิ์ในการใช้งานทำอะไรต่างๆอยู่ ใช้กำหนดว่าใครจะสามารถมาทำอะไรกับไฟล์นี้ได้บ้าง ซึ่งมีประโยชน์เวลาที่ใช้คอมพิวเตอร์ร่วมกันหลายคน

linux เครื่องนึงมักจะเปิดเป็นเซิร์ฟเวอร์ให้คนเชื่อมต่อเข้ามาใช้ได้หลายคน ดังนั้นเรื่องสิทธิ์จึงมีความสำคัญ เพราะไฟล์บางไฟล์ก็อาจไม่อยากให้ผู้ใช้คนอื่นมาเปิดดูหรือใช้งานได้

ดังนั้นเราจึงอาจจำเป็นต้องทำความเข้าใจเรื่องสิทธิ์ของไฟล์กันสักหน่อย



** บทความนี้เป็นส่วนหนึ่งของเรื่องการใช้ unix shell เบื้องต้น ใน linux และ mac
   เนื้อหาเสริมต่อจาก https://phyblas.hinaboshi.com/20190125



วิธีการดูสิทธิ์ของไฟล์

การดูสิทธิ์ของไฟล์ทำได้ง่ายผ่านทางหน้าต่างดูไฟล์โดยคลิกขวาที่ไฟล์แล้วเลือก "คุณสมบัติ" หรืออาจกด ctrl+i



เลื่อนมาดูตรง "สิทธิ์" จะเห็นว่ามีระบุว่าทำอะไรได้บ้างและสามารถปรับเปลี่ยนได้



และอีกวิธีคือดูผ่านคอมมานด์ไลน์โดยพิมพ์
ls -l

ลองสั่งดูแล้วจะขึ้นประมาณนี้
drwxr-xr-x 2 phyblas phyblas 4096 ม.ค.  21 20:46 เอกสาร
-rw-r--r-- 1 phyblas phyblas    0 ม.ค.  25 21:03 แฟ้มเปล่า.txt
(ฯลฯ)

ดูตรงอักษร ๑๐ ตัวทางซ้ายสุด ตัวแรกจะบอกชนิดไฟล์ ถ้าเป็น d คือโฟลเดอร์ ถ้าเป็น - คือไฟล์ธรรมดา

ตั้งแต่ตัวที่ ๒ เป็นส่วนที่บอกถึงสิทธิ์ สิทธิ์จะแบ่งออกเป็น ๓ ส่วนก็คือ
- ตัวที่ ๒-๔ สิทธิ์ของตัวเจ้าของไฟล์เอง
- ตัวที่ ๕-๗ สิทธิ์ของคนในกลุ่ม
- ตัวที่ ๘-๑๐ สิทธิ์ของคนอื่นๆ

ส่วนชื่อ phyblas ที่เห็นอยู่ถัดมานี้ตัวซ้ายเป็นชื่อเจ้าของไฟล์ ตัวขวาเป็นชื่อกลุ่ม โดยพื้นฐานแล้วโดยตั้งต้นผู้ใช้จะสังกัดอยู่ในกลุ่มที่มีชื่อเดียวกับตัวผู้ใช้เอง ไฟล์ที่ถูกผู้ใช้สร้างขึ้นจึงมีชื่อกลุ่มเป็นชื่อผู้ใช้เองด้วย

อย่างไรก็ตามสิทธิ์เหล่านี้แสดงถึงสิทธิ์ของผู้ใช้ธรรมดาเท่านั้น แต่สำหรับ root (superuser) จะเข้าไปทำอะไรกับไฟล์ก็ได้โดยไม่ต้อนสนเรื่องสิทธิ์ เพราะว่าเป็นผู้ดูแลระบบทั้งหมด



ความหมายของสิทธิ์สำหรับไฟล์ทั่วไป

ตัวอักษรที่แสดงถึงสิทธิ์นั้นมีอยู่กลุ่มละ ๓ ตัว แสดงถึง ๓ สิ่งที่ต้องใช้สิทธิ์ ซึ่งความหมายจะต่างกันไปสำหรับไฟล์ทั่วไปและโฟลเดอร์

สำหรับไฟล์ทั่วไปแล้ว ๓ อย่างนั้นคือ

r = อ่านไฟล์
w = เขียนแก้ไขไฟล์ ลบไฟล์ หรือย้ายไฟล์
x = รันไฟล์

ถ้ามีตัวอักษรอยู่แสดงว่ามีสิทธิ์นั้น แต่ถ้าเป็น - จะแสดงว่าไม่มี

โดยพื้นฐานแล้วไฟล์ที่ถูกสร้างขึ้นมาใหม่จะมีค่าเป็น
-rw-r--r--

หมายความว่าเจ้าของไฟล์จะมีสิทธิ์อ่านและเขียนไฟล์ได้ แต่รันไม่ได้ ส่วนคนในกลุ่มและคนอื่นๆมีสิทธิ์แค่อ่านไฟล์เท่านั้น

การที่มี r อยู่คืออ่านไฟล์ได้ หมายถึงว่าสามารถสั่ง cat เพื่อดูเนื้อความข้างในได้ หรือใช้ gedit หรือ vi เปิดอ่านได้

เพียงแต่ถ้าไม่มี w ก็จะอยู่ในโหมด "อ่านอย่างเดียว" เท่านั้น

ถ้ามี w ก็จะแก้ไขไฟล์ได้ตามที่ต้องการ จะเปลี่ยนชื่อไฟล์หรือย้ายไฟล์ก็ได้ หรือจะลบไฟล์ทิ้งไปก็ได้

ส่วน x หมายถึงว่าสามารถรันไฟล์ได้ เพียงแต่ว่าการรันไฟล์ที่ว่านี้คือการสั่งรันโดยพิมพ์ชื่อไฟล์โดยตรง ไม่ใช่รันผ่านโปรแกรมอื่นอีกที

เช่นโปรแกรมภาษาไพธอนที่เขียนขึ้น ไม่จำเป็นจะต้องมี x ก็รันได้ เช่น
echo "print(555)" > 555.py
python 555.py

แบบนี้จะพบว่ารันได้ตามปกติ เพราะการรันไพธอนในที่นี้เป็นแค่การเปิดอ่านโค้ดจากไฟล์มาป้อนให้คำสั่ง python อีกที ไม่ใช่การรันตัวไฟล์นั้นโดยตรง

แต่ถ้าพยายามจะสั่งรันไฟล์นั้นโดยตรงโดยพิมพ์
./555.py

ก็จะขึ้นมาว่าเราไม่มีสิทธิ์รันไฟล์

เกี่ยวกับเรื่องการเขียนไพธอนให้รันโดยตรงได้นั้นได้มีเขียนอธิบายไว้ใน https://phyblas.hinaboshi.com/20190108

ถ้าเข้าไปดูโฟลเดอร์ /bin ซึ่งเป็นที่เก็บคำสั่งหลักๆ จะเห็นว่าทุกไฟล์มีสถานะเป็น
-rwxr-xr-x

คือใครจะมาสั่งรันก็ได้ ไฟล์พวกนี้มีไว้เพื่อให้รันโดยตรง

อย่างไรก็ตาม ต่อให้มีแค่ x แต่ไม่มี r อยู่ก็ไม่สามารถรันไฟล์ได้จริงๆเหมือนกัน ดังนั้นการรันไฟล์ต้องมีทั้ง x และ r

ดังนั้นสิทธิ์ในการอ่านสำคัญกว่าสิทธิ์ในการรันมากนัก



ความหมายของสิทธิ์สำหรับโฟลเดอร์

ความหมายของสิทธิ์สำหรับโฟลเดอร์แล้วจะต่างจากไฟล์เล็กน้อย สำหรับโฟลเดอร์แล้วสิทธิ์ ๓ อย่างคือ

r = ดูว่าในโฟลเดอร์มีอะไรบ้าง
w = ใส่เพิ่มหรือแก้ไขหรือลบไฟล์ในโฟลเดอร์ หรือย้ายหรือลบโฟลเดอร์
x = เข้าไปในโฟลเดอร์ และใช้ไฟล์ในโฟลเดอร์นั้น

โดยพื้นฐานแล้วโฟลเดอร์ที่สร้างขึ้นมาใหม่จะมีสิทธิ์เป็น
drwxr-xr-x

ซึ่งหมายความว่าเจ้าของไฟล์ทำได้ทั้งดูเนื้อหาและเข้าไปหรือแก้ไขอะไรๆในโฟลเดอร์ได้ แต่คนในกลุ่มและคนอื่นจะดูข้างในหรือเข้าไปได้แต่จะแก้อะไรไม่ได้

สำหรับโฟลเดอร์แล้ว x สำคัญมาก เพราะถ้าไม่มี x ก็จะเข้าไปดูอะไรในโฟลเดอร์ไม่ได้ แม้จะมี r ก็ตาม

การที่มี r แต่ไม่มี x หมายความว่าเราสามารถรู้ว่าภายในโฟลเดอร์นั้นมีอะไรอยู่บ้างได้ โดยใช้ ls แต่จะไม่สามารถรู้รายละเอียดของของในนั้น

ยกตัวอย่างเช่น โฟลเดอร์ /etc/xdg ซึ่งเป็นของ root โดยปกติสิทธิ์จะถูกตั้งไว้เป็น drwxr-xr-x

หมายความว่าผู้ใช้ธรรมดาจะมีสิทธิ์เข้าไปได้ คือสามารถพิมพ์
cd /etc/xdg

และสามารถใช้
ls /etc/xdg

ซึ่งจะแสดงเนื้อหาไฟล์ข้างในได้แบบนี้
total 20
drwxr-xr-x 2 root root 4096 ม.ค.  21 18:49 autostart
drwxr-xr-x 2 root root 4096 ส.ค.  10 22:54 menus
drwxr-xr-x 2 root root 4096 ก.ค.  25  2018 systemd
-rw-r--r-- 1 root root  414 มี.ค.  23  2018 user-dirs.conf
-rw-r--r-- 1 root root  418 มี.ค.  23  2018 user-dirs.defaults

แต่ถ้ามีใครมาเปลี่ยนสิทธิ์เป็น drwxr-xr-- ทีนี้ก็จะใช้ cd เพื่อเข้าไปไม่ได้ และถ้าใช้ ls ก็จะขึ้นว่า
ls: ไม่สามารถเข้าถึง '/etc/xdg/menus': Permission denied
ls: ไม่สามารถเข้าถึง '/etc/xdg/systemd': Permission denied
ls: ไม่สามารถเข้าถึง '/etc/xdg/user-dirs.conf': Permission denied
ls: ไม่สามารถเข้าถึง '/etc/xdg/user-dirs.defaults': Permission denied
ls: ไม่สามารถเข้าถึง '/etc/xdg/autostart': Permission denied
total 0
d????????? ? ? ? ?              ? autostart
d????????? ? ? ? ?              ? menus
d????????? ? ? ? ?              ? systemd
-????????? ? ? ? ?              ? user-dirs.conf
-????????? ? ? ? ?              ? user-dirs.defaults

นั่นคือเรามีสิทธิ์ที่จะดูว่าในนั้นมีไฟล์หรือโฟลเดอร์ย่อยชื่ออะไรบ้าง แต่จะไม่รู้ว่าไฟล์นั้นเป็นยังไง รู้แค่ชื่อเท่านั้น

แต่ถ้ามี x แต่ไม่มี r นั่นหมายความว่าเราสั่ง cd เพื่อเข้าไปในโฟลเดอร์นั้นได้ แต่หลังจากนั้นก็มองอะไรไม่เห็น เหมือนเข้าไปอยู่ในห้องที่ปิดไฟมืดมิด

เพียงแต่ถ้าเรารู้อยู่ก่อนแล้วว่าข้างในนั้นมีไฟล์อะไรก็สามารถใช้งานไฟล์นั้นได้ตามสิทธิ์ของไฟล์นั้นหากพิมพ์ชื่อไฟล์นั้นถูก เช่น
cat xdg/user-dirs.conf

แบบนี้ทำได้โดยที่โฟลเดอร์มีแค่สิทธิ์ x ไม่ต้องมี r

ส่วนความหมายของ w นั้นจะใกล้เคียงกับกรณีของไฟล์ธรรมดา

เพียงแต่ว่าผลของ w จะส่งผลไปถึงไฟล์ด้านในโฟลเดอร์นั้นด้วย กล่าวคือต่อให้ไฟล์นั้นมี w อยู่ แต่ถ้าอยู่ในโฟลเดอร์ที่ไม่มี w ก็ไม่สามารถไปแก้อะไรได้

หรือสมมุติว่าไฟล์ของ phyblas อยู่ในโฟลเดอร์ของ root ถ้าโฟลเดอร์นั้นเป็น drwxr-xr-x แบบนี้ phyblas ก็ไม่สามารถแก้ไขอะไรไฟล์นี้ได้ ไม่ว่าสิทธิ์ของไฟล์จะตั้งไว้ยังไงก็ตาม



การแก้ไขสิทธิ์

คำสั่งที่ใช้ในการแก้ไขสิทธิ์ของไฟล์คือ chmod

วิธีการเขียนมีหลายแบบ แบบหนึ่งคือให้ระบุค่าสิทธิ์ของแต่ละส่วนเขียนต่อกันไปโดยคั่นด้วยจุลภาค , โดยแต่ละส่วนใช้อักษรย่อคือ
u ผู้ใช้
g กลุ่ม
o คนอื่น

เขียนดังนี้
chmod u=สิทธิ์ผู้ใช้,g=สิทธิ์กลุ่ม,o=สิทธิ์คนอื่น ชื่อไฟล์

ตัวอย่างเช่น
chmod u=rwx,g=rx,o= แฟ้มA.txt

จะกลายเป็น
-rwxr-x---

u,g,o ไม่จำเป็นต้องใส่ทั้งหมด ถ้าอันไหนไม่ใส่อันไหนอันนั้นก็จะไม่เปลี่ยนแปลง

เช่นถ้าต้องการตัดสิทธิ์คนในกลุ่มทั้งหมด ส่วนอย่างอื่นคงเดิมก็
chmod g= แฟ้มA.txt

จะกลายเป็น
-rwx------

อีกวิธีนึงคือใช้ + หรือ - จะเป็นการเพิ่มหรือลบตัวที่ต้องการ

เช่นเพิ่ม rx ให้กลุ่มโดยใช้ +
chmod g+rx แฟ้มA.txt

จะกลายเป็น
-rwxr-x---

หรือลองเอาสิทธิ์ออกโดยใช้ - เช่น
chmod u-w,g-wx แฟ้มA.txt

จะกลายเป็น
-r-xr-----

อันไหนที่ไม่มีอยู่แต่แรกแล้วก็ไม่โดนลบแต่อย่างใด

นอกจากนี้ยังมีอีกวิธีนึงในการใช้ซึ่งเข้าใจยากหน่อยแต่หากเข้าใจแล้วจะใช้งานได้สะดวกมาก นั่นคือใช้ตัวเลข 0 ถึง 7 แทนสิทธิ์ของทั้ง ๓ ตัวในทีเดียว

เนื่องจากสิทธิ์มี ๓ ตัว เท่ากับว่าจะมี 2×2×2 = 8 แบบ ที่เป็นไปได้ จึงใช้เลข 0 ถึง 7 แทนได้ ดังนี้

เลข เท่ากับ เลขฐานสอง สิทธิ์
0 0+0+0 000 ---
1 0+0+1 001 --x
2 0+2+0 010 -w-
3 0+2+1 011 -wx
4 4+0+0 100 r--
5 4+0+1 101 r-x
6 4+2+0 110 rw-
7 4+2+1 111 rwx

ที่มาของตัวเลขที่ใช้แทนแบบต่างๆนั้นมาจากการคิดเลขแบบฐานสอง โดยที่
มี r ให้บวก 4
มี w ให้บวก 2
มี x ให้บวก 1

วิธีเขียนให้เขียนเป็นเลข ๓ ตัวต่อกัน ซึ่งแทนค่าสิทธิ์ของผู้ใช้, กลุ่ม และ คนอื่น ตามลำดับ

ตัวอย่างการใช้งาน
chmod 777 แฟ้มA.txt # ได้ -rwxrwxrwx
chmod 754 แฟ้มB.txt # ได้ -rwxr-xr--
chmod 500 แฟ้มC.txt # ได้ -r-x------
chmod 000 แฟ้มD.txt # ได้ ----------
chmod 124 แฟ้มE.txt # ได้ ---x-w-r--

เมื่อเขียนแบบนี้แล้วจะเขียนสั้นสบายกว่ามาก วิธีนี้จึงค่อนข้างนิยม



chmod จะใช้แก้ไขสิทธิ์ได้แค่ไฟล์ของตัวเองเท่านั้น แก้ไฟล์ของคนอื่นไม่ได้

ถ้าเป็นไฟล์ของตัวเองเรามีสิทธิ์จะเปลี่ยนแปลงสิทธิ์ของไฟล์นั้น ต่อให้สิทธิ์ไม่มี rwx อยู่เลยก็ตาม เช่นต่อให้เปลี่ยนไฟล์นึงเป็น ---------- ไป ก็สามารถพิมพ์ chmod 700 เปลี่ยนกลับมาเป็น rwx------ เพื่อให้ตัวเองใช้ไฟล์ได้

ค่า rwx นี้ไม่ได้รวมถึงสิทธิ์ในการเปลี่ยนสิทธื์ ดังนั้นตราบใดที่เป็นไฟล์ของเราเองจะเปลี่ยนสิทธิ์ให้ตัวเองสามารถใช้แบบไหนยังไงก็ได้



การเปลี่ยนเจ้าของไฟล์หรือกลุ่ม

คำสั่งที่ใช้ในการเปลี่ยนเจ้าของไฟล์คือ chown

เพียงแต่ว่าคนที่จะใช้คำสั่งนี้ได้คือ root เท่านั้น หรือไม่ก็ต้องใช้ sudo

วิธีการใช้คือ
chown ชื่อผู้ใช้:ชื่อกลุ่ม ชื่อไฟล์

และเวลาที่เปลี่ยนเจ้าของโฟลเดอร์หากต้องการเปลี่ยนเจ้าของของไฟล์หรือโฟลเดอร์ย่อยด้านในนั้นทั้งหมดไปด้วยให้เติมตัวเลือก -R เข้าไป

ตัวอย่าง
sudo chown -R root:root home/phyblas/ดาวน์โหลด

ถ้าจะเปลี่ยนแค่ผู้ใช้ ไม่เปลี่ยนกลุ่มก็แค่ไม่ใส่ชื่อกลุ่ม
sudo chown -R phyblas home/phyblas/ดาวน์โหลด

ถ้าจะเปลี่ยนแค่กลุ่มให้ไม่ใส่ชื่อผู้ใช้ แต่ใส่ชื่อกลุ่มไว้หลัง :
sudo chown -R :root home/phyblas/ดาวน์โหลด

สำหรับกรณีแค่เปลี่ยนกลุ่มอาจไม่จำเป็นต้องเป็น root ก็ได้หากผู้ใช้นั้นเป็นเจ้าของไฟล์ แต่ก็แค่สามารถเปลี่ยนมาเป็นกลุ่มที่ตัวเองอยู่เท่านั้น

สมมุติว่ามีไฟล์นึง สั่ง ls -l แล้วขึ้นแบบนี้
-rw-r--r-- 1 phyblas root     222 ม.ค.  25 21:48 xxx.txt

phyblas สามารถสั่ง
chown :phyblas xxx.txt

แล้วก็จะกลายเป็น
-rw-r--r-- 1 phyblas phyblas  222 ม.ค.  25 21:48 xxx.txt

นอกจากนี้การเปลี่ยนแค่ชื่อกลุ่มยังอาจใช้คำสั่ง chgrp ได้ด้วย
chgrp ชื่อกลุ่ม ชื่อไฟล์

เช่น
chgrp phyblas home/phyblas/ดาวน์โหลด



ปกติเวลาคัดลอกไฟล์ด้วยคำสั่ง cp สิทธิ์ของไฟล์ที่คัดลอกมาจะเป็นของผู้ใช้คนนั้น ดังนั้นปกติไม่จำเป็นที่จะต้องมาใช้ chown เพื่อเปลี่ยน

เพียงแต่ว่า แสดงว่าผู้ใช้คนนั้นจะต้องมีสิทธิ์ในการอ่านไฟล์นั้นอยู่แล้วตั้งแต่แรกจึงจะทำการคัดลอกไฟล์มาได้

ถ้าใช้ root หรือ sudo คัดลอกไฟล์ สิทธิ์ของไฟล์ก็จะเป็นขอ​ง root ถึงตอนนั้นก็จำเป็นต้องใช้ chown

ไฟล์ที่สร้างขึ้นจากคำสั่ง sudo เจ้าของไฟล์ก็จะเป็น root เช่นกัน



ทั้ง chmod, chown และ chgrp สามารถใส่ชื่อไฟล์หลายไฟล์​ หรือเขียนในรูปแบบกล็อบ (เช่น *.txt) เพื่อจัดการไฟล์พร้อมกันหลายไฟล์ได้

เช่นเปลี่ยนไฟล์ในบ้านตัวเองให้ใครก็ได้มาใช้ได้ก็อาจเขียนเป็น
chmod 777 ~/*

และสามารถเติมตัวเลือกเสริม -v ลงไปเพื่อให้บอกว่ามีการเปลี่ยนแปลงยังไงกับแต่ละไฟล์ เช่น
chmod -v 777 เอกสาร

จะขึ้นมาว่า
mode of 'เอกสาร' changed from 0755 (rwxr-xr-x) to 0777 (rwxrwxrwx)

ถ้าลองสั่งอีกทีจะขึ้นว่า
mode of 'เอกสาร' retained as 0777 (rwxrwxrwx)

เพราะค่าเดิมเท่ากับค่าที่ต้องการเปลี่ยนอยู่แล้ว



อ้างอิง


-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> shell

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

目次

日本による名言集
モジュール
-- numpy
-- matplotlib

-- pandas
-- manim
-- opencv
-- pyqt
-- pytorch
機械学習
-- ニューラル
     ネットワーク
javascript
モンゴル語
言語学
maya
確率論
日本での日記
中国での日記
-- 北京での日記
-- 香港での日記
-- 澳門での日記
台灣での日記
北欧での日記
他の国での日記
qiita
その他の記事

記事の類別



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  記事を検索

  おすすめの記事

ตัวอักษรกรีกและเปรียบเทียบการใช้งานในภาษากรีกโบราณและกรีกสมัยใหม่
ที่มาของอักษรไทยและความเกี่ยวพันกับอักษรอื่นๆในตระกูลอักษรพราหมี
การสร้างแบบจำลองสามมิติเป็นไฟล์ .obj วิธีการอย่างง่ายที่ไม่ว่าใครก็ลองทำได้ทันที
รวมรายชื่อนักร้องเพลงกวางตุ้ง
ภาษาจีนแบ่งเป็นสำเนียงอะไรบ้าง มีความแตกต่างกันมากแค่ไหน
ทำความเข้าใจระบอบประชาธิปไตยจากประวัติศาสตร์ความเป็นมา
เรียนรู้วิธีการใช้ regular expression (regex)
การใช้ unix shell เบื้องต้น ใน linux และ mac
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ

ไทย

日本語

中文