본문 바로가기
컴퓨터 활용(한글, 오피스 등)/50_2.운영체제_리눅스

리눅스 사용자/그룹 계정 관리 명령어

by 3604 2023. 10. 9.
728x90

출처: 🐧 리눅스 사용자/그룹 계정 관리 명령어 💯 총정리 (tistory.com)

1. 리눅스 계정 종류
1.1 사용자 분류
1.2 계정 확인 명령어
계정 확인 (id / users / who)
계정 전체 확인
2. 루트 계정 관리
2.1 루트 계정 명령어
root 암호 설정
root 로그인
root 계정 관리 방안
3. 시스템 계정 관리
3.1 시스템 계정 추가 명령어
4. 사용자 계정 관리
4.1 계정 추가 명령어
사용자 추가 (useradd / adduser)
사용자 추가 옵션
사용자 생성 정보 기본 사항 확인 (-D)
홈 디렉터리 지정하기 (-m)
uid 지정하기 (-u)
그룹 지정하기 (-g)
2차 그룹 지정하기 (-G)
UID 와 그룹 동시 지정하기
사용자 설명 추가하기 (-c)
계정 만기일 설정하기 (-e)
패스워드 만기일 설정하기 (-f)
사용자의 셸 지정하기 (-D)
4.2 계정 패스워드 명령어
패스워드 설정 (passwd)
패스워드 유효기간 관리 (chage)
4.3 계정 전환 / 설정 / 삭제 명령어
계정 전환 (su)
계정 설정 (usremod)
계정 삭제 (userdel)
계정 삭제 (deluser)
5. 그룹 계정 관리
5.1. 그룹 계정 명령어
그룹 출력 (groups)
그룹 생성 (groupadd)
그룹 정보 변경 (groupmod)
그룹 삭제 (groupdel)
그룹 전반적인 관리 및 패스워드 변경 (gpasswd)
그룹 참여 (newgrp)
6. 사용자 계정 환경 설정 파일
6.1 환경 설정 파일 종류
/etc/passwd
/etc/shadow
/etc/default/useradd
/etc/login.defs
/etc/group
/etc/gshadow

 

리눅스 계정 종류

 

사용자 분류

  • 루트 계정 : 모든 권한을 가진 특별한 사용자
  • 시스템 계정 : 리눅스 설치시 기본으로 생성되는 계정
  • 사용자 계정 : 실제 리눅스 사용자를 위한 계정

리눅스에서는 사용자를 root(관리자)와 일반사용자로 구분한다.

각각 계정은 흔히 사용하는 ID가 아니라 번호로 부여하는 UID(User Identity)로 관리한다.

Tip

UID가 0번인 사용자는 슈퍼유저로 인식해서 관리자계정이 된다.
일반사용자 계정의 UID 범위는 /etc/login.defs 에 정의되어 있다.

root (Super User)계정은 UID값이 0으로 지정된 관리자계정이다.

여기서는 다른 계정을 생성하거나 권한을 부여하고 비밀번호를 바꿀 수 있다. 즉 모든 권한을 가진 계정이다. 만약 다른계정에 UID값을 0으로 변경한다면 관리자와 마찬가지로 모든 권한을 가질 수 있다. 

 

일반사용자(Normal user)는 관리자에게 권한을 부여받아 사용한다.

리눅스에서 파일을 생성 시 소유주의 권한을 가지는데 만약 일반유저라면 root 권한을 가진 파일을 실행하거나 볼 수 없다. 따라서 root가 파일의 권한을 부여해야만 일반관리자가 해당 파일을 열어볼 수 있다.

 

root와 일반사용자를 제외한 계정으로는 시스템계정이 있다.

필요에 의해 자동으로 생성되는 시스템계정은 bin, daemon, adm, lp,sync, shutdown, halt, mail 등 여러가지가 있으며 일반적으로 로그인은 불가능하다.


계정 확인 명령어

 

계정 확인 (id / users / who)

BASH
# 현재 사용자의 UID, GID, 그룹정보를 확인하는 명령어
$ idCopy

Info

UID(User ID) : 사용자 식별 번호
 - 슈퍼유저의 UID = 0
 - /etc/passwd 에서 확인 가능
 - 1 ~ 499 시스템을 제어하는 계정 -> 로그인 되지 않도록 생성하는 것이 원칙.
 - 500 ~ 60000 까지 일반 계정

