ฉันตกใจที่ฉันยังไม่เข้าใจสิทธิ์ "เรียกใช้" ใน Linux
มีสามสิทธิ์คือ - อ่านเขียนและดำเนินการ ฉันเข้าใจว่าการอ่านและการเขียนอย่างแท้จริง แต่สิ่งที่จะดำเนินการทำตรง?
สมมติว่าฉันมีexample.php
สิทธิ์ดำเนินการ สิ่งที่ฉันสามารถทำอะไรกับexample.php
?
ฉันตกใจที่ฉันยังไม่เข้าใจสิทธิ์ "เรียกใช้" ใน Linux
มีสามสิทธิ์คือ - อ่านเขียนและดำเนินการ ฉันเข้าใจว่าการอ่านและการเขียนอย่างแท้จริง แต่สิ่งที่จะดำเนินการทำตรง?
สมมติว่าฉันมีexample.php
สิทธิ์ดำเนินการ สิ่งที่ฉันสามารถทำอะไรกับexample.php
?
คำตอบ:
โดยทั่วไปหมายความว่าคุณสามารถบอกให้ระบบปฏิบัติการเรียกใช้รหัสในไฟล์ ตัวอย่างเช่นหากไฟล์นั้นเป็นไฟล์ไบนารี่ที่สามารถเรียกทำงานแบบไบนารี่ได้สิทธิ์ในการเขียนจะอนุญาตให้คุณแก้ไขไฟล์นั้นสิทธิ์การอ่านจะอนุญาตให้คุณดูไฟล์ได้ แต่หากไม่มีสิทธิ์ในการเรียกใช้คุณจะไม่สามารถรันโปรแกรมได้ ในกรณีของสคริปต์มันค่อนข้างซับซ้อนกว่าเพราะคุณไม่จำเป็นต้อง 'รัน' โปรแกรมคุณสามารถอ่านเนื้อหาของมันลงในล่ามได้ซึ่งตัวมันเองก็มี privelige ดำเนินการ แต่คุณไม่จำเป็นต้องดำเนินการ สิทธิ์ในสคริปต์เอง
สคริปต์บางตัวใน Linux สามารถใช้งานได้เองคุณมักจะเห็นบรรทัดที่ด้านบนสุด
#! / bin / bash หรือ
#! / bin / หลาม
บรรทัดนั้นบอกเคอร์เนลว่าสามารถเรียกใช้ไฟล์ได้โดยการเรียกโปรแกรมที่เกี่ยวข้อง (และไม่ใช่แค่ข้อความ) จากนั้นคุณก็สามารถเรียกใช้สคริปต์ของคุณเช่น
./script
แทนที่จะต้องทำ
python ./script
#!/bin/bash
ที่จุดเริ่มต้นของ.avi
ไฟล์ของคุณมันจะถูกดำเนินการเป็นทุบตี หากเป็นรูปแบบ avi จริงคุณอาจไม่สามารถเรียกใช้ได้เนื่องจากการตีความเป็นคำสั่งจะไม่สมเหตุสมผลและล้มเหลว
#!
ตีความจริงๆโดย kernel?
"execute" อนุญาตให้ผู้ใช้เรียกใช้งาน executables สำหรับไดเรกทอรีมันเป็นค่าเผื่อการเข้าสู่ไดเรกทอรีโดยใช้คำสั่ง cd
เพื่อวัตถุประสงค์ในทางปฏิบัติการอนุญาตให้อ่านหมายถึงความสามารถในการดำเนินการ
อย่างไรก็ตามสิ่งที่ตรงกันข้ามนั้นไม่เป็นความจริง มีค่าในความสามารถในการให้สิทธิ์ในการเรียกใช้โค้ดโดยไม่ได้รับอนุญาตให้อ่าน
มันใช้สำหรับเรียกใช้แอพจาก GUI หรือบรรทัดคำสั่ง สำหรับการใช้ php "ปกติ" (ผ่านเว็บเซิร์ฟเวอร์) นั่นไม่เปลี่ยนแปลงอะไรเลย การพูดอย่างแม่นยำนั้นขึ้นอยู่กับการกำหนดค่า แต่ในกรณีทั่วไปส่วนใหญ่คุณไม่ต้องการสิทธิ์ + x ในการโหลดหน้าเว็บ php ของคุณผ่านเบราว์เซอร์
สำหรับการเรียกใช้จากบรรทัดคำสั่งคุณต้องการ:
#!/usr/bin/php
ที่จุดเริ่มต้นสคริปต์/etc/xdg/foo
หรือ/home/fred/bar
หรือไดเรกทอรีญาติเหมือนหรือdir1/prog1
./prog2
.png
หรือ.avi
?