Buradaki diğer mükemmel cevaplar, ama hala benim gibi kafam karıştıysa, işte başka bir yaklaşım. Lütfen bu konunun sadece bir öğrencisi olduğumu, bir usta değil olduğumu , bu nedenle bu cevabın devam eden bir çalışma olduğunu ve en azından henüz katı bir cevap olarak değerlendirilmeyeceğini unutmayın. Bu cevabı v0.2 olarak düşünün.
Gruplar aynı anda basit ve karmaşıktır.
Aşağıda kullanılan kimliklerin anahtarı:
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.
Kullanıcı ve Grup Kimliği adları:
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
...
İşlemler nasıl kimlik kazanır:
1) Giriş kimlik doğrulamasını kullanıcı adı ve iadeler LuID
ve LgID
gelen /etc/passwd
.
2) İlk süreç etkili = real = login, yani
EuID=RuID=LuID
EgID=RgID=LgID
3) Çatallaşmış çocuk devralır RuID
, EuID
, RgID
, ve EgID
, (& muhtemelen kaydedilmiş ve ek), ancak,
S u id bit (ler) yürütülecek yeni programın dosyasına ayarlanmışsa, dosyadan etkin bir şekilde ayarlayın:
EUID = fuid
S g id bit (ler) yürütülecek yeni programın dosyasına ayarlanmışsa, dosyadan etkin bir şekilde ayarlayın:
Egid = FGIH'ların her biri
Not: Temel dosya sisteminin intihar ve nosuid mount seçenekleri de geçerlidir.
4a) eğer s u kimliği kullanıldı sete EuID
sonra, EuID
geçici olarak değiştirilebilir (örneğin) kökünden döndürüldüğünü, ancak ilk orijinal değeri kaydedilir mi OuID
istenirse daha sonra restore böylece.
4b) IF ler g id kullanıldı sete EgID
sonra, EgID
geçici olarak değiştirilebilir (örneğin) kökünden döndürüldüğünü, ancak ilk orijinal değeri kaydedilir mi OgID
istenirse daha sonra restore böylece.
Bir dosya oluşturulduğunda:
File's new id's are set from effective id's: FuID=EuID and FgID=EgID
(Permissions are set from umask.)
Okumak için açmak için:
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.
Yazmaya açmak için:
(Same as above but write bit set to allow writing.)
Yürütmeye açmak için:
(Same as above but execute bit set to allow execution.)
Bir mesajın gönderilmesi gerektiğinde:
Use RuID and RgID. (Not EuID or EgID). *(Not sure where I read this.)*
Kaynaklar: man kimlik bilgileri
Ekstra: İşte / etc / group dosyanızı güzel şekilde yazdırmanız için bir yardımcı program:
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 }'