/etc/passwd 파일의 형식

ID:x:UID:GID:comment:홈디렉토리:쉘종류


서버관리자의 주된 업무중의 한가지가 사용자의 계정관리입니다. 사용자의 계정을 생성해 주거나 불필요하게 된 계정을 삭제하는 등의 일은 다음과 같은 명령어로 할 수 있습니다.

시스템에서 한 사용자를 생성한다는 의미는 수용되는 시스템에서 사용자가 사용할 수 있는 모든 설정들을 해줘야 하며 단순히 ID와 패스워드 생성외에도 다음과 같은 작업을 해야합니다.


① /etc/passwd 파일에 사용자의 계정(ID 및 패스워드)생성


② /etc/group파일에 사용자의 그룹생성


③ /home에 사용자의 홈디렉토리 생성


④ 사용자의 로그인정보 및 환경설정


⑤ 사용자의 디렉토리 및 파일 소유권 변경 및 확인


⑥ DB 사용을 위한 환경설정 및 응용프로그램사용을 위한 환경설정


⑦ 기타 응용 소프트웨어 사용을 위한 설정등


리눅스에서 새로운 사용자의 계정을 생성할 때는 useradd나 adduser라는 명령어를 사용합니다. useradd로 사용자를 생성할때는 다소 복잡한 과장을 거쳐서 작업이 되는데 시스템관리자라면 어떤 작업들이 이루어 지는가를 확실히 알고 있어야 합니다. 우선 useradd로 사용자를 생성해 보도록 합시다.



이 작업이 정상적으로 종료가 되면 아무런 메시지없이 쉘프롬프트가 나오며 작업의 결과 /etc/passwd파일에 계정등록과 /home/testuser의 홈디렉토리의 생성됩니다. 다음은 위의 작업결과의 내용을 확인한 것입니다.

 

그럼, 어떻게 이런 작업이 시스템 내부적으로 이루어 지는가에 대해서 자세히 알아보도록 하겠습니다.

useradd로 사용자 생성명령을 내리면 /etc/login.defs의 조건이 적용되어 /etc/default/useradd에 있는 기본값으로 사용자가 생성되며 /etc/skel디렉토리에 있는 내용들이 기본설정파일로 사용자의 홈디렉토리로 복사되어 들어가게 된다는 것입니다. 이 사실을 분명히 이해해야 합니다. 따라서 이 파일들의 변경을 통하여 useradd로 생성되는 기본값을 변경할 수도 있습니다. useradd로 생성되는 기본값의 확인은 다음과 같이 합니다.

 

GROUP=100 : GID
HOME=/home : 홈디렉토리의 위치
INACTIVE=-1
EXPIRE= : 계정종료 일자지정
SHELL=/bin/bash : 사용할 쉘지정
SKEL=/etc/skel : 복사될 내용지정

위와 같이 "useradd -D"란 명령어를 입력하면 /etc/default/useradd의 내용을 그대로 보여줍니다. 특히 마지막 라인에 있는 "SKEL=/etc/skel"은 사용자의 환경을 위해 /home/ID로 생성된 사용자의 홈디렉토리에 복사되어 집니다. 그 내용은 다음과 같습니다.

또한 "useradd -D"의 내용을 변경할 수 있습니다.

이 예는 useradd로 새로 생성되는 사용자의 홈디렉토리의 위치를 변경했으며 사용하게 될 쉘(Shell)을 C쉘로 변경하였습니다. 이후부터 생성되는 사용자의 홈디렉토리는 /user/student/ID가 될 것이며 사용쉘 또한 /bin/csh가 될 것입니다.

참고로 /etc/login.defs의 내용을 살펴보도록 하겠습니다.

MAIL_DIR/var/spool/mail : 메일 스풀디렉토리 지정
PASS_MAX_DAYS 99999 : 패스워드의 변경없이 사용할 수 있는 최대일자.
PASS_MIN_DAYS 0 : 패스워드의 변경없이 사용할 수 있는 최소일자.
PASS_MIN_LEN 5 : 패스워드 최소바이트 수
PASS_WARN_AGE 7 UID_MIN 500 : 새로 생성되는 사용자의 UID 시작번호
UID_MAX 60000 : 최대로 생성될 수 있는 UID개수, 즉 최대수용 사용자수
GID_MIN 500 : 새로 생성되는 그룹의 GID 시작번호
GID_MAX 60000 : 최대로 생성될 수 있는 GID개수.
CREATE_HOME yes : 홈디렉토리를 자동으로 생성할 것인가의 여부