GID(Group ID) : 그룹 식별 번호
 - 슈퍼유저의 GID = 0
 - /etc/passwd 와 /etc/group 에서 확인 가능
 - 리눅스는 그룹을 통해서 사용자를 묶을수있다.

BASH
# 현재 호스트에 로그인되어 있는 모든 사용자 출력
$ users 


# 모든 사용자 정보 자세히 출력 (터미널 종류, 로그인 시각 등 기본적으로 출력)
$ who [options] 
inpa     :0           2022-02-02 23:30 (:0)


# 현재 로그인한 사용자의 사용자명 출력
$ whoami 
$ id -un
$ logname


# 현재 로그인한 사용자가 어떤시스템에서 로그인했는지 어떤 프로세스를 실행하고있는지 출력
# -h , --no-header 컬럼의 헤더를 출력하지 않음
# -s, --short 정보를 간략히 출력
$ w [option] [user]
23:47:00 up 17 min,  1 user,  load average: 0.00, 0.00, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
inpa     :0       :0               23:30   ?xdm?  22.47s  0.00s /usr/lib/gdm3/g


# 프로세스를 종료하지 않고 계정만 로그아웃하여 이전에 사용중인 계정으로 돌아가는 명령어
$ logout
$ exitCopy

 

계정 전체 확인

BASH
# 전체 목록 확인
$ cat /etc/passwd

# 아이디만 잘라서 확인
$ cut -f1 -d: /etc/passwdCopy

루트 계정 관리

 

루트 계정 명령어

 

root 암호 설정

BASH
$ sudo passwd root
# 패스워드 입력후 로그인Copy

 

root 로그인

BASH
# 현재 계정에서 root권한을 이용하여 명령어를 실행할 때 사용하는 명령어
# sudo뜻 : superuser do
$ sudo


# 로그아웃을 하지 않고 다른 사용자의 계정으로 전환 (계정명 미입력이면 root로 로그인)
# su뜻 : switch user
$ su [계정명]Copy

 

root 계정 관리 방안

  • 시스템 초기 환경설정 시에만 이용하고 SSH를 통해 root 사용자 로그인이 되지 않도록 설정
  • 시스템상 root계정은 유일해야 함.
  • PAM을 통해 root 사용자로 로그인 할 수 없도록 설정
  • 환경변수 TIMOUT을 설정하여 자동 로그아웃 되도록 설정.
  • root계정으로 로그인하는것을 지양하고 필요할경우 sudo 명령을 사용.
BASH
#ssh 서비스의 root 로그인 막기

# sshd_config 파일을 root 권한으로 수정
$ sudo vi /etc/ssh/sshd_config

# ... 파일내용중 PermitRootLogin항목을 no로 설정.

# sshd 서비스 재시작
$ sudo systemctl restart sshdCopy

시스템 계정 관리

시스템과 일반(일반) 사용자 사이에는 실질적인 기술적 차이가 없다. 일반적으로 OS 및 새 패키지를 설치할 때 시스템 사용자가 자동 생성된다. 

  • 시스템의 특정 서비스에 대한 권한을 행사할 수 있는 계정
  • bin, daemon, adm, lp,sync, shutdown, halt, mail같은 계정들이 시스템 계정
  • /etc/passwd 파일에서 uid가 1~499 갖는 계정을 살펴봄.
    • 레드햇 계열은 100~499 데비안 계열은 100~999 범위
    • 시스템 계정은 보통 0~99의 범위를 가짐.

 

시스템 계정 추가 명령어

-r(--system) 옵션을 사용하여 시스템 사용자 계정을 만들 수 있다. 시스템 사용자는 만료 날짜 없이 생성된다.

해당 UID는 login.defs 파일에 지정된 시스템 사용자 ID 범위에서 선택되며, 일반 사용자에게 사용되는 범위와는 다르다

BASH
$ sudo useradd -r usernameCopy

사용자 계정 관리

 

계정 추가 명령어

 

사용자 추가 (useradd / adduser)

BASH
# 사용자를 생성한다
$ useradd testuserCopy

추가된 사용자는 /etc/passwd 파일에서 확인할 수 있다.

BASH
$ tail -1 /etc/passwd # passwd 파일 맨끝 라인만 출력하기 (맨끝이 최근에 추가된 유저 정보)
 testuser:x:1002:1002::/home/testuser:/bin/sh
 [사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정 설명]:[홈 디렉터리]:[셸]Copy

'/etc/passwd' 파일에는 콜론(:) 으로 구분되며 다음과 같은 정보를 포함하고 있다.

사용자명 비밀번호 uid gid 사용자 계정 설명 홈 디렉터리
testuser x 1002 1002   /home/testuser /bin/sh

이밖에 useradd 명령어와 adduser 명령어 둘다 유저 정보를 출력해주는데 이 둘의 차이를 알고 싶다면 아래 포스팅을 참고하길 바란다.

 inpa.tistory.com
useradd와 adduser의 차이 useradd로 계정 생성하면 발생하는 현상 useradd 로 test라는 사용자를 생성하고 비밀번호까지 정상적으로 지정해 주었다. $ sudo useradd test $ sudo passwd 123123 그런데 이상하게..

 

사용자 추가 옵션

BASH
$ useradd [옵션] [사용자명]Copy
옵 션 설 명
-d, --home 홈디렉터리 지정.
-D, --default 사용자 생성시 사용하는 기본값을 보거나 설정
-e, --expiredate YYYY-MM-DD 형식으로 계정의 만기일 지정
-f. --inactive 패스워드 만료일 이후 유효기간을 설정
1이상의 숫자이면 해당일수만큼 패스워드 유효.
0이면 만료되면 바로 잠김.-1이면 해당기능을 사용하지 않음.
-g, --gid GROUP 사용자 그룹설정.
설정하지 않으면 사용자 이름과 동일한 그룹에 설정.
-G, --groups 기본 그룹이외에 추가로 그룹을 생성할때
-k, --skel SKEL_DIR -m 옵션을 통해 홈 디렉터리 생성할때 복사할 기본파일을 지정할때 사용
-m, --create-home 홈 디렉터리를 지정할 떄 사용하고 디렉터리가 없으면 생성
-k 옵션과 같이 사용해서 홈디렉터리 생성시 복사할 기본 파일경로도 지정
-M 홈디렉터리를 생성하지 않음
-N, --no-user-group 사용자와 동일한 이름으로 그룹을 생성하지 않음.
-p, --password 평문이 아닌 암호화된 패스워드를 설정
-r, --system 시스템 계정을 생성
-s, --shell 사용자가 사용할 셸을 지정
-u, --uid 사용자 유일한 UID값 설정

 

사용자 생성 정보 기본 사항 확인 (-D)

신규 사용자를 추가할 때 반영되는 기본 사항들을 확인하는 명령어이다.

/etc/default/useradd 파일의 내용을 참고하며, 이 파일의 내용을 그대로 보여준다고 생각하면 된다.

BASH
# 생성시 기본옵션을 열람
$ sudo useradd -D
 GROUP=100
 HOME=/home
 INACTIVE=-1
 EXPIRE=
 SHELL=/bin/sh
 SKEL=/etc/skel
 CREATE_MAIL_SPOOL=noCopy

 

홈 디렉터리 지정하기 (-m)

사용자의 홈 디렉터리를 지정하는 옵션이다. 중간 경로가 있을 경우에는 미리 생성해 줘야 한다.

별도로 지정하지 않으면 /etc/default/useradd의 'HOME' 변수에 지정된 디렉터리에 '사용자명'으로 생성된다.

[-m] 옵션을 함께 사용하면, 디렉터리를 동시에 생성할 수 있다.

BASH
# 사용자 홈 디렉토리를 /home/testuser으로 자동 생성
$ useradd -m testuser

# 기본적으로 useradd는 /home에 사용자의 홈 디렉토리를 생성. 
# 사용자의 홈 디렉토리를 다른 위치에 작성하려면 d(--home) 옵션을 사용.
$ useradd -m -d /home/color/testuser testuserCopy

 

uid 지정하기 (-u)

사용자의 uid를 설정하는 옵션이다. 별도의 옵션을 지정하지 않을 경우, uid는 자동 발번되어 추가된다.

BASH
# 특정 UID를 가진 사용자를 생성
$ useradd -u 999 testuser
$ useradd -u [UID숫자] [유저명]

#사용자의 UID를 확인
$ id -u testuserCopy

Tip

gid가 'group id'의 약자라면, uid는 'user id'의 약자이다. 사용자의 필요에 따라 특정 uid를 지정하여 생성할 수도 있다. 단, 다른 사용자가 이미 사용 중인 uid는 지정할 수 없다.

 

그룹 지정하기 (-g)

사용자가 소속될 그룹을 지정하는 옵션이다. 옵션을 생략할 경우, 아이디와 동일한 그룹에 포함시킨다.

옵션을 사용하여 gid를 지정하는 경우, 해당 gid는 반드시 생성되어 있는 것이어야만 한다.

BASH
# 그룹을 지정하여 사용자를 생성. 단, 그룹은 미리 생성되어 있어야 함.
$ useradd -g groupname testuser
$ useradd -g [그룹명] [유저명]Copy

리눅스 사용자는 하나 이상의 그룹에 속하게 되어 있다. 그 그룹은 계정이 생성될 때 '사용자명'으로 생성되는데, 이와 동시 그룹의 고유 id인 'gid(group id)'도 발번된다.

그룹명과 gid는 /etc/group 파일을 보면 확인할 수 있다. 이 파일도 /etc/passwd 파일처럼 여러 개의 필드가 '콜론(:)'으로 구분되어 있는데, 여기서 첫 번째 필드가 그룹명이고, 세 번째 필드가 gid이다.

BASH
$ tail -3 /etc/group
 [그룹명]:[패스워드]:[GID]:[멤버목록]
 yhjeong:x:1000:
 sambashare:x:126:yhjeong
 testuser:x:1001:
 # 'testuser' 그룹의 gid는 1001번Copy

이 상태에서 신규 사용자 계정 'testuser2'를 별도의 옵션을 지정하지 않고 추가해본다. /etc/passwd 파일에서 testuser2 계정의 내용을 확인해보면, gid가 이전에 생성된 1001번 이후의 번호 1002번이 되어있으며

BASH
$ adduser testuser2

$ cat /etc/passwd | grep testuser2
 testuser2:x:1002:1002::/home/testuser2:/bin/sh
 [사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정]:[설명]:[홈 디렉터리]:[셸]Copy

/etc/group 파일에서 gid가 1002번인 그룹의 이름은 'testuser2'라는 것을 확인할 수 있다.

BASH
$ cat /etc/group | grep 1002
 testuser2:x:1002:
 [그룹명]:[패스워드]:[GID]:[멤버목록]Copy

이미 존재하는 그룹에 신규 사용자 계정을 추가해야 하는 상황도 발생할 수 있다. 이럴 때는 '-g gid' 옵션을 추가하여 사용자 생성도 가능하다.

예를 들어, 'testuser3' 계정을 생성하되, 별도의 신규 그룹을 생성하지 않고 그룹명 'testuser2'인 '1002(gid)'에 추가하는 명령어를 실행해본다.

BASH
# testuser3을 생성하되 그룹은 1002로 설정
$ useradd -g 1002 testuser3Copy

명령 실행 결과, 'testuser3'의 gid가 '1002'로 설정되어 있음을 확인할 수 있다.

BASH
$ cat /etc/passwd | grep user5
 testuser3:x:1003:1002::/home/testuser3:/bin/sh
 [사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정 설명]:[홈 디렉터리]:[셸]Copy

 

2차 그룹 지정하기 (-G)

사용자가 소속될 2차 그룹을 지정하는 옵션이다.

[-g] 옵션과 마찬가지로, 해당 gid는 이미 생성되어 있는 것이어야만 한다.

BASH
# 여러 그룹 할당
$ useradd -g color -G wheel,developers testuser
$ useradd -g [그룹명] -G [그룹1,그룹2] [유저명]

# 사용자의 GID를 확인
$ id -gn testuser

# 사용자 그룹 전체 확인
$ id testuser
 uid=1002(username) gid=100(users) groups=100(users),10(wheel),993(docker)Copy

사용자는 여러 개의 그룹에 동시에 속할 수도 있다. '[-G]' 옵션을 사용하면 사용자가 기본적으로 속한 그룹 외, 다른 그룹에도 동시에 속하게 할 수 있다.

'testuser4'의 기본 그룹(1차 그룹)을 '1002'로, 2차 그룹을 '1001'번으로 지정하여 계정을 생성해본다.

BASH
$ useradd -g 1002 -G 1001 testuser4Copy

계정 생성 후 /etc/passwd 파일을 살펴보면, 기본 그룹은 '1002'로 추가되었음을 확인할 수 있다.

BASH
$ cat /etc/passwd | grep testuser4
 testuser4:x:1004:1002::/home/testuser4:/bin/sh
 [사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정 설명]:[홈 디렉터리]:[셸]Copy

반면, 2차 그룹은 /etc/group 파일의 마지막 필드에서 확인할 수 있는데,

이 필드에서는 해당 그룹 id를 2차 그룹으로 지정한 사용자 리스트를 보여준다.

BASH
$ cat /etc/group | grep testuser4
 testuser:x:1001:testuser3 # GID 1001을 가진 testuser라는 그룹에 testuser3이라는 유저가 속해있다
 [그룹명]:[패스워드]:[GID]:[멤버목록]Copy

그룹 여러개에 각각 사용자가 속해있다면 이런식으로 출력된다. /etc/group 에 있는 inpa사용자의 그룹속함 정보와 명령어 $ id 로 출력되는 그룹정보가 일치함을 알 수 있다.

 

UID  그룹 동시 지정하기

BASH
# UID와 그룹을 지정하여 사용자를 생성. 단, color 그룹은 미리 생성되어 있어야 함.
$ useradd -u 999 -g color testuser
$ useradd -u [UID숫자] -g [그룹명] [유저명]Copy

 

사용자 설명 추가하기 (-c)

'comment'의 이니셜로, 사용자에 대한 설명을 추가하는 옵션이다. 띄어쓰기가 필요할 경우, 따옴표('')로 묶어준다.

BASH
# 사용자 이름 이름을 사용자 이름으로 만들고 텍스트 문자열로 사용자 계정 테스트를 주석으로 사용
# -c(--comment) 옵션: 새 사용자에 대한 간단한 설명을 추가
$ useradd -c "Test User Account" testuser

$ grep username /etc/passwd
 username:x :1001:1001:Test User Account:/home/testuser:/bin/shCopy

 

계정 만기일 설정하기 (-e)

계정의 만기일을 설정한다. 만기일 형식은 반드시 'YYYY-MM-DD'로 설정해야 한다.

BASH
# 사용자 계정의 만료일을 지정하면서 생성
# 날짜는 YYYY-MM-DD 형식으로 지정
$ useradd -e 2019-12-25 testuser

# 사용자 계정 만료 날짜를 확인
$ sudo chage -l testuser
 Last password change					: Dec 11, 2018
 Password expires					: never
 Password inactive					: never
 Account expires						: Jan 22, 2019
 Minimum number of days between password change		: 0
 Maximum number of days between password change		: 99999
 Number of days of warning before password expires	: 7Copy

 

패스워드 만기일 설정하기 (-f)

'[-f]' 옵션을 사용하면 패스워드 만기일을 날짜 수로 지정할 수 있다.

BASH
$ useradd -f [날짜 수]Copy

예를 들어, 'user10' 계정을 생성하되, 패스워드를 3일 이내 만기 시켜야 할 경우 다음과 같이 명령어를 입력하면 된다.

결과는 '/etc/shadow'의 7번째 필드를 확인하면 된다.

BASH
$ useradd -f 3 user10

$ cat /etc/shadow | grep user10
 user10:!:18369:0:99999:7:3::
 [사용자명]:[패스워드]:[마지막 변경일]: [패스워드] [최소사용일]:[최대사용일]:[만료경고일]:[유예기간]:[만료일]Copy

 

사용자의  지정하기 (-D)

사용자의 셸을 지정하는 옵션이다. 옵션을 지정하지 않으면, '/etc/default/useradd' 파일의 기본 설정을 따른다.

BASH
# 기본 로그인 셸을 /bin/sh에서 /bin/bash로 변경
$ sudo useradd -D -s /bin/bash

# 기본 셸 값이 변경되었는지 확인
$ sudo useradd -D | grep -i shell
 SHELL=/bin/bashCopy

일명 '명령어 해석기'라는 셸을 사용자별로 지정하는 옵션이다.

리눅스는 기본적으로 'bash' 셸을 사용하는데, 이 외에도 다양한 셸이 존재한다. 현재 사용하는 리눅스에서 사용 가능한 셸의 목록을 확인하려면 '/etc/shells' 파일을 확인해보면 된다.

BASH
$ cat /etc/shells 
 /etc/shells: valid login shells
 /bin/sh
 /bin/bash
 /bin/rbash
 /bin/dashCopy

계정 패스워드 명령어

 

패스워드 설정 (passwd)

BASH
$ passwd [option][username]

 Changing password for user username.
 New password:
 Retype new password:
 passwd: all authentication tokens updated successfully.Copy
옵 션 설 명
-d, --delete 패스워드 삭제. 비밀번호없이 로그인 가능
-e, --expire 사용자의 패스워드를 만료
-i, --inactive 패스워드 만료후 비활성화전 유예기간 일 지정
-l, --lock 사용자 패스워드에 락 걸어 로그인 막음
-n, --mindays 비밀번호 변경할수 있을때까지 유지해야할 일수 설정
-q, --quiet 화면 출력없이 명령을 수행
-S, --status 사용자의 로그임명, 패스워드 상태, 설정여부, 마지막으로 변경한 날짜, 패스워드 변경까지 남은 기간 등 다양한 정보 출력
-u, --unlock 락을 걸었던 패스워드를 다시 해제
-w, --warndays 패스워드 만료전 경고날짜 지정
-x, --maxdays 최대사용기간 설정
BASH
# 사용자 패스워드 설정
$ sudo passwd testuser

# 현재사용자 패스워드 변경
$ passwd

# 지정한 사용자 패드워드 만료
$ sudo passwd -e testuser

# 지정한 사용자의 패스워드 상태를 출력
$ sudo passwd -S testuser

# 지정한 사용자 패스워드 락
$ sudo passwd -l testuser

# 지정한 사용자 패스워드 삭제
$ sudo passwd -d testuser

# 패스워드 변경후 7일간 변경 불가능, 365일간 사용할수 있고 5일전부터 패스워드 변경 경고. 만료후 10일 유예기간
$ sudo passwd -n 7 -x 365 -w 5 -i 10 testuserCopy

 

패스워드 유효기간 관리 (chage)

BASH
$ chage [options] usernameCopy
옵 션 설 명
-d,--lastday 패스워드를 변경해야 할 날짜수 지정
-E,--expiredate 계정이 만료되는 날 설정
-I,--inactive 계정만료후 패스워드가 비활성화될때까지 유예기간을 설정
-l,--list 계정의 매스워드 만료 정보 보여줌
-m,--mindays 패스워드 변경할 때 최소 날짜를 지정
-M,--maxdays 패스워드 변경할 때 최대날짜 지정
-W,--warndays 패스워드 만료에 대한 경고 메시지를 보여줄 날짜를 지정
BASH
# 만료정보 출력
$ sudo chage -l test

# test 계정의 패스워드 최소 사용날짜 7일, 최대 사용날짜 365일 5일전부터 경고메시지. 만료후 3일 유예기간
$ sudo chage -m 7 -M 365 -W 5 -I 3 test

# test 계정의 만료일 지정.
$ sudo chage -E 2019-12-24 test

# test계정의 패스워드 변경일 10000 설정
$ sudo chage -d 10000 testCopy

계정 전환 / 설정 / 삭제 명령어

 

계정 전환 (su)

  • su : switch user 약자
BASH
# 다른 사용자의 권한으로 실행
$ su [options] usernameCopy
옵 션 설 명
-c, --command 지정한 사용자로 셸이 실행할 명령어 지정
-, -l, --login 사용자가 직접 로그인했을때 동일하게 환경변수가 설정되고 홈 디렉토리로 이동
-s, --shell 명시된 셸 사용
BASH
# root 사용자 전환.
$ su -

# 사용자 전환을 하지않고 일시적으로 지정명령 실행
$ su root -c "vi /etc/passwd"Copy

 

계정 설정 (usremod)

사용자 셸, 홈디렉토리, 그룹, UID, GID 사용자 설정 변경. useradd 명렁어의 설정 대부분 적용가능.

BASH
$ usermod [options] usernameCopy
옵 션 설 명
-a,--append 사용자에 그룹 추가하기위해 -G 옵션과 사용
-c,--comment 사용자에 간단한 정보 입력
-l,--login 로그인 이름 변경
-L, --lock 패스워드에 락
-U,--unlock 패스워드 락 해제
BASH
# 사용자 홈 디렉터리 변경. -m 옵션까지 입력하면 내용도 복사
$ usermod -d /home/whiteblue testuser

# 사용자 그룹을 photo 사용자 그룹으로 변경
$ usermod -g photo testuserCopy

 

계정 삭제 (userdel)

BASH
$ userdel [option] username

# 계정삭제. 단, 홈디렉토리 파일은 남아있음.
$ userdel testuser

# -r 옵션을 통해 사용자 계정 홈 디렉토리도 삭제
$ userdel -r testuser

# -f옵션으로 강제 삭제
$ userdel -f testuserCopy

 

계정 삭제 (deluser)

BASH
# userdel이랑 같지만 옵션명이 다른것 뿐이다.
$ deluser [userName]

# 홈 디렉토리 삭제
$ deluser --remove [userName]

# 홈 디렉토리, 계정명으로된 모든 파일 삭제
$ deluser --remove-all-files [userName]Copy
BASH
# home이나 passwd에 유저 디렉토리, 정보를 삭제해서 계정 삭제하는 방법도 존재한다.

# 홈 디렉토리 및 하위폴더 삭제
$sudo rm -r /home/[userName]

# /etc/passwd 에서 해당 내용 삭제
$sudo vi /etc/passwdCopy
 inpa.tistory.com
userdel와 deluser 차이 결론적으로 말하자면, 옵션 문법 적인 차이 외에 둘이 차이가 없다. $ userdel $sudo userdel [userName] # 옵션 # -r : 홈 디렉토리 삭제 $ deluser $sudo deluser [userName] # 옵션 #..

그룹 계정 관리

그룹이란 사용자를 묶어 관리 가능하게 하는 매커니즘 이다. 그룹을 통해 각 그룹에 보안설정, 접근설정, 권한등을 일괄 적용 관리할 수 있다.

모든 사용자는 UID 그룹에 대한 식별자인 GID 가진다. 사용자 생성시 기본으로 사용자 이름과 동일한 그룹을 생성하여 포함시킨다.

 

그룹 계정 명령어

 

그룹 출력 (groups)

BASH
# 특정 사용자나 현재 로그인한 사용자가 속한 그룹을 표시
$ groups 
# uid=1000(inpa) gid=1000(inpa) 그룹들=1000(inpa),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),132(lxd),133(sambashare)Copy

 

그룹 생성 (groupadd)

BASH
$ groupadd [options] groupnameCopy
옵션 설명
-f, --force 그룹을 생성할때 이미 생성되어 있더라도 성공으로 간주
-r, --system 시스템 그룹을 생성
-g,--gid GID 그룹의 양수의 GID를 지정
-o,--non-unique 그룹을 생성할때 중복된 GID값 허용
BASH
# GID 지정하여 그룹을 생성
$ sudo groupadd -g 550 groupnameCopy

 

그룹 정보 변경 (groupmod)

옵션  설명
-g, --gid 변경할 GID 설정
-o 옵션을 주지않는다면 유일한 정수값
-n, --new-name 그룹의 이름 변경
BASH
# colors 그룹 이름을 newcolors 그룹으로 변경 
$ sudo groupmod -n newcolors colors

# GID 567로 변경
$ sudo groupmod -g 567 colorsCopy

그룹관련 설정파일인 /etc/group , /etc/gshadow , /etc/passwd 에서 그룹관련 속성 변경할 수 있다.

 

그룹 삭제 (groupdel)

그룹을 삭제하기 위해선 주 그룹에 존재하는 사용자가 없어야 한다. (사용자를 삭제한 후 그룹을 삭제할 수 있음.)

또한 파일중 그룹이 설정된 파일이 없어야 한다.

BASH
$ sudo groupdel groupnameCopy

 

그룹 전반적인 관리  패스워드 변경 (gpasswd)

그룹 패스워드 변경 뿐만 아니라 앞에서 본 그룹 추가/삭제 등 전반적인 그룹 관리 마스터 명령어이다.

BASH
$ gpasswd [options] groupnameCopy
옵션  설명
-a, --add user 그룹에 사용자를 추가
-d, --delete user 구룹에 사용자 삭제
-r, --remove-password group 그룹의 패스워드 제거
그룹멤버는 newgrp 명령어를 사용해 그룹에 참가
-R, --restrict group 그룹 접근 제한
패스워드 가진 그룹멤버만 newgrp통해 그룹에 참가
-A, --administrator user .. 관리자로 지정할 사용자 설정
-M, --memvers user.. 그룹멤버 설정

그룹의 패스워드 정보는 /etc/group 과 /etc/gshadow 에 저장되어 있다.

 

그룹 참여 (newgrp)

만일 참여하려는 그룹에 그룹패스워드가 존재하는데, 사용자가 명령어를 통해 그룹에 참여하려면 패스워드 입력 필요하다.

BASH
# 현재 그룹대신 groupname 그룹으로 전환
$ newgrp groupnameCopy

사용자 계정 환경 설정 파일

사용자 계정과 그룹정보는 /etc 디렉터리 이하에 존재한다.

구분 파일명 설명
계정 및 그룹 설정파일 /etc/passwd 사용자 계정의 아이디, 그룹정보 등 계정정보
/etc/shadow 암호화된 패스워드 및 정책 설정 정보
/etc/group 사용자 그룹의 기본정보
/etc/gshadow 사용자 그룹의 암호화된 패스워드 정보
계정 환경설정 파일 /etc/default/useradd useradd명령을 사용할 때 기본 사용자 부가정보
/etc/login.defs 로그인 수행시 기본설정
/etc/skel 홈 디렉터리 생성시 기본으로 제공할 파일

 

환경 설정 파일 종류

 

/etc/passwd

  • 로그인시 필요한 UID, GID, 홈디렉터리, 셸 등의 사용자 계정 정보를 포함.
  • 모든 사용자에게 읽기권한 가진 파일
  • 루트 사용자만 쓰기 허용
BASH
$ cat /etc/passwd
 userid:x:14:50:FTP This is test User:/var/userid:/sbin/nologin
 [사용자명]:[비밀번호]:[UID]:[GID] [사용자설명]:[홈디렉토리]:[쉘경로]

# 사용자 명 : 로그인 할때 사용하는 사용자이름
# 비밀번호 : x는 암호화된 패스워드를 보관하고있다는 의미
# UID : 사용자 번호
# GID : /etc/group 파일에 보관된 주 그룹 ID번호
# 사용자 설명 : 사용자에대한 추가설명 코멘트 필드
# 홈 디렉터리 : 기본디렉터리로 절대경로로 설정
# 셸 : 셸의 위치를 절대 경로로 지정.Copy

 

/etc/shadow

  • 사용자 패스워드를 해시 알고리즘으로 암호화한 값과 패스워드와 연관된 여러 속성을 단고있는 파일
  • /etc/passwd 파일은 각 사용자들에 대한 암호 정보를 담고있음.
BASH
$ cat /etc/shadow
 francis: $fislf2R$R45trhertsdfs:18119:0:99999:7:  :  :
 [사용자명]:[패스워드]:[마지막 변경일]: [패스워드] [최소사용일]:[최대사용일]:[만료경고일]:[유예기간]:[만료일]Copy

 

/etc/default/useradd

  • 사용자 생성시 사용되는 기본 설정값이 저장된 환경설정 파일
  • useradd -D 로 내용확인 가능.

 

/etc/login.defs

  • 쉐도우 패스워드 스위트를 위한 읽기 전용 환경설정파일
    • 패스워드 최대 사용일 : PASS_MAX_DAYS
    • 패스워드 최소사용일 : PASS_MIN_DAYS
    • 패스워드 만료 경고일 : PASS_WARN_AGE 

 

/etc/group

  • 그룹에 속한 사용자를 관리하는 파일. 
  • 그룹에 여러 사용자가 속할 수 있음.
BASH
$ cat /etc/group | grep mail
 mail:x:12:mail,postfix
 [그룹명]:[패스워드]:[GID]:[멤버목록]Copy

 

/etc/gshadow

  • 그룹의 암호화된 비밀번호 정보를 포함.
  • 루트권한 사용자만 접근 가능
BASH
$ cat /etc/gshadow
 test:$65$ssafhasrjkg/sasldfjsadkf:test:francis
 [그룹명]:[패스워드]:[그룹관리자]:[멤버목록]Copy

 
 
728x90