สิทธิ์“ เรียกใช้” ทำอะไรได้บ้าง


31

ฉันตกใจที่ฉันยังไม่เข้าใจสิทธิ์ "เรียกใช้" ใน Linux

มีสามสิทธิ์คือ - อ่านเขียนและดำเนินการ ฉันเข้าใจว่าการอ่านและการเขียนอย่างแท้จริง แต่สิ่งที่จะดำเนินการทำตรง?

สมมติว่าฉันมีexample.phpสิทธิ์ดำเนินการ สิ่งที่ฉันสามารถทำอะไรกับexample.php?

คำตอบ:


32

โดยทั่วไปหมายความว่าคุณสามารถบอกให้ระบบปฏิบัติการเรียกใช้รหัสในไฟล์ ตัวอย่างเช่นหากไฟล์นั้นเป็นไฟล์ไบนารี่ที่สามารถเรียกทำงานแบบไบนารี่ได้สิทธิ์ในการเขียนจะอนุญาตให้คุณแก้ไขไฟล์นั้นสิทธิ์การอ่านจะอนุญาตให้คุณดูไฟล์ได้ แต่หากไม่มีสิทธิ์ในการเรียกใช้คุณจะไม่สามารถรันโปรแกรมได้ ในกรณีของสคริปต์มันค่อนข้างซับซ้อนกว่าเพราะคุณไม่จำเป็นต้อง 'รัน' โปรแกรมคุณสามารถอ่านเนื้อหาของมันลงในล่ามได้ซึ่งตัวมันเองก็มี privelige ดำเนินการ แต่คุณไม่จำเป็นต้องดำเนินการ สิทธิ์ในสคริปต์เอง

สคริปต์บางตัวใน Linux สามารถใช้งานได้เองคุณมักจะเห็นบรรทัดที่ด้านบนสุด

#! / bin / bash หรือ

#! / bin / หลาม

บรรทัดนั้นบอกเคอร์เนลว่าสามารถเรียกใช้ไฟล์ได้โดยการเรียกโปรแกรมที่เกี่ยวข้อง (และไม่ใช่แค่ข้อความ) จากนั้นคุณก็สามารถเรียกใช้สคริปต์ของคุณเช่น

./script

แทนที่จะต้องทำ

python ./script


สิ่งนี้หมายความว่าอะไรสำหรับไฟล์ที่ไม่ใช่ข้อความเช่น .pngหรือ.avi?
iono

1
โดยพื้นฐานแล้วนามสกุลไฟล์นั้นไม่สำคัญ หากคุณมี#!/bin/bashที่จุดเริ่มต้นของ.aviไฟล์ของคุณมันจะถูกดำเนินการเป็นทุบตี หากเป็นรูปแบบ avi จริงคุณอาจไม่สามารถเรียกใช้ได้เนื่องจากการตีความเป็นคำสั่งจะไม่สมเหตุสมผลและล้มเหลว
Mifeet

เป็น#!ตีความจริงๆโดย kernel?
masterxilo

17

"execute" อนุญาตให้ผู้ใช้เรียกใช้งาน executables สำหรับไดเรกทอรีมันเป็นค่าเผื่อการเข้าสู่ไดเรกทอรีโดยใช้คำสั่ง cd


1
การเข้าถึงส่วนไดเรกทอรีนั้นมีขนาดใหญ่มาก คุณจะไม่คาดเดาว่าเพียงแค่จากชื่อของโหมดตัวเอง
แบบดั้งเดิม

2

เพื่อวัตถุประสงค์ในทางปฏิบัติการอนุญาตให้อ่านหมายถึงความสามารถในการดำเนินการ

อย่างไรก็ตามสิ่งที่ตรงกันข้ามนั้นไม่เป็นความจริง มีค่าในความสามารถในการให้สิทธิ์ในการเรียกใช้โค้ดโดยไม่ได้รับอนุญาตให้อ่าน


จริง ๆ แล้วมันสมเหตุสมผลมาก
masterxilo

ฉันมีความสับสนกับ READ / EXECUTE และคาดหวังคำตอบดังกล่าว ขอบคุณ
T.Todua

2

มันใช้สำหรับเรียกใช้แอพจาก GUI หรือบรรทัดคำสั่ง สำหรับการใช้ php "ปกติ" (ผ่านเว็บเซิร์ฟเวอร์) นั่นไม่เปลี่ยนแปลงอะไรเลย การพูดอย่างแม่นยำนั้นขึ้นอยู่กับการกำหนดค่า แต่ในกรณีทั่วไปส่วนใหญ่คุณไม่ต้องการสิทธิ์ + x ในการโหลดหน้าเว็บ php ของคุณผ่านเบราว์เซอร์

สำหรับการเรียกใช้จากบรรทัดคำสั่งคุณต้องการ:

  • เพิ่ม #!/usr/bin/phpที่จุดเริ่มต้นสคริปต์
  • เพิ่มสิทธิ์ + x
  • สคริปต์ของคุณต้องอยู่ในพา ธ การค้นหาที่สามารถเรียกใช้งานได้ (ตัวแปรสภาพแวดล้อม $ PATH) หรือคุณต้องระบุไดเรกทอรีที่อยู่ข้างหน้าชื่อสคริปต์ของคุณ ซึ่งอาจเป็นชื่อพา ธ สัมบูรณ์เหมือน/etc/xdg/fooหรือ/home/fred/barหรือไดเรกทอรีญาติเหมือนหรือdir1/prog1./prog2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.