Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

แก้ไขข้อผิดพลาด Zsh Permission Denied บน Linux และ macOS: วิธีแก้ไขด่วนและการแก้ปัญหา

ข้อผิดพลาด "Zsh permission denied" เกิดขึ้นเมื่อคุณพยายามรันคำสั่งบน Linux หรือ Mac ที่คุณไม่มีสิทธิ์ในการรัน (execute) คำสั่งนั้นอาจเป็นคำสั่งง่ายๆ เช่น 'ls' บนไดเรกทอรีที่คุณไม่มีสิทธิ์เขียน หรือการรันสคริปต์ที่ทำงานซึ่งผู้ใช้ของคุณไม่มีสิทธิ์ทำ โดยสิทธิ์ที่กล่าวถึงหมายถึงสิทธิ์อ่าน (read) หรือเขียน (write)

มาดูสาเหตุหลักของข้อผิดพลาดนี้ แล้วลองใช้วิธีแก้ไขแต่ละวิธีดูว่าวิธีไหนเหมาะสมที่สุด

หลักๆ แล้วข้อผิดพลาดนี้เกิดจากคุณไม่มีสิทธิ์ในการรัน (execute), เขียน (write) หรืออ่าน (read) ไฟล์นั้นๆ

สมมติว่าเราอยู่ใน Zsh shell บน Linux และพยายามแสดงเนื้อหาไฟล์ด้วย 'cat' แต่ได้รับข้อผิดพลาด 'permission denied'

เพื่อแก้ไข ขั้นแรกเราต้องตรวจสอบสิทธิ์ของไฟล์ โดยรัน “ls -l” เพื่อดูสิทธิ์

จะเห็นว่าสิทธิ์ตั้งไว้ว่าเฉพาะ root user และ root group เท่านั้นที่อ่านไฟล์ได้ ส่วน root user เท่านั้นที่เขียนไฟล์ได้

1. ใช้ sudo

วิธีแก้ไขง่ายที่สุดคือใช้ 'sudo' นำหน้าคำสั่งที่ต้องการรัน จะทำให้คำสั่งรันในฐานะ root user ในกรณีของคุณก็ใช้ 'sudo' เมื่อคุณมั่นใจว่าคำสั่งหรืองานที่จะรันจะไม่ทำลายคอมพิวเตอร์

เราสามารถรันได้ดังนี้:

sudo cat file

2. เปลี่ยนสิทธิ์ของไฟล์

วิธีถัดไปคือเปลี่ยนสิทธิ์ของไฟล์ เนื่องจากข้อผิดพลาด permission denied มักมาจากสิทธิ์อ่านหรือเขียน เราสามารถเปลี่ยนสิทธิ์ของไฟล์นั้นๆ ได้

โดยรัน 'ls -l' ภายในไดเรกทอรีที่ไฟล์อยู่ จะเห็นว่า owner และ group ของไฟล์เป็น root

เราสามารถเปลี่ยน owner ให้เป็น user ของเรา แล้วจึงทำอะไรกับไฟล์ได้ตามต้องการ

รันคำสั่ง:

sudo chown [user] [file-name]

ในตัวอย่าง user ที่ล็อกอินคือ v3n0m ดังนั้นคำสั่งจะเป็น:

sudo chown v3n0m file

v3n0m คือ user ของเรา ในกรณีของคุณจะเป็น username ของคุณ

ตอนนี้เราสามารถรัน cat บนไฟล์ได้แล้ว จะไม่มี permission denied error อีก

3. เปิดใช้งานสิทธิ์ Execute (รันได้)

คุณสามารถใช้ ./ นำหน้าชื่อไฟล์ใน zsh หรือ shell อื่นๆ เพื่อรันไฟล์เป็นโปรแกรม แต่ถ้าไม่ได้ตั้งค่าสิทธิ์ execute บนไฟล์ จะได้ข้อผิดพลาด "zsh: permission denied"

สมมติเราอยากรันสคริปต์ชื่อ script1 พิมพ์ ./script1 ในเทอร์มินัล แล้วได้ข้อผิดพลาด

เราทำ ls -la บนไฟล์เพื่อดูสิทธิ์ จะเห็นว่าไม่มีสิทธิ์ execute ตั้งไว้

วิธีแก้คือเพิ่มสิทธิ์ execute บนไฟล์ รันคำสั่งง่ายๆ:

chmod +x script1

chmod +x จะเพิ่ม execute bit ให้กับ สิทธิ์ของไฟล์สำหรับ owner, group และ others

ตอนนี้เราสามารถรันไฟล์เป็นโปรแกรมด้วย ./script1 ได้โดยไม่มีข้อผิดพลาด

วิธีนี้ควรแก้ปัญหาบน Linux แต่ถ้าคุณเจอข้อผิดพลาดนี้บน macOS หรือ Gradle ให้อ่านต่อ

แก้ไขไฟล์ .zshrc (macOS)

บางผู้ใช้รายงานว่าใน macOS ใช้ zsh ตอนไม่อยู่ในไดเรกทอรีที่ต้องการรันคำสั่ง จะเกิดปัญหา

ถ้าคุณเจอปัญหาแบบนี้ วิธีแก้ก็ง่ายมาก

คุณต้องแก้ไขไฟล์ .zshrc ในไดเรกทอรี home/username ของคุณ และเพิ่มบรรทัดนี้ท้ายไฟล์:

setopt auto_cd

สิ่งนี้จะเปิดใช้งานตัวเลือก auto_cd ใน zsh

เพื่อแก้ไขไฟล์ .zshrc คุณสามารถใช้ text editor แบบ GUI หรือ command line เช่น vim หรือ vi ได้

ใช้คำสั่ง CHMOD ตั้งค่าสิทธิ์ (Gradle)

ข้อผิดพลาด Zsh permission denied อาจเกิดขึ้นถ้าคุณทำงานกับ Gradle และไฟล์ gradlew ไม่มีสิทธิ์ที่ถูกต้อง

เพื่อแก้ไข ต้องตั้ง สิทธิ์ที่ถูกต้องบน gradlew

พิมพ์คำสั่งนี้ในเทอร์มินัล:

chmod 755 gradlew

จะทำให้ ไฟล์ gradlew executable (รันได้) และข้อผิดพลาดจะหาย

หรือพิมพ์ chmod +x gradlew ก็ได้เช่นกัน จะทำให้ gradlew executable เช่นกัน

ถ้าวิธีข้างต้นไม่ได้ผล โปรดแสดงความคิดเห็นด้านล่าง เทคนิคของเราจะช่วยคุณโดยเร็วที่สุด

ABOUT THE AUTHOR

แก้ไขข้อผิดพลาด Zsh Permission Denied บน Linux และ macOS: วิธีแก้ไขด่วนและการแก้ปัญหา

Kevin Arrows

Kevin Arrows เป็นผู้เชี่ยวชาญด้านเทคโนโลยีที่มีประสบการณ์มากกว่า 10 ปี ได้รับการรับรอง Microsoft Certified Technology Specialist (MCTS) มีความหลงใหลในการอัปเดตเทคโนโลยีล่าสุด เขียนบทความเกี่ยวกับหัวข้อเทคโนโลยีกว้างขวาง แสดงความเชี่ยวชาญในด้านการพัฒนาซอฟต์แวร์ ความปลอดภัยไซเบอร์ และ Cloud Computing ได้รับการยอมรับและเคารพจากเพื่อนร่วมงาน สามารถอธิบายแนวคิดทางเทคนิคที่ซับซ้อนได้อย่างชัดเจนและกระชับ