เมื่อคุณเปิดไฟล์หรือโฟลเดอร์ใน macOS Terminal และพิมพ์คำสั่งเพื่อแก้ไขมัน ป๊อปอัปโผล่ขึ้นมาติดป้ายว่า "zsh: permission denied" หรือ "zsh: command not found" คุณกำลังเผชิญปัญหานี้อยู่ไหม? ถ้าใช่ บทความนี้ควรช่วยได้ เพราะมันบอก วิธีแก้ Error "Zsh permission denied" บน Mac อย่างละเอียด:
สารบัญ:
- 1. Zsh คืออะไร?
- 2. Zsh: Permission Denied ใน macOS Terminal คืออะไร?
- 3. ทำไมคุณถึงเจอ Error Permission Denied ใน Terminal?
- 4. วิธีแก้ Zsh Permission Denied Error บน Mac?
- 5. วิธีป้องกัน Error Permission Denied บน Mac?
- 6. คำถามที่พบบ่อยเกี่ยวกับ Zsh Permission Denied บน Mac
แชร์ให้คนที่ติดปัญหาแบบนี้ด้วย!
Zsh คืออะไร?
Z Shell หรือ Zsh เป็น Unix Shell ที่สามารถใช้เป็น Interactive Login Shell และเป็น Command Interpreter สำหรับ Shell Scripting มันถูกออกแบบและสร้างบนพื้นฐานของ Bash - Default Shell ของ macOS และครอบคลุมฟีเจอร์บางส่วนของ ksh และ tcsh
Zsh ใช้งานง่ายมากเมื่อตั้งค่า Plugins และ Themes รวมถึง Themes ของมันดูสวยและเรียบร้อยกว่า สำคัญที่สุด มันไม่ได้ต้องการ User Permissions ที่เข้มงวด
Zsh: Permission Denied ใน macOS Terminal คืออะไร?
เหมือนชื่อ Error บ่งชี้ มันคือ Permission Error ที่ป้องกันผู้ใช้ Mac ไม่ให้เปิดไฟล์โดยใช้คำสั่ง อาจเกิดขึ้นกับคำสั่ง Sudo หรือแม้แต่คำสั่ง Bash ตามรายงานหลายรายการ Error "Zsh: Permission Denied" อาจเกิดขึ้นแม้ไฟล์จะถูกเปิดใน Root
รายงานส่วนใหญ่บอกว่า Error ปรากฏเมื่อพวกเขาพยายามเปิด File Installer ผ่าน Terminal หรือเมื่อลากไฟล์ไปที่หน้าต่าง Terminal Error "Permission Denied" โผล่ขึ้นมา อย่างไรก็ตาม นี่อาจเกิดขึ้นกับไฟล์อื่นๆ ได้เช่นกัน

