ฉันจะให้สิทธิ์ที่แตกต่างกันสำหรับผู้ใช้แต่ละคนได้อย่างไร


11

ดังนั้นฉันใช้ Linux มาหลายปีแล้วและฉันควรรู้คำตอบนี้จริง ๆ แต่ฉันมีปัญหาในการค้นหา โดยเฉพาะฉันใช้ Debian ของเดเบียนที่ใช้ .... ส่วนใหญ่เป็น Ubuntu

หากฉันมีเซิร์ฟเวอร์ที่มีผู้ใช้มากกว่าสามคนฉันจะตั้งค่าการอนุญาตที่แตกต่างให้กับไฟล์สำหรับผู้ใช้แต่ละคนได้อย่างไร

ตัวอย่างเช่น:

หากฉันมีไฟล์ที่มีสิทธิ์และความเป็นเจ้าของเหล่านี้:

rwx rw_ r__ user1:group1 file1.txt

และฉันมี 3 ผู้ใช้ที่มีสิทธิ์ที่ต้องการเหล่านี้ ....

  • user1 rwx
  • user2 rw_
  • user3 r__

สิ่งที่ฉันต้องทำคือให้user1เป็นเจ้าของไฟล์user2อยู่ในgroup1และuser3ไม่สามารถ - ถูกต้อง?

แต่สิ่งที่ถ้าฉันมีuser4และuser5

  • user4 _wx
  • user5 __x

ฉันจะตั้งค่าอย่างไร

ฉันไม่เคยทำแบบนี้มาก่อน แต่ฉันถูกถามโดยผู้ดูแลระบบ Windows และฉันไม่สามารถตอบได้


8
สำหรับชนิดของเมล็ดสิทธิ์ในการที่คุณจะต้องใช้รายการควบคุมการเข้าถึง (ACL) คุณสามารถค้นหาได้อย่างรวดเร็วการสอนที่นี่ แม้ว่าคำเตือนเมื่อคุณเริ่มต้นเส้นทางของ ACL แทนการอนุญาตก็เป็นความลาดชันลื่นมากและสิ่งต่าง ๆ ก็ซับซ้อนอย่างรวดเร็วจริง ๆ ด้วยผลที่ไม่ตั้งใจบางอย่างในตอนท้าย
MelBurslan

คำตอบ:


19

สิทธิ์ unix แบบดั้งเดิมอนุญาตเฉพาะผู้ใช้กลุ่มสิทธิ์อื่น ๆ ตามที่คุณพบ สิ่งเหล่านี้อาจทำให้เกิดการรวมกลุ่มที่น่าอึดอัดใจบางอย่างที่ต้องสร้าง ...

ดังนั้นรูปแบบใหม่ของ ACL (รายการควบคุมการเข้าถึง) จึงถูกตรึงไว้ สิ่งนี้อนุญาตให้คุณระบุผู้ใช้หลายคนและหลายกลุ่มที่มีสิทธิ์ที่แตกต่างกัน เหล่านี้ถูกตั้งค่าด้วยsetfaclคำสั่งและอ่านด้วยgetfacl

$ setfacl -m u:root:r-- file.txt
$ setfacl -m u:bin:-wx file.txt 
$ setfacl -m u:lp:--x file.txt 
$ getfacl file.txt
# file: file.txt
# owner: sweh
# group: sweh
user::rw-
user:root:r--
user:bin:-wx
user:lp:--x
group::r--
mask::rwx
other::r--

คุณสามารถบอกได้อย่างง่ายดายว่าไฟล์มี ACL หรือไม่โดยดูที่lsเอาต์พุต:

$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt

+ในตอนท้ายของสิทธิ์ที่บ่งชี้ว่า ACL


2

ใช่ ACL: อนุญาตการตั้งค่าสิทธิ์ที่แตกต่างกันอย่างอิสระให้กับผู้ใช้หรือกลุ่มต่างๆ IIRC สิทธิ์กลุ่มปกติ จำกัด ชุดสิทธิ์ที่กลุ่มและผู้ใช้สามารถมีได้ผ่าน ACL: s (แสดงmaskในgetfacl) แต่setfaclควรจัดการกับสิ่งนั้นหากคุณเพิ่มสิทธิ์

แต่ในบางกรณีคุณจำเป็นต้องถามว่าชุดการอนุญาตนั้นสมเหตุสมผลหรือไม่

ฉันมี 3 ผู้ใช้ที่มีสิทธิ์ที่ต้องการเหล่านี้ ....
- user1 rwx
- user2 rw_
- user3 r__

คุณสามารถใช้สิ่งนี้กับ ACL: s หรือ (โดยประมาณ) ด้วยสิทธิ์ Unix ตามปกติโดยการทำให้ user1 เป็นเจ้าของไฟล์นั้น user2 เป็นสมาชิกของกลุ่มและให้ผู้อื่นรวมถึง user3 สามารถเข้าถึงการอ่านได้ แม้ว่าทุกคน (ที่มีการเข้าถึงไดเรกทอรี) ก็จะมีสิทธิ์อ่านด้วย

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

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

ในความหมายเดียวกัน user4 with -wxและ user5 with --xไม่สมเหตุสมผลกับฉัน การเข้าถึงแบบเขียนอย่างเดียวอาจเหมาะสมถ้ามีความเป็นไปได้ที่จะอนุญาตให้ผนวกเท่านั้น แต่ระบบการอนุญาตนั้นไม่ใช่สิ่งที่ละเอียด

(* ยกเว้นว่าพวกเขาไม่สามารถเขียนได้ทุกที่)


แม้ว่าหากเราลบข้อกำหนดแปลก ๆ สำหรับxบิตเราก็เหลือไฟล์ที่ user1 และ user2 ควรมีสิทธิ์การเขียนและ user3 ควรมีสิทธิ์อ่าน นักเขียนและผู้อ่านหลายคนจะง่ายกับโมเดลดั้งเดิม แต่ในกรณีนี้จะต้องมีเทคนิคในการรวมสิทธิ์การใช้ไฟล์กับสิทธิ์ของไดเรกทอรีที่มี โชคดีที่ในหลายกรณีมีผู้ใช้รายหนึ่งที่มีสิทธิ์มากกว่าเพียงพอ

หากไม่มีข้อกำหนดเกี่ยวกับบิตเรียกใช้งานดูเหมือนว่ากรณีที่จะใช้ ACL: s แต่ด้วยตัวอย่างนี้ดูเหมือนว่าค่อนข้างจะซับซ้อนสำหรับฉัน


หากผู้ใช้สามารถเขียนไปยังระบบไฟล์ที่เมาท์โดยไม่ได้รับอนุญาตเท่านั้นเขาจะไม่สามารถคัดลอกได้แม้ว่าเขาจะสามารถเรียกใช้งานต้นฉบับได้หากมีการตั้งค่าการอนุญาตที่เหมาะสม การดำเนินการอย่างเดียวอาจเหมาะสมถ้าคุณต้องการป้องกันไม่ให้มองหาช่องโหว่ -wxแม้ว่าจะแปลกอย่างแน่นอน
celtschk

1
ระบบบางระบบมีกลไกการอนุญาตให้ผนวกเท่านั้น chattr +aตัวอย่างเช่นลีนุกซ์มี และแม้ไม่มีระบบเฉพาะคุณสามารถทำให้ไฟล์เป็น FIFO --xและโดยส่วนขยายยัง-wxทำให้รู้สึกถึงฉันสำหรับไดเรกทอรี
Random832
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.