คำตอบที่ยอดเยี่ยมอื่น ๆ อีกมากมายที่นี่ แต่ถ้าคุณยังสับสนเหมือนเดิมนี่เป็นอีกแนวทางหนึ่ง โปรดทราบว่าฉันเป็นนักเรียนของสิ่งนี้เท่านั้นไม่ใช่เจ้านายดังนั้นคำตอบนี้กำลังดำเนินการอยู่และไม่ได้รับการพิจารณาคำตอบที่มั่นคง ลองพิจารณาคำตอบนี้ v0.2
กลุ่มนั้นง่ายและซับซ้อนในเวลาเดียวกัน
รหัสสำคัญที่ใช้ด้านล่าง:
KEY Full name -------- Description---------------------------------------------
u User uID = User ID (a unique # associated with each user)
g Group gID = Group ID (a unique # associated with each group)
While each /etc/passwd entry has one uID and one gID,
additional gIDs can be associated with a users via
/etc/group.
L Login IDs - uID and gID produced from the Login process.
('L' is not exactly standard Linux terminology, but
useful for explanations below.)
F File IDs - uID and gID retrieved from a file's ownership.
('F' is not exactly standard Linux terminology, but
useful for explanations below.)
R Real IDs - Who actually runs a process
E Effective IDs - Who spoofed via setuid or setgid, runs a process
O Original Eff. IDs - Place to save the original Effective ID when changing
it (e.g. temporarily downgrading it) so can later
restore it. Also called "Saved ID"; (but 'S' was not
used for here to help avoid confusion with the 'S' in
'SetUserID' & SetGroupID.)
+ Supplimentary gIDs - Optional, additional groups (none or more) running
this process which can be used to test for permissions.
ชื่อผู้ใช้และ ID กลุ่ม:
Category USER GROUP Notes
----------------- ---- ----- -------------------------------------------
From login: LuID LgID From /etc/passwd lookup
From files: FuID FgID Each file has these. Set by creator process.
For each running process:
Real RuID RgID Actual user starting the program
Effective EuID EgID Assigned user starting the program*
Saved OuID OgID Saves original effective ID.
Supplementary +gID1 (optional, additional groups)
+gID2
...
วิธีการรับรหัส:
1) เข้าสู่ระบบรับรองความถูกต้องชื่อผู้ใช้และผลตอบแทนLuID
และLgID
จาก/etc/passwd
จาก
2) กระบวนการแรกตั้งค่าประสิทธิผล = จริง = เข้าสู่ระบบเช่น
EuID=RuID=LuID
EgID=RgID=LgID
3) เด็กง่ามสืบทอดRuID
, EuID
, RgID
และEgID
(และอาจจะถูกบันทึกไว้และ supp) อย่างไร
หมายเหตุ: suidและnosuidของระบบไฟล์พื้นฐานอ็อพชัน mountก็มีผลเช่นกัน
4a) หาก s U ID ที่ใช้ชุดEuID
นั้นEuID
สามารถเปลี่ยนแปลงได้ชั่วคราว (เช่นปรับลดลงจากราก) แต่แรกเป็นค่าเดิมจะถูกบันทึกไว้ในOuID
เพื่อที่จะสามารถเรียกคืนในภายหลังได้ถ้าต้องการ
4b) หาก sกรัมID ที่ใช้ชุดEgID
นั้นEgID
สามารถเปลี่ยนแปลงได้ชั่วคราว (เช่นปรับลดลงจากราก) แต่แรกเป็นค่าเดิมจะถูกบันทึกไว้ในOgID
เพื่อที่จะสามารถเรียกคืนในภายหลังได้ถ้าต้องการ
เมื่อสร้างไฟล์:
File's new id's are set from effective id's: FuID=EuID and FgID=EgID
(Permissions are set from umask.)
วิธีเปิดอ่าน
If FuID = EuID and user-read bit is set, or
If FgID = EgID and group-read bit is set, or
If FgID = +gID1 and group-read bit is set, or
If FgID = +gID2 and group-read bit is set, ...
then allow reading.
วิธีเปิดสำหรับการเขียน:
(Same as above but write bit set to allow writing.)
วิธีเปิดเพื่อดำเนินการ:
(Same as above but execute bit set to allow execution.)
เมื่อต้องการส่งข้อความ:
Use RuID and RgID. (Not EuID or EgID). *(Not sure where I read this.)*
อ้างอิง: ข้อมูลประจำตัวของมนุษย์
พิเศษ:นี่คือยูทิลิตี้สำหรับพิมพ์ไฟล์ / etc / group ของคุณ:
cat /etc/group | sort -t: -k3n | awk -F ':' \
'BEGIN{printf "\n%-20s %-3s %-8s %s", \
"Group name","pw", "Group ID ", "User list"}\
BEGIN{printf "\n%-20s %-3s %-8s %s\n", \
"----------","--", "---------", "---------"} \
{ printf "%-20s %-3s %8d %s\n", $1, $2, $3, $4 }'