1. 사용자 및 그룹 관리
1.1. 관련된 파일 및 디렉토리
- /etc/passwd
- id, 패스워드, uid, gid, 코멘트, 홈디렉토리, shell
- /etc/group
- id, 패스워드, gid, 사용자
- /etc/shadow
- id, 패스워드, 마지막으로 패스워드 수정한 날짜, 패스워드 최소 사용기간. 패스워드 최대 사용기간, 경고메세지 출력일, 유예기간, 계정만료일
- /etc/default/useradd
- 기본그룹, 유예기간, 계정만료일, shell, spool생성여부
- /etc/login.defs
- 메일사서함위치, 패스워드최소사용일, 최대사용일, 경고메세지출력일, 패스워드 최소길이, uid시작 및 끝번호, gid시작 및 끝번호, 패스워드 암호화방식 sha512
- /etc/skel
- 사용자 계정 생성시 기본적으로 홈디렉토리에 복사하는 파일 및 디렉토리
2. 사용자 계정 생성
2.1. 사용자 계정 생성 시 자동 생성되는 디렉토리 및 파일
- /home/계정이름 디렉토리 생성됨. 사용자의 홈디렉토리
- /var/spool/mail/계정이름 파일생성. (메일 사서함 파일 = /var/mail/계정이름)
- 동일한 이름의 계정 생성 시 계정은 생성되지만 uid 충돌 문제 발생
3. /etc/passwd 파일 분석
3.1. 원본 a:x:1000:1000::/home/aa:/bin/bash
3.2. 분석 (컬럼별로 분석, 컬럼은 콜론으로 구분됨)
- a:
- ID
- x:
- password
- 1000:
- uid
- 사용자별로 고유하다.
- 기본적으로 1000번부터 생성된다.
- /etc/login.defs
- 1000:
- gid
- 그룹별로 고유하다.
- 사용자 계정을 생성하면 동일한 그룹이 자동으로 생성됨
- :
- 코멘트 설명
- /home/a:
- 사용자의 홈디렉토리
- /bin/bash:
- login 시 주어지는 Shell
4. useradd, usermod, userdel
4.1. 사용자 계정 생성 시 /etc/passwd의 Colume 값을 변경할 수 있는 옵션
- -u : uid 설정
- 기본적으로 1000번 부터 할당
- 마지막 uid 값 이후로 생성
- -g : gid 설정
- 기본적으로 uid와 동일한 gid 자동 생성
- 단 -g 옵션은 해당 그룹이 존재하여야 함
- -G : 추가 그룹 설정
- -c : coment 생성
- -d : 홈디렉토리 지정 (이때 해당 홈 디렉토리는 존재하는 디렉토리여야 한다.)
- -s : login Shell 지정
- 기본값 : /bin/bash
- shell : 명령어 해석기, App에서 전달하는 명령을 받아서 Kernel에 전달. shell이 없으면 login 불가
- 현재 shell 확인 : # echo $SHELL
- 모든 shell 확인 : # cat /etc/shells
- login shell 변경 : # chsh -s [로그인shell] [사용자명]
- login 불가능하도록 설정
- /bin/false : 로그인 불가 메세지 출력 안함
- /sbin/nologin : 로그인 불가 메세지 출력
※ aa 계정 생성
※ a, b, c 계정 생성
- /etc/passwd 파일에서 생성된 계정 정보 확인 가능 (마지막으로 생성된 계정의 uid에서 +1씩 차례대로 부여됨)
- /var/spool/mail 디렉토리 아래에 생성된 각 유저의 메일 사서함 파일 확인 가능
- /home 디렉토리 아래에 생성된 각 유저의 홈 디렉토리 확인 가능
※ b 계정 생성. uid는 2000으로 설정
※ c 계정 생성. gid는 3000
- group이 없을 경우 그룹 먼저 생성하기
※ d 계정 생성. uid는 3001, gid는 3000, 추가그룹 2000, 코멘트 admin
※ f 계정 생성. 코멘트는 test, 쉘은 로그인 불가로 설정하며 메세지는 출력하지 않음. 홈디렉토리는 /home_1 아래에 생성
※ 루트 계정의 쉘을 본쉘로 변경
4.2. usermod ( 옵션은 useradd와 동일)
- 홈디렉토리 변경 시 내부 컨텐츠 이동을 위해서는 -m 옵션 추가
- ex) # usermod -d /home_1/a -m a
※ test1 계정의 gid를 2000, 코멘트를 test123, 홈 디렉토리를 /home/test1 로 변경
- nologin 쉘로 지정되어 있어 로그인을 할 수 없으며, 메세지가 출력된다.
- 홈 디렉토리 변경 시 -m 옵션을 주어야 아래에 있는 데이터들도 이동된다.
4.3. userdel
- 사용자 계정 삭제
- 사용자 계정 삭제 시 유의할 점
- -r 옵션을 반드시 추가해서 삭제해야 한다.
- 계정 생성 시 생성되는 파일/디렉토리
- 홈디렉토리 생성 /home/계정명
- 메일 사서함 파일 생성 /var/mail/계정명 and /var/spool/mail/계정명 (동일한 파일임)
- -r 옵션 없이 삭제 시 위의 두 개의 디렉토리 및 파일이 그대로 남는다.
- 동일한 계정 생성 시 uid 충돌 문제 발생. 해당 계정 -r 삭제해도 디렉토리 및 파일 존재 error
- 해결책
- 사용자 홈 디렉토리와 메일풀 디렉토리를 삭제한다.
- ex ) # rm -rf /home/계정명
- # rm -rf /var/spool/mail/계정명
※ aa 계정 삭제 (-r 옵션)
- -r 옵션을 주어 삭제할 경우 사용자의 홈디렉토리와 메일사서함파일이 함께 삭제되는 것을 확인할 수 있다.
※ c 계정 삭제 (-r 옵션 주지 않음)
- -r 옵션을 주지 않을 경우 홈 디렉토리와 메일 사서함 파일이 그대로 남아 있는 것을 볼 수 있다.
- 이때는 수동으로 해당 파일 및 디렉토리를 삭제해준다.
※ 홈 디렉토리와 메일 사서함 파일 명령어로 삭제
※ -r 옵션을 주지 않고 b 계정 삭제 후, 다시 b 계정을 생성
- -r 옵션을 주지 않고 b 계정을 삭제하여 b 계정의 홈디렉토리와 메일파일이 남아있는 상태
- 삭제한 b 계정과 uid 값 다르게 새로운 b 계정 생성
- 계정 생성 시 기존 b 계정의 파일/디렉토리가 남아있어 경고 메세지가 출력됨
- 새로 생성한 b 계정을 -r 옵션을 주어 삭제하면 소유자가 아니라는 메세지가 출력되며 홈디렉토리와 메일파일이 삭제되지 않음
- uid가 달라서 홈디렉토리와 메일파일이 삭제되지 않는다.
- 같은 계정명과 같은 uid를 가지도록 생성해 보았는데, 이 경우 정상적으로 삭제되는 것을 확인함
5. group 명령어
5.1. 그룹 생성
- groupadd -g [gid] [그룹명]
5.2. 그룹 삭제
- groupdel [그룹명]
5.3. 그룹에서 유저 삭제
- gpasswd -d [그룹에서 삭제할 유저명] [그룹명]
- 유저 삭제 시 해당 그룹에 다른 유저가 있을 경우 그룹 삭제가 안됨.
- 따라서 그룹에 들어가있는 다른 유저들 삭제 후에 유저를 삭제하거나, 유저를 이미 삭제했을 경우 그룹디렉토리를 삭제한다.
- 기본 그룹은 뺄 수 없음
문제 풀어보기
[문제 1] 사용자 test1 생성 uid 3001(그룹명: tgroup1), gid 3002, 추가그룹 4001(그룹명: tgroup2), 코멘트는 testuser, 홈 디렉토리는 /home_3/ 아래에 생성 유저명으로 생성, 쉘은 배쉬쉘 사용하라.
[문제2] 사용자 test1의 그룹을 3001(test1), 홈디렉토리는 /home_4/test1로 변경하며 컨텐츠도 모두 이동,
코멘트는 test1user, 로그인 불가로 설정하며 메세지는 출력되지 않도록 변경하라
'Linux' 카테고리의 다른 글
08. CentOS7 : Disk관리/Partitioning/LVM (0) | 2022.03.01 |
---|---|
07. CentOS7 - 계정 생성 및 패스워드 관련 파일과 명령어 (0) | 2022.03.01 |
05. CentOS7 명령어 - vi 편집기 (0) | 2022.02.22 |
04. CentOS7 명령어 - 속성 정보 분석 및 파일 권한 (chmod) (0) | 2022.02.22 |
03. CentOS7 명령어 - touch, Archive, 압축(zip, gzip, bzip2, xz) (0) | 2022.02.22 |