ทำไมคุณถึงเจอ Error Permission Denied ใน Terminal?
มีหลายเหตุผลที่เป็นไปได้ว่าทำไมคุณถึงเจอ Zsh Permission Denied Error บน Mac ของคุณ ส่วนที่พบบ่อยที่สุดมีดังนี้:
ไฟล์ถูกล็อก (Locked)
เมื่อคุณพยายามติดตั้งโปรแกรมหรือแก้ไขไฟล์ที่ถูกล็อก คุณน่าจะเจอ Permission Denied Error อาจเป็นเพราะคุณไม่มีสิทธิ์ Administrator หรือเพราะผู้สร้างไฟล์ใช้ chmod ล็อกไฟล์ Error สิทธิ์เป็นการบ่งชี้ว่าคำสั่งของคุณพยายามเขียนไปยัง Directory ที่บัญชีผู้ใช้ของคุณไม่ได้เป็นเจ้าของ
คำสั่ง chmod X หรือ System Command ผิด
อีกเหตุผลที่คุณเจอ Error นี้คือ คุณอาจพิมพ์คำสั่ง chmod x หรือ System Commands อื่นๆ ผิด ให้แน่ใจว่าคุณใช้คำสั่งที่ถูกต้อง ถ้าคุณพยายามรันแอปพลิเคชัน ให้แน่ใจว่าคำสั่งโปรแกรมถูกต้องและติดตั้งบนคอมพิวเตอร์
วิธีแก้ Zsh Permission Denied Error บน Mac?
ก่อนแก้ Zsh Permission Denied Error ใน Mac ให้ทำสำเนาไฟล์ที่เกี่ยวข้องทั้งหมดที่คุณมี คุณอาจต้องการไฟล์สำรองภายหลังถ้ามีอะไรผิดพลาด เพราะเมื่อคุณพยายามบังคับให้คำสั่งทำงาน มีความเสียหายที่อาจทำให้ระบบของคุณพังและทำให้เกิดปัญหามากขึ้น มาทำให้พร้อมก่อน
นอกจากนี้ คุณต้อง เพิ่มประสิทธิภาพ Mac เพื่อป้องกันปัญหาอื่นไม่ให้โผล่ขึ้นมา มันยังทำให้ระบบสะอาด เพื่อให้กระบวนการของคุณรันราบรื่น หลังจากนั้น รีสตาร์ท Mac และเช็กคู่มือ Troubleshooting ด้านล่าง
ขั้นตอนที่ 1: ตรวจสอบสิทธิ์ของคุณ
- เปิด Terminal จาก Mac Dock หรือ Utilities
- พิมพ์คำสั่งต่อไปนี้ และเพิ่ม Space หลังตัวอักษรสุดท้าย อย่ากด Enter ตอนนี้: ls -l
- ลากไฟล์ที่คุณต้องการเปิด และวางลงในหน้าต่าง Terminal นี่จะเพิ่มตำแหน่งไฟล์เข้าไปในคำสั่งที่มีอยู่อัตโนมัติ อย่างไรก็ตาม นี่จะไม่ย้ายไฟล์จริงๆ
- ตอนนี้คลิกที่หน้าต่าง Terminal และกด Enter
นี่จะแสดงว่าคุณมีสิทธิ์เขียนหรือแก้ไขไฟล์หรือไม่
ขั้นตอนที่ 2: เปลี่ยน Ownership ของ Directory
เพื่อเปลี่ยน Ownership ของ Directory คุณสามารถใช้คำสั่ง chown ใส่คำสั่งนี้ใน Terminal แล้วกด Enter:
chown -R $USER:$USER /path/to/directory
เปลี่ยน $USER ด้วยผู้ใช้ที่ล็อกอินอยู่ และ /path/to/directory ด้วย Path ไปยังที่ที่คุณต้องการเขียน
ขั้นตอนที่ 3: ให้ Terminal เข้าถึงดิสก์เต็มที่ (Full Disk Access)
เป็นไปได้อีกอย่างว่า Terminal ไม่ได้รับการเข้าถึงดิสก์เต็มที่ ซึ่งเป็นเหตุผลที่ macOS Terminal Permission ถูกปฏิเสธ การไม่ให้ Full Disk Access อาจทำให้เกิด Terminal Error "Operation not permitted" ด้วย เพื่อแก้ ไปที่ System Preferences > Security & Privacy > Privacy Panel แล้วเพิ่ม Terminal ในรายการ Full Disk Access

