Banyak jawaban bagus lainnya di sini, tetapi jika Anda masih bingung seperti saya, inilah pendekatan lain. Harap dicatat bahwa saya hanya seorang siswa dalam hal ini, bukan seorang master , jadi jawaban ini adalah pekerjaan yang sedang berjalan, dan belum dianggap sebagai jawaban yang solid, setidaknya belum. Pertimbangkan jawaban ini v0.2.
Grup itu sederhana dan kompleks pada saat bersamaan.
Kunci ID yang digunakan di bawah:
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.
Nama ID Pengguna dan Grup:
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
...
Bagaimana proses memperoleh ID:
1) Login mengautentikasi nama pengguna dan mengembalikan LuID
dan LgID
dari /etc/passwd
.
2) Proses pertama mengatur efektif = nyata = masuk, yaitu
EuID=RuID=LuID
EgID=RgID=LgID
3) anak Forked mewarisi RuID
, EuID
, RgID
, dan EgID
, (& mungkin disimpan & supp), namun,
Jika s u id bit (s) diatur pada file program baru untuk mengeksekusi, kemudian menetapkan efektif dari file:
EuID = FuID
Jika s g bit id (s) diatur pada file program baru untuk mengeksekusi, kemudian menetapkan efektif dari file:
EgID = FgID
Catatan: Opsi suid dan nosuid mount filesystem yang mendasarinya juga berlaku.
4a) Jika s u id digunakan untuk mengatur EuID
, maka EuID
dapat sementara diubah (misalnya diturunkan dari root), tetapi pertama-tama nilai aslinya disimpan OuID
sehingga dapat dikembalikan nanti jika diinginkan.
4b) Jika sg id digunakan untuk mengatur EgID
, maka EgID
dapat sementara diubah (misalnya diturunkan dari root), tetapi pertama-tama nilai aslinya disimpan OgID
sehingga dapat dikembalikan nanti jika diinginkan.
Saat file akan dibuat:
File's new id's are set from effective id's: FuID=EuID and FgID=EgID
(Permissions are set from umask.)
Untuk membuka untuk membaca:
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.
Untuk membuka untuk menulis:
(Same as above but write bit set to allow writing.)
Untuk membuka eksekusi:
(Same as above but execute bit set to allow execution.)
Ketika pesan perlu dikirim:
Use RuID and RgID. (Not EuID or EgID). *(Not sure where I read this.)*
Referensi: kredensial pria
Ekstra: Ini adalah utilitas untuk mencetak file / etc / group Anda dengan cantik:
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 }'