Nhiều câu trả lời xuất sắc khác ở đây, nhưng nếu bạn vẫn bối rối như tôi, thì đây là một cách tiếp cận khác. Xin lưu ý rằng tôi chỉ là một sinh viên của công cụ này, không phải là một bậc thầy , vì vậy câu trả lời này là một công việc đang tiến triển, và không được coi là một câu trả lời chắc chắn, ít nhất là chưa. Hãy xem xét câu trả lời này v0.2.
Các nhóm đơn giản và phức tạp cùng một lúc.
Khóa để ID được sử dụng dưới đây:
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.
Tên người dùng và nhóm 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
...
Cách các quy trình có được ID:
1) Đăng nhập xác thực tên người dùng và trả lại LuID
và LgID
từ /etc/passwd
.
2) Quá trình đầu tiên thiết lập hiệu quả = real = đăng nhập, tức là
EuID=RuID=LuID
EgID=RgID=LgID
3) trẻ em Forked kế thừa RuID
, EuID
, RgID
, và EgID
, (& có thể lưu & supp), tuy nhiên,
Nếu là u id bit (s) được thiết lập trên các tập tin của chương trình mới để thực hiện, sau đó thiết lập có hiệu lực từ file:
Ê-sai = FuID
Nếu s g id bit (s) được đặt trên tệp của chương trình mới để thực thi, thì thiết lập có hiệu lực từ tệp:
EgID = FgID
Lưu ý: Các tùy chọn gắn kết suid và nosuid của hệ thống tập tin cơ bản cũng được áp dụng.
4a) Nếu s u id đã được sử dụng để thiết lập EuID
, sau đó EuID
có thể được tạm thời thay đổi (ví dụ như hạ cấp từ gốc), nhưng trước tiên nó là giá trị ban đầu được lưu trong OuID
để nó có thể được phục hồi sau này nếu muốn.
4b) Nếu id g g được sử dụng để đặt EgID
, thì EgID
có thể tạm thời thay đổi (ví dụ: hạ cấp từ gốc), nhưng trước tiên, giá trị ban đầu của nó được lưu lại OgID
để có thể khôi phục lại sau nếu muốn.
Khi một tệp được tạo:
File's new id's are set from effective id's: FuID=EuID and FgID=EgID
(Permissions are set from umask.)
Để mở để đọc:
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.
Để mở để viết:
(Same as above but write bit set to allow writing.)
Để mở để thực thi:
(Same as above but execute bit set to allow execution.)
Khi một tin nhắn cần được gửi:
Use RuID and RgID. (Not EuID or EgID). *(Not sure where I read this.)*
Tài liệu tham khảo: thông tin người đàn ông
Bổ sung: Đây là một tiện ích để in đẹp tập tin / etc / nhóm của bạn:
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 }'