ขั้นตอนที่ 4: ใช้คำสั่ง Sudo
คำสั่ง Sudo เรียบง่ายแรงพอที่จะให้คุณรันคำสั่งเกือบทุกอย่างจาก Terminal ดังนั้น หากคุณเจอปัญหา Mac Permission Denied ให้ใช้ Sudo Commands ใน Terminal วิธีทำคือ เพิ่ม sudo หน้าคำสั่งเดิม นี่คือตัวอย่างคำสั่ง:
sudo chmod 755 /dvtcolorconvert.rb
sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme
คุณจะถูกขอให้ใส่รหัสผ่านถ้านี่คือครั้งแรกที่ใช้คำสั่ง Sudo แต่หลังจากนั้น คุณไม่ต้องใส่ทุกครั้งที่ใช้คำสั่ง Sudo
ตอนนี้ เช็กว่าปัญหา Zsh Permission Denied บน Mac แก้ไขแล้วหรือยัง ถ้ายัง ลองดาวน์โหลดแอป Oh My Zsh เพื่อจัดการได้ Oh My Zsh เป็น Open-source Framework ที่ใช้จัดการ Zsh Configurations บน macOS และ Linux
แก้ปัญหาแล้ว? มาแชร์ความสุขกับคนอื่นๆ
วิธีป้องกัน Error Permission Denied บน Mac?
เพื่อหลีกเลี่ยง macOS Terminal Permission Denied Errors ในอนาคต คุณสามารถ เปลี่ยนการตั้งค่าสิทธิ์บน Mac เพื่อกำหนดว่าใครสามารถดูและแก้ไขไฟล์ได้ ด้านล่างคือวิธีบางอย่าง:
วิธีที่ 1: กำหนดสิทธิ์ให้ Users และ Groups
- บน Mac ของคุณ เลือก Disk, Folder, หรือ File แล้วเลือก File > Get Info
- คลิกไอคอนล็อกเพื่อปลดล็อก
- ใส่ชื่อ Administrator และรหัสผ่าน
- คลิก User หรือ Group ในคอลัมน์ Name แล้วเลือกการตั้งค่าสิทธิ์จากเมนูป๊อปอัป
Read & Write: อนุญาตให้ผู้ใช้เปิดไอเท็มและเปลี่ยนมัน
Read Only: อนุญาตให้ผู้ใช้เปิดไอเท็มแต่ไม่เปลี่ยนเนื้อหา
Write Only: ทำให้โฟลเดอร์กลายเป็น Drop Box ผู้ใช้สามารถคัดลอกไอเท็มไป Drop Box แต่เปิดไม่ได้ เฉพาะเจ้าของ Drop Box เท่านั้นที่เปิดได้

วิธีที่ 2: ใช้สิทธิ์กับทุกไอเท็มในโฟลเดอร์หรือดิสก์
- บน Mac ของคุณ เลือก Folder หรือ Disk แล้วเลือก File > Get Info
- คลิกไอคอนล็อกเพื่อปลดล็อก
- ใส่ชื่อ Administrator และรหัสผ่าน
- คลิกเมนูป๊อปอัป Action แล้วเลือก "Apply to enclosed items"

วิธีที่ 3: เพิ่มหรือลบ User หรือ Group ในคอลัมน์ Name
- บน Mac ของคุณ เลือก Item แล้วเลือก File > Get Info
- คลิกไอคอน Padlock เพื่อปลดล็อก
- ใส่ชื่อ Administrator และรหัสผ่าน
- ในส่วน Sharing & Permissions ทำอย่างใดอย่างหนึ่ง:
เพิ่ม User หรือ Group: คลิกปุ่ม Add (+) ด้านล่างรายการ เลือก User หรือ Group แล้วคลิก Select
ลบ User หรือ Group: เลือก User หรือ Group แล้วคลิกปุ่ม Remove (-) ด้านล่างรายการ
แชร์ให้คนอื่นมากขึ้นเกี่ยวกับคู่มือที่ช่วยได้นี้!
คำถามที่พบบ่อยเกี่ยวกับ Zsh Permission Denied บน Mac
QIs Zsh default on Mac? Aตั้งแต่ macOS Catalina Mac เริ่มใช้ Zsh เป็น Default Login Shell และ Interactive Shell ทั่วทั้งระบบปฏิบัติการ
QWhy does my Mac Terminal say permission denied? Aเหตุผลที่คุณเจอ Error Permission Denied คือ คุณไม่ใช่ Administrator หรือเพราะเจ้าของไฟล์ใช้ chmod ล็อกไฟล์