สิทธิ์ Zsh ถูกปฏิเสธเป็นข้อผิดพลาดที่เกิดขึ้นเมื่อคุณพยายามรันคำสั่งบน Linux หรือ Mac ซึ่งคุณไม่มีสิทธิ์ดำเนินการ คำสั่งอาจตรงไปตรงมาเหมือนกับการดำเนินการ 'ls' ในไดเร็กทอรีที่คุณไม่มีสิทธิ์เขียนหรือรันสคริปต์ที่ดำเนินการที่ผู้ใช้ของคุณไม่ได้รับอนุญาตให้ทำ จากการอนุญาต เราอ้างถึงการอนุญาตในการอ่านหรือเขียน
ป>
มาดูสาเหตุหลักของข้อผิดพลาดนี้ จากนั้นเราจะลองแต่ละวิธีเพื่อดูว่าวิธีใดทำงานได้ดีที่สุด
ข้อผิดพลาดนี้ส่วนใหญ่เกิดขึ้นเมื่อคุณไม่มีสิทธิ์ดำเนินการ เขียน หรืออ่านไฟล์
สมมติว่าเราอยู่ในเชลล์ Zsh ในระบบปฏิบัติการ Linux และคุณกำลังพยายามแสดงรายการเนื้อหาของไฟล์โดยใช้ 'cat' แต่คุณได้รับข้อผิดพลาด 'permission rejected'
ป>
เพื่อแก้ไขข้อผิดพลาดนี้ ก่อนอื่นเราต้องแสดงรายการสิทธิ์ของไฟล์ก่อน เราดำเนินการ “ls -l” เพื่อดูสิทธิ์
ป>
อย่างที่คุณเห็น การอนุญาตนั้นมีเพียงผู้ใช้รูทและกลุ่มรูทเท่านั้นที่สามารถอ่านไฟล์ได้ ในขณะที่ผู้ใช้รูทสามารถเขียนได้เฉพาะไฟล์เท่านั้น
1. ใช้ sudo
เพื่อแก้ไขปัญหานี้ วิธีแก้ปัญหาที่ง่ายที่สุดคือใช้ 'sudo' ด้วยคำสั่งที่เราอยากจะรัน สิ่งนี้จะดำเนินการคำสั่งในฐานะผู้ใช้รูท ในกรณีของคุณเช่นกัน คุณสามารถใช้ 'sudo' เมื่อคุณมั่นใจว่าคำสั่งที่คุณต้องการดำเนินการหรืองานที่คุณต้องการเรียกใช้จะไม่เป็นอันตรายต่อคอมพิวเตอร์ของคุณ
เราจึงสามารถรันได้:
ป>
sudo cat file
2. เปลี่ยนการอนุญาตของไฟล์หรือไฟล์
สิ่งต่อไปที่เราทำได้คือเปลี่ยนการอนุญาตของไฟล์ เนื่องจากข้อผิดพลาดการอนุญาตถูกปฏิเสธมักเกิดจากการอนุญาตในการอ่านหรือเขียน เราจึงสามารถเปลี่ยนการอนุญาตของไฟล์นั้น ๆ ได้ ป>
ป>
โดยดำเนินการ 'ls -l' ภายในไดเร็กทอรีที่มีไฟล์อยู่ เราจะเห็นว่าเจ้าของและกลุ่มของไฟล์นั้นเป็น root
เราสามารถเปลี่ยนเจ้าของเป็นผู้ใช้ของเราแล้วทำในสิ่งที่เราต้องการจะทำกับไฟล์ ป>
ป>
เราวิ่งได้:
sudo chown [ผู้ใช้] [ชื่อไฟล์] ป>
ในตัวอย่างของเรา เนื่องจาก v3n0m เป็นผู้ใช้ที่เราเข้าสู่ระบบ เราจะออกคำสั่งเป็น:
sudo chown v3n0m file
v3n0m นี่คือผู้ใช้ของเรา ในกรณีของคุณ มันจะเป็นชื่อผู้ใช้ของคุณ ป>
ตอนนี้ เราสามารถเรียกใช้ cat บนไฟล์ได้ เนื่องจากไฟล์จะไม่ให้ ข้อผิดพลาดในการปฏิเสธสิทธิ์ อีกต่อไป . ป>
3. เปิดใช้งานสิทธิ์ดำเนินการ
คุณสามารถใช้ ./ กับชื่อไฟล์ใน zsh หรือเชลล์อื่นๆ เพื่อรันไฟล์ในรูปแบบโปรแกรม แต่หากไม่ได้ตั้งค่าการอนุญาตดำเนินการในไฟล์ มันจะให้ zsh :ข้อผิดพลาดการอนุญาตถูกปฏิเสธ
ป>
สมมติว่าเราต้องการรันสคริปต์ชื่อ script1 เราพิมพ์ ./script1 ในเทอร์มินัลของเรา และมันแจ้งข้อผิดพลาดนี้:
เราทำ ls -la ในไฟล์เพื่อดูการอนุญาต ดังที่คุณเห็นว่าไม่ได้ตั้งค่าสิทธิ์การดำเนินการในไฟล์ ป>
วิธีแก้ปัญหานี้ง่ายมาก เพิ่มสิทธิ์ในการดำเนินการให้กับไฟล์
เราออกคำสั่งง่ายๆ
ป>
chmod +x script1
ชโมด +x จะเพิ่มบิตดำเนินการ เกี่ยวกับการอนุญาตของไฟล์ สำหรับเจ้าของ กลุ่ม รวมถึงคนอื่นๆ ป>
ตอนนี้เราสามารถเรียกใช้ไฟล์เป็นโปรแกรมได้โดยพิมพ์ ./script1 โดยไม่มีข้อผิดพลาดใดๆ
การดำเนินการนี้ควรแก้ไขข้อผิดพลาดหากคุณพบปัญหาบน Linux อย่างไรก็ตาม หากคุณพบข้อผิดพลาดของ MacOS หรือ Gradle โปรดติดตามบทความต่อไป
แก้ไขไฟล์ zshrc ของคุณ (macOS)
ผู้ใช้บางรายรายงาน MacOS ของตนโดยใช้ zsh เมื่อไม่ได้อยู่ในไดเร็กทอรีจากตำแหน่งที่ต้องการดำเนินการคำสั่ง ป>
หากคุณประสบปัญหาที่คล้ายกัน การแก้ไขนั้นง่ายมาก ป>
คุณต้องแก้ไข .ไฟล์ zshrc ในหน้าแรก/ชื่อผู้ใช้ของคุณ ไดเร็กทอรีและเพิ่มส่วนนี้ที่ส่วนท้ายของไฟล์ ป>
setopt auto_cd
ซึ่งจะเปิดใช้งานตัวเลือก auto_cd ใน zsh .
หากต้องการแก้ไข .zshrc คุณสามารถใช้โปรแกรมแก้ไขข้อความกราฟิกหรือโปรแกรมแก้ไขข้อความบรรทัดคำสั่ง เช่น vim หรือ vi ได้
ใช้คำสั่ง CHMOD เพื่อตั้งค่าสิทธิ์ (Gradle)
ข้อผิดพลาดการปฏิเสธสิทธิ์ Zsh อาจเกิดขึ้นได้หากคุณกำลังทำงานกับการไล่ระดับและไฟล์ gradlew ไม่มีสิทธิ์ที่ถูกต้อง ป>
ในการแก้ไขข้อผิดพลาดดังกล่าว คุณต้องตั้งค่า การอนุญาตที่ถูกต้องบน gradlew ป>
คุณสามารถพิมพ์คำสั่งนี้ในเทอร์มินัลของคุณ
chmod 755 gradlew
ซึ่งจะทำให้ไฟล์ gradlew สามารถเรียกใช้งานได้ และข้อผิดพลาดจะได้รับการแก้ไข
หรือคุณสามารถพิมพ์คำสั่งนี้ง่ายๆ chmod +x gradlew ป>
สิ่งนี้จะทำให้ไฟล์ gradlew ปฏิบัติการได้
หากไม่มีวิธีแก้ไขปัญหาเหล่านี้ที่เหมาะกับคุณ โปรดแสดงความคิดเห็นด้านล่างได้เลย แล้วช่างเทคนิคของเรายินดีที่จะช่วยเหลือคุณในไม่ช้า
เกี่ยวกับผู้เขียน
เควิน แอร์โรว์ส
Kevin Arrows เป็นผู้เชี่ยวชาญด้านเทคโนโลยีที่มีประสบการณ์สูงและมีความรู้และมีประสบการณ์ในอุตสาหกรรมมานานกว่าทศวรรษ เขาได้รับการรับรองจาก Microsoft Certified Technology Specialist (MCTS) และมีความมุ่งมั่นอย่างแรงกล้าที่จะติดตามข่าวสารเกี่ยวกับการพัฒนาเทคโนโลยีล่าสุด Kevin ได้เขียนหัวข้อที่เกี่ยวข้องกับเทคโนโลยีอย่างกว้างขวาง โดยนำเสนอความเชี่ยวชาญและความรู้ของเขาในด้านต่างๆ เช่น การพัฒนาซอฟต์แวร์ ความปลอดภัยทางไซเบอร์ และการประมวลผลแบบคลาวด์ การมีส่วนร่วมของเขาในด้านเทคโนโลยีได้รับการยอมรับและเคารพอย่างกว้างขวางจากเพื่อนร่วมงานของเขา และเขาได้รับการยกย่องอย่างสูงจากความสามารถของเขาในการอธิบายแนวคิดทางเทคนิคที่ซับซ้อนในลักษณะที่ชัดเจนและรัดกุม ป>