ปฏิเสธการอนุญาตเมื่อเรียกใช้สคริปต์. sh


70
./geany_run_script.sh: 5: ./geany_run_script.sh: ./Area_circumference: Permission denied

program exited with code: 126. ปัญหานี้มักเกิดขึ้นเมื่อฉันพยายามเรียกใช้รหัสของฉัน สิ่งที่อาจเป็นวิธีการแก้ปัญหา?


1
Permission deniedข้อผิดพลาดเกิดขึ้นเฉพาะเมื่อคุณมีสิทธิ์ไม่เพียงพอที่จะเข้าถึงไฟล์นั้น
Avinash Raj

ฉันจะเปลี่ยนการอนุญาตได้อย่างไร
wkhwilo

ฉันจะทำเช่นนั้นได้โปรดยกตัวอย่างการยิงให้ฉัน
wkhwilo

เมื่อฉันทำมันจะบอกฉัน chmod นี้: ไม่สามารถเข้าถึง `geany_run_script.sh ': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว ฉันควรรันมันจากเครื่องเทอร์มินัลหรืออะไร
wkhwilo

ความเป็นไปได้ที่ซ้ำกันของฉันจะเรียกใช้ไฟล์. sh ใน Terminal ได้อย่างไร
Eliah Kagan

คำตอบ:


117

นี่คือลิงค์ที่อธิบายเกี่ยวกับการเปลี่ยนแปลงการอนุญาตไฟล์ (และความเป็นเจ้าของ)

หากคุณต้องการข้ามสิ่งเหล่านี้ (ตอนนี้แน่นอน) คุณสามารถสร้างไดเรกทอรี / โฟลเดอร์ในไดเรกทอรีผู้ใช้ที่บ้านของคุณและทำงานกับCโปรแกรมของคุณ(หรืออื่น ๆ ) ที่นั่น


คุณสามารถเปิด terminal (กดCtrl+ Alt+ T) และcdไปที่ไดเรกทอรีเป้าหมาย:

cd /path/to/target

หากต้องการให้สิทธิ์ในการเรียกใช้ไฟล์ "the_file_name" (หากระบบไฟล์อนุญาตให้คุณมีสิทธิ์ RW):

chmod +x the_file_name

ฉันจะเปลี่ยนการอนุญาตตัวอย่างใด ๆ ได้อย่างไร
wkhwilo

ปัญหาฉันจะทำอย่างไรฉันเป็นผู้ใช้ Ubuntu ใหม่ที่ฉันเพิ่งเปลี่ยนจาก windows
wkhwilo

.. ไดเรกทอรีการทำงานของคุณคืออะไร ตำแหน่งของไฟล์ซอร์สโค้ดของคุณคืออะไร .. คุณมีประสบการณ์กับ windows CLI หรือไม่
แม่นยำ

@ wkhwilo-012 ดูว่ามันช่วยได้มั้ยอย่าลังเลที่จะถามเพิ่มเติม ..
แม่นยำ

@ wkhwilo-012 โปรดคัดลอกไฟล์ปฏิบัติการของคุณArea_circumferenceและวาง (เส้นทางของไฟล์จะถูกวาง) เพื่ออัปเดตเนื้อหาคำถามของคุณ ...
แม่นยำ

20

คุณต้องให้สิทธิ์ในการดำเนินการเท่านั้น ติดตามสิ่งนี้:

    chmod +x filename.sh
    ./filename.sh

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


2

เปิดแอปพลิเคชั่นเครื่องเทอร์มินัลของคุณโดยกดCTRL+ ALT+ Tหรือใช้ทางลัดแอปพลิเคชันบนสภาพแวดล้อมกราฟิก (เช่นTerminalหรือxTerm)
ในหน้าต่างเครื่องแบบซึ่งปรากฏบนหน้าจอคุณจะเห็นตัวอักษรกะพริบเป็นterminal cursor: เพียงคลิกที่หน้าต่างและเขียนเพื่อป้อนข้อความ (โดยทั่วไปคือคำสั่ง) และกดENTERเพื่อยืนยันอินพุต
ก่อนที่เคอร์เซอร์จะแสดงรายการตำแหน่งปัจจุบันของคุณในระบบไฟล์จากroot directory("/") และที่บ้านของคุณ (ที่ซึ่งไฟล์ส่วนบุคคลของคุณ) เรียกว่า "~"
หากต้องการเปลี่ยนไดเรกทอรี / โฟลเดอร์ให้ใช้cd EXISTENTFOLDER(แทนที่ EXISTENTFOLDER ด้วยชื่อโฟลเดอร์); หากคุณรู้สึกว่าหลงทางเพียงแค่พิมพ์cdเพื่อกลับไปที่โฮมไดเร็กตอรี่ของคุณในพริบตา!
ตอนนี้ลองแก้ปัญหาของคุณ :

  1. ใช้cdคำสั่งเพื่อค้นหาไดเรกทอรีด้วยซอร์สโค้ดของคุณ ใช้TABเพื่อช่วยคุณ หากคุณดำเนินการls -lhคุณจะเห็นรายการเส้นทางที่เป็นไปได้ที่จะติดตามและไฟล์ที่จะดำเนินการ

  2. เมื่อคุณพบไฟล์ที่ถูกบล็อกดำเนินการchmod +x FILENAME(แทนที่ FILENAME ด้วยชื่อไฟล์ซอร์สโค้ดของคุณ)

  3. หากคุณมีไฟล์ที่ถูกบล็อกหลายไฟล์chmod +x *จะทำการปลดล็อกไฟล์ทั้งหมดในไดเรกทอรีปัจจุบัน ไม่เคย chmod + x ไฟล์ที่เป็นอันตรายหรือไม่ปลอดภัย

  4. ดำเนินการ./FILENAME YOUREVENTUALARGUMENTSเพื่อเรียกใช้ไฟล์ปฏิบัติการของคุณ

  5. จำไว้ว่าถ้าโปรแกรมรวบรวมของคุณพยายามที่จะอ่าน / เขียนนอกไดเรกทอรีบ้านของคุณคุณจะต้องดำเนินการเป็นโดยใช้rootsudo ./FILENAME YOUREVENTUALARGUMENTS

หากคุณต้องการให้มีคู่มือสำหรับคำสั่งดำเนินการman COMMAND(แทนที่ COMMAND ด้วยชื่อคำสั่งที่แน่นอน Linux เป็นกรณี ๆ ไป)

เชลล์บางตัวมีOpen terminal hereคำสั่งเพื่อทำให้ชีวิตของคุณง่ายขึ้นค้นหาในอนาคตและจำไว้ว่าเชลล์คำสั่งสามารถเป็นเพื่อนที่ดีที่สุดของคุณได้หากคุณใช้งานได้ดี :-D

มันคือทั้งหมดที่ หากคุณต้องการความช่วยเหลือเพิ่มเติมแสดงความคิดเห็นภายใต้ที่นี่
ถ้าฉันช่วยคุณกดลูกศรขึ้นทางซ้าย ถ้าคุณแก้ปัญหาทำเครื่องหมายคำตอบนี้เป็นคำตอบที่ดีที่สุด

มีประสบการณ์ที่ดีกับ Linux & Ubuntu


ขอบคุณมาก. ตอนนี้ฉันสามารถทำงานภายใต้ไดเรกทอรีบ้าน การดำเนินการที่คุณถามฉันก่อนหน้านี้ไม่ได้รับอนุญาต มันบอกว่าฉันไม่ได้รับอนุญาต แต่ขอขอบคุณสำหรับข้อเสนอแนะ
wkhwilo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.