Score:0

ให้สิทธิ์การเข้าถึงไฟล์แก่เจ้าของโปรแกรมเช่นเดียวกับการเข้าถึงไฟล์ของผู้ใช้

ธง us

ฉันมีไฟล์ปฏิบัติการ (สร้างจากโค้ดไพธอน) ซึ่งฉันต้องการมันเพื่อเข้าถึงไฟล์ที่ฉันสร้างขึ้น รวมถึงไฟล์ที่สร้างโดยบุคคลที่เรียกใช้ไฟล์ปฏิบัติการ ฉัน ไม่อนุญาตให้เปลี่ยนสิทธิ์ ของไฟล์.

นี่คือตัวอย่าง:
user1 เป็นเจ้าของไฟล์ปฏิบัติการและ user1_file
user2 เป็นเจ้าของ user2_file คาดว่า user2 จะเรียกใช้งานไฟล์ปฏิบัติการได้

>>> ls -อัล
drwxr-xr-x 12 user1 group1 4096 2 ม.ค. 13:48 เรียกใช้งานได้
-rw------- 1 user1 group1 272 ก.พ. 57 14:32 น. user1_file
-rw------- 1 user2 group2 272 ก.พ. 57 14:32 น. user2_file

นี่คือสิ่งที่ฉันได้ลอง

  1. ทำงานโดยตรงในฐานะ user2:
    มันล้มเหลวเพราะเขาไม่มีสิทธิ์อ่าน user1_file
  2. ตั้งค่า suid สำหรับปฏิบัติการแล้วเรียกใช้ในฐานะ user2:
    มันอ่าน user1_file ได้สำเร็จ แต่ไม่สามารถอ่าน user2_file ได้
  3. อัปเดตรหัสหลามเพื่อดำเนินการ os.system('chmod u-s ปฏิบัติการ') ก่อนเข้าถึง user2_file:
    ไม่อนุญาตให้ดำเนินการนี้แม้ว่าจะได้รับอนุญาต แต่ฉันก็ยังกังวลเกี่ยวกับวิธีการเพิ่ม suid ใหม่ในขณะที่โปรแกรมทำงานด้วยสิทธิ์ user2

มีวิธีใดบ้างที่จะอนุญาตทั้งสิทธิ์ user1 และ user2 สำหรับการเรียกทำงาน หรืออาจเป็นวิธีหยุดการอนุญาต user1 ชั่วคราว

pLumo avatar
in flag
คุณต้องแก้ไขสิ่งนี้: "*ฉัน **ไม่ได้รับอนุญาตให้เปลี่ยนการอนุญาต** ของไฟล์*"คุณไม่สามารถ "ให้โปรแกรม" เข้าถึงไฟล์ได้ แต่คุณให้สิทธิ์การเข้าถึงแก่ผู้ใช้
raj avatar
cn flag
raj
ใครบอกว่าคุณ "ไม่ได้รับอนุญาตให้เปลี่ยนสิทธิ์ของไฟล์" ตัวเองหรือคนอื่น? อย่างไรก็ตาม บุคคลนี้ไม่รู้ว่าการอนุญาตทำงานอย่างไร และความคิดของพวกเขากลับตรงกันข้ามอย่างสิ้นเชิง หากทั้งสองไฟล์เป็นของผู้ใช้คนละคนกัน และพวกเขามีสิทธิ์ที่ตั้งไว้สำหรับเจ้าของเท่านั้น (เช่นในกรณีของคุณ) ผู้ใช้คนใด (ยกเว้นรูท) จะเข้าถึงไฟล์ทั้งสองไม่ได้ ระยะเวลา. คุณ **จำเป็น** ในการเปลี่ยนการอนุญาตของไฟล์ มิฉะนั้น คุณต้องเรียกใช้แอปพลิเคชันของคุณในฐานะรูท
us flag
ฉันเป็นผู้ใช้1 ดังนั้น ในทางเทคนิคแล้ว ฉันสามารถเปลี่ยนสิทธิ์สำหรับ user1_file เท่านั้น อย่างไรก็ตาม user1_file มีข้อมูลที่ฉันไม่ต้องการแบ่งปันกับใคร
Score:0
ธง us

ขั้นตอนที่แก้ปัญหาของฉัน

  1. เพิ่มบรรทัดต่อไปนี้ในรหัสหลาม os.seteuid(ออส.getuid()) ก่อนอ่าน user2_file
  2. สร้างไฟล์ปฏิบัติการขึ้นมาใหม่
  3. ตั้ง suid สำหรับปฏิบัติการ chmod u+s ปฏิบัติการได้

รายละเอียดเพิ่มเติม
แนวคิดหลักคือการเปลี่ยน uid ที่มีประสิทธิภาพของกระบวนการเป็น uid จริง

เรียนรู้เกี่ยวกับกระบวนการ linux uid/gid จริงและที่บันทึกไว้: สิ่งนี้ ลิงค์ ช่วยฉันด้วย
เปลี่ยน uid/guid ที่มีประสิทธิภาพตามต้องการ นี้ คำถาม สามารถเป็นประโยชน์

raj avatar
cn flag
raj
ทำไมต้องทำให้มันซับซ้อน ถ้าวิธีที่เหมาะสมคือตั้งค่าสิทธิ์ของไฟล์ให้ถูกต้อง
us flag
ตอบในความคิดเห็นของคำถามเอง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา