[linux] 사용자/그룹 관리

리눅스는 여러명의 사용자가 동시에 로그인하여 시스템을 사용할 수 있는 멀티유저 운영체제이다.
이러한 사용자들은 각각 계정을 가지고 시스템에 접근하게 된다.
그리고 이 사용자들을 묶어서 관리할 수 있는 그룹이라는 것이 있다.
모든 사용자는 하나의 그룹을 가진다.

사용자 관리

/etc/passwd : 사용자 정보가 담긴 파일

1
2
3
root:x:0:0:root:/root:/bin/bash

# 사용자명:패스워드:UID:GID:사용자정보:홈디렉토리:쉘
  1. 사용자명 : 로그인 시 사용하는 사용자명.
    • 네이밍 규칙 : 영문자 대소문자, 숫자, “-”, “_”, “.” 사용 가능, 보통 1~32자 사용
  2. 패스워드 : /etc/shadow 파일에 암호화되어 저장되어 있다.
  3. UID : 사용자 고유 ID
    • 일반 사용자는 1000~60000을 사용한다(/etc/login.defs에 명시)
      root 는 0으로 예약되어 있다.
  4. GID : 사용자가 속한 그룹 고유 ID
  5. 사용자정보 : 사용자에 대한 간단한 정보를 기입할 수 있다.
  6. 홈디렉토리 : 사용자 폴더. 로그인 시 최초 접속되는 폴더이기도 하다.
  7. 쉘 : 사용자가 사용하는 쉘 환경

사용자 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
> useradd [options] 사용자명 

# options
# -c [텍스트] : 사용자정보
# -m : 홈디렉토리 생성
# -M : 홈디렉토리 생성 안함
# -d [폴더] : 홈디렉토리 지정
# -N : 사용자 개인 그룹 생성하지 않음. default : 생성
# -u [UID] : UID 직접 지정
# -g [GID] : GID 직접 지정
# -s [Shell] : shell 지정

# 이 외에도 많은 옵션이 존재한다. useradd --help 를 활용한다.

생성 시 사용하는 default 값을 확인하고 바꿀 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
> useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

> useradd -D -b /test
> useradd -D
GROUP=100
HOME=/test #변경됨
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

# 위에 대한 설정파일은 /etc/default/useradd 이다

사용자 추가 시 홈 디렉토리에 생성되는 파일

1
2
3
4
5
6
7
8
9
10
11
12
> useradd user1 -m
> cd /home/user1
> ls -al
합계 32
drwxr-xr-x 2 user1 user1 4096 10월 29 16:23 .
drwxr-xr-x 4 root root 4096 10월 29 16:23 ..
-rw-r--r-- 1 user1 user1 220 9월 1 2015 .bash_logout
-rw-r--r-- 1 user1 user1 3771 9월 1 2015 .bashrc
-rw-r--r-- 1 user1 user1 655 6월 25 2016 .profile
-rw-r--r-- 1 user1 user1 8980 4월 20 2016 examples.desktop

# /etc/skel에 있는 파일을 복사해 사용한다.

사용자 수정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> usermod [options] 사용자명 

# options
# -c [텍스트] : 사용자정보 수정
# -d [폴더] : 홈디렉토리 변경
# -u [UID] : UID 변경
# -s [Shell] : shell 지정
# -L : 계정 락킹
# -U : 계정 언락킹

# -g [group] : 사용자 기본 그룹 변경
> usermod -g user2 user1
# user1의 기본 그룹을 user2로 변경

# -G [groups] : 사용자 그룹 추가,변경(제거). 기본 그룹은 영향을 받지 않는다.
> usermod -a -G group1,group2 user1
# user1에 group1,group2를 추가. -a 옵션은 기존그룹에 추가할지 안할지 여부이다.
> usermod -G group1 user1
# 그룹을 제거하는 방법. -a를 주지 않아 기존 그룹을 유지하지 않았다.

패스워드 변경

1
2
3
4
5
6
> passwd [options] 사용자명

# options
# -d : 패스워드 삭제
# -e : 패스워드 강제 만료
# -l, -u : 패스워드 락킹/언락킹. usermod에 있는 -L, -U 옵션을 쓰는것이 더 좋다고 한다..

사용자 삭제

1
2
3
4
5
userdel [options] 사용자명

# options
# -r : 사용자의 홈디렉토리, 메일박스, 임시디렉토리 까지 같이 삭제.
그룹은 기본적으로 속한 사용자가 없으면 자동 삭제된다

그룹 관리

/etc/group : 그룹 정보가 담긴 파일

1
2
3
sudo:x:27:user1,user2

# 그룹명:패스워드:GID:사용자리스트
  1. 그룹명 : 그룹의 이름이다
  2. 패스워드 : 그룹 패스워드
  3. GID : 그룹 고유 ID
  4. 사용자리스트 : 해당 그룹에 속한 사용자들의 리스트.
    생략되는 경우도 많기 때문에 비어있다고 그룹에 속한 사용자가 없다고 확신할 수 없다.

그룹 추가

1
2
3
4
> groupadd [options] 그룹명

# options
# -g [GID] : GID 지정

그룹 수정

1
2
3
4
> groupmod [options] 그룹명

# options
# -n [이름] : 그룹명 변경

그룹 삭제

1
> groupdel 그룹명