그룹에 대한 개념이 전혀 안 잡히네요...ㅡㅡ;
아~ 미치겠습니다. 그룹에 대한 개념이 전혀 잡히지 않아요...ㅠ_ㅠ
물론 그룹이라는 것이 여러개의 계정을 하나의 공간에 집합시켜 놓
은 것이라고는 알고는 있는데...
리눅스에 말하는 그룹 개념이라는 것이 어떻게 되는 것인지 상당히
헷갈리네요,
질문1)
예를 들어 useradd 로 cd9cd9라는 새 계정을 하나 추가 시키면
이 계정의 GID 값이 500으로 잡히잖아요.
그렇다면 cd9cd9는 GID 500 그룹의 구성원이라는 뜻인걸로 알고
있는데, cat</etc/group |grep cd9cd9 를 실행하면
cd9cd9:x:500:cd9cd9
로 나오는 것이 아닌
cd9cd9:x:500:
와 같이 cd9cd9라는 그룹만 있고, cd9cd9가
cd9cd9라는 그룹의 구성으로 되어 있지 않네요...
그렇다면, cat</etc/passwd |grep cd9cd9 를 실행하면 나오는
cd9cd9:x:500:500::/home/cd9cd9:/bin/bash
cd9cd9의 계정 정보에서 GID에 해당하는 500이라는 것은 cd9cd9
계정이 GID값이 500이라는 그룹에 속해 있다는 뜻이 아닌, GID 500
이라는 그룹이 생성되어 있다라는 뜻인가요??
질문2)
이번에는 groupadd 명령어로 testgroup을 만들었어요, testgroup
의 GID를 확인해 보니 501로 나와 있구요.
그래서 이번에는 계정을 추가시킬 때
useradd cd9cd92 -G 501
명령을 주어서 cd9cd92 계정을 추가 시킨 다음에
cat</etc/passwd |grep cd9cd92
를 실행시켜 보니...
cd9cd92:x:501:502::/home/cd9cd92:/bin/bash
라고 나오네요...분명 계정을 추가 시킬 때 501이라는 그룹을 지정하여
계정을 추가시켰는데...이상하게도 GID 값이 502로 나오더라구요..
그래서 이번에
cat</etc/group |grep testgroup
명령을 실행하여 testgroup의 정보를 확인해 보니..
testgroup:x:501:cd9cd92
이라고 나오더라구요, 그리고 ...
cat</etc/group |grep cd9cd92
명령을 실행시켜보니...
cd9cd92:x:502:
라고 나오더라구요...
계정을 생성할 때 분명히 501이라는 그룹에 계정을 추가시켰는데,
계정 정보를 나타내는 /etc/passwd 파일에는 502라고 나와있는 건가요??
그리고, 별도로 그룹을 만들어 그 그룹에 계정을 추가시켰는데, 그룹명이
cd9cd92, GID 값이 502 인 그룹은 왜 만들어 진건가요??
질문3)
마지막으로 useradd -D 했을 그룹의 기본값 100, 즉...
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=2003-03-20
SHELL=/bin/bash
SKEL=/etc/skel
에서 나오는 GROUP=100 이라는 것은 무엇을 의미하는 건가요??
아~ 정말 그룹에 대한 개념 잡기가 어렵네요...혼자 독학하려다 보니..
답답합니다...
man 페이지를 봐도 영어로 나와서...도통 무슨 뜻인지도 모르겠구요..
좋은 답변 기다릴께요..(__)
/etc/passwd 에씌어진 GID 는 default group을 말합
/etc/passwd 에씌어진 GID 는 default group을 말합니다.
/etc/group 에 씌어지는 것은 그룹에 추가되는 선택적인것입니다.
group 이긴하지만, group을 "모음"이라 생각하지 마시고,
role 이라는 개념으로 생각하셔야합니다.
---
http://coolengineer.com
group에 대하여
님의 질문에 대하여 우선 2가지를 답변드리고 싶습니다. (명령의 세부 내용은 집에 가서 시험을 해 봐야 하기에 지금은 안되겠고요)
1. 우선 'cat'을 쓰실 때, 'cat < /etc/passwd'식으로 쓰시는 것은 잘못된(?) 버릇이 아닐까 합니다. 저라면 'cat /etc/passwd'로 쓰지요. 이유는 'cat'은 'cat filename ...' 식으로 명령을 쓸 수 있을 겁니다. 그럼 왜 '<'를 씁니까? 물론 써도 되지요. 그렇다고 올바른 사용법은 아닐 겁니다.
일반적으로 pipe나 redirection을 쓰는 것은 다른 명령의 output이나, 명령 중 stdin만 받게 되어 있는 경우에 쓰는 것입니다.
즉, 'cat'도 'man'을 봐야겠지만서도, 위에 쓴 것처럼 여러개의 파일을 'cat'할 수 있을 겁니다. 그럼 'cat file1 file2'의 경우에는 '<'로 어떻게 하실 건지요?
아주 별것도 아니지만, 작은 버릇 하나가 나중에는 ...
2. 'group'이란 것은 옛날 unix가 처음 나올 때 등장한 것입니다. 이것을 '모음'으로 해석하는 것은 곤란합니다. 지금은 'ACL (Access Control List)'라는 개념으로 확대/발전된 것입니다. (물론 지원하는 OS가 있고, 못하는 것도 있지만서도)
자, 이것의 개념은 이렇게 생각을 해 보세요. '어떤 일을 허용하는' 것을 각각의 user-id별로만 지정을 한다면, 상당히 괴로울 것입니다. 예로서, 어떤 파일(예, 출석부 파일)을 A라는 교사만 볼 수 있다면 (read) 다른 B라는 교사가 볼려면(read) 안됩니다. 이럴 경우에는 group이라는 개념이 있으면, '교사'라는 그룹을 만들어 '교사' 그룹에 'read'를 허용하면 되겠지요. 바로 이런 것을 위해서 만든 것으로 이해하시면 쉽습니다. 어떤 user-id의 집합체나, 또는 모아놓은 공간이 아닙니다.
그래서 /etc/group에는 그룹명을 등록하고 (옛날에는 vi로 수정이 가능했는데) /etc/passwd에서 참조하는 것이지요.
자, 그런데 이것도 user만 있는 경우보다는 상당히 편리하지만 그래도 불편한 겟 많습니다. 그래서 어떤 object에 대해서 각 개인별로 또는 그룹별로 권한을 지정하는 것이 ACL입니다.
우선 마치고요, 혹시 궁금한 것이나 보충 설명이 필요하시면, 메일 주세요. 그리고 위에 쓰신 명령 하나하나는 집에 가서 시험할 지도(??)
답변해 주신 두 분 정말로 감사드려요(__)
이렇게 답변해 주시는 분들이 있기에, 저같이 독학하는 사람이
조금이라도 궁금증이 해결이 되네요,
답변해 주신 내용을 천천히 살펴보면서 다시 한 번 개념을 잡
아야 겠네요,
감사드립니다.(__)
댓글 달기