여기에 다른 많은 훌륭한 답변이 있지만, 여전히 혼란 스럽다면 다른 접근법이 있습니다. 나는 마스터가 아닌이 물건의 학생 일 뿐이 므로이 답변은 진행중인 작업이며 적어도 아직은 확실한 답변으로 간주되지 않습니다. 이 답변 v0.2를 고려하십시오.
그룹은 동시에 간단하고 복잡합니다.
아래에 사용 된 ID 키 :
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
...
프로세스가 ID를 얻는 방법 :
1) 로그인은 사용자 이름을 인증 LuID
하고 LgID
에서를 반환합니다 /etc/passwd
.
2) 첫 번째 프로세스 는 유효 = 실제 = 로그인을 설정합니다.
EuID=RuID=LuID
EgID=RgID=LgID
3) 갈래 어린이 상속 RuID
, EuID
, RgID
,와 EgID
, (아마도 저장 및 좌약), 그러나,
참고 : 기본 파일 시스템의 suid 및 nosuid 마운트 옵션도 적용됩니다.
4A) 의 경우의 U 자 ID는 사용 된 세트 EuID
그리고, EuID
일시적으로 변경할 수있다 (예를 들면)의 뿌리에서 다운 그레이드를하지만, 처음 원래의 값으로 저장되어있어 OuID
필요한 경우에 복원 할 수 있도록.
4B) 만약 S g의 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.)*
참조 : man 자격 증명
추가 : / 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 }'