이상으로 사용자의 생성에 대해서 알아보았습니다. 다소 이해가 어렵더라도 확실히 이해하고 넘어가야 할 부분입니다. 서버관리의 시작이 사용자의 계정생성 및 환경설정에서부터 출발한다고 할 수 있다는 측면에서 이에대한 이해 또한 무엇보다 중요하기 때문입니다.



31. userdel (사용자의 계정삭제)

시스템에서 사용자의 계정과 정보를 삭제할 때는 지금까지 작업되어 있는 사용자의 모든정보와 환경들을 모두 삭제해야 한다는 의미인데 이는 단순히 ID와 패스워드 및 홈디렉토리를 삭제한다는 의미를 넘어서 데이터베이스를 사용한 경우에는 이에 대한 정보도 함께 삭제를 해야하며 응용소프트웨어, 예를 들어 삼바같은 소프트웨어를 사용했다면 ID와 패스워드가 생성이 되어 있을 것이므로 이에 대한 정보들도 모두 삭제를 해줘야 합니다.

따라서 시스템에서 새로운사용자 삭제하는 작업은 생성하는 작업보다도 더 신중함을 요하며 효율적인 시스템사용과 관리를 위하여 삭제되는 사용자의 정보를 꼼꼼이 챙겨서 삭제되는 사용자 계정과 관련된 모든 설정(예, mail, domain, application등)을 삭제해 줘야 합니다.

그리고 잊지 말아야 할 것은 삭제를 하기전에 반드시 백업을 받아 두어야 한다는 것입니다. 가입해지를 했던 사용자가 자기의 홈페이지등을 백업해두지 않아서 서버관리자에게 복구를 요청하는 것은 상업적인 목적의 서비스용 서버를 운용해 본 경험이 있으신 분들은 아마도 한번 이상의 경험이 있으리라 생각합니다.

삭제하기 전에 반드시 백업을 염두에 두기 바랍니다. 사용자는 삭제할 때에는 다음과 같은 작업들을 해야합니다.

① /etc/passwd 파일에 사용자의 계정(ID 및 패스워드)삭제


② /etc/group파일에 사용자의 그룹삭제


③ /home에 사용자의 홈디렉토리 삭제


④ /var/spool/mail에서 사용자의 메일삭제


⑤ mysql, mSQL, oracle등 DB등에서 사용자의 ID 및 패스워드 삭제


⑥ 기타 응용 프로그램에서 사용자의 정보 삭제 다음의 예를 보십시오.



/etc/passwd내의 사용자 정보(ID, Password등)가 삭제됩니다.

/etc/passwd내 정보와 /home/testuser이하의 홈디렉토리까지 삭제됩니다.

또한 다음과 같이 스풀디렉토리에 있는 사용자의 메일도 삭제를 해야합니다.


32. groupadd (그룹의 생성)

리눅스는 useradd로 사용자를 생성하면 ID와 같은 group ID를 생성하게 됩니다. /etc/group에는 그룹에 대한 전체적인 정보가 들어있는데 사용자가 생성되면서 ID와 같은 그룹ID가 생성되어 /etc/group파일에 추가등록됩니다.

이와는 달리 그룹ID만을 생성해야 할 필요가 있습니다. 즉 한 회사의 직원들을 과별로 그룹을 만들어 등록하려 할 때는 다음과 같이 그룹ID를 생성할 수 있습니다.

이 작업의 결과, 그룹ID를 확인하려면 /etc/group파일을 열어보면 맨 마지막에 다음과 같이 추가되어 있는 것을 볼 수 있습니다.

chongmu라는 그룹은 GID 5001로 생성이 되었으며 youngup이라는 그룹은 GID 5002로 생성이 되어있습니다.


33. groupdel  (그룹의 삭제)

groupdel이란 명령어로 다음과 같이 불필요한 그룹을 삭제할 수 있습니다.



결과 /etc/group내의 chongmu라는 그룹의 정보가 삭제됩니다. 삭제확인 또한 /etc/group파일 내에서 하실 수가 있습니다.

[출처] http://blog.daum.net/color275/60

신고

+ Recent posts

티스토리 툴바