...
리눅스 계정 종류
사용자 분류
- 루트 계정 : 모든 권한을 가진 특별한 사용자
- 시스템 계정 : 리눅스 설치시 기본으로 생성되는 계정
- 사용자 계정 : 실제 리눅스 사용자를 위한 계정
리눅스에서는 사용자를 root(관리자)와 일반사용자로 구분한다.
각각 계정은 흔히 사용하는 ID가 아니라 번호로 부여하는 UID(User Identity)로 관리한다.
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)
# 현재 사용자의 UID, GID, 그룹정보를 확인하는 명령어
$ id
UID(User ID) : 사용자 식별 번호
- 슈퍼유저의 UID = 0
- /etc/passwd 에서 확인 가능
- 1 ~ 499 시스템을 제어하는 계정 -> 로그인 되지 않도록 생성하는 것이 원칙.
- 500 ~ 60000 까지 일반 계정
GID(Group ID) : 그룹 식별 번호
- 슈퍼유저의 GID = 0
- /etc/passwd 와 /etc/group 에서 확인 가능
- 리눅스는 그룹을 통해서 사용자를 묶을수있다.
# 현재 호스트에 로그인되어 있는 모든 사용자 출력
$ 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
$ exit
계정 전체 확인
# 전체 목록 확인
$ cat /etc/passwd
# 아이디만 잘라서 확인
$ cut -f1 -d: /etc/passwd
루트 계정 관리
루트 계정 명령어
root 암호 설정
$ sudo passwd root
# 패스워드 입력후 로그인
root 로그인
# 현재 계정에서 root권한을 이용하여 명령어를 실행할 때 사용하는 명령어
# sudo뜻 : superuser do
$ sudo
# 로그아웃을 하지 않고 다른 사용자의 계정으로 전환 (계정명 미입력이면 root로 로그인)
# su뜻 : switch user
$ su [계정명]
root 계정 관리 방안
- 시스템 초기 환경설정 시에만 이용하고 SSH를 통해 root 사용자 로그인이 되지 않도록 설정
- 시스템상 root계정은 유일해야 함.
- PAM을 통해 root 사용자로 로그인 할 수 없도록 설정
- 환경변수 TIMOUT을 설정하여 자동 로그아웃 되도록 설정.
- root계정으로 로그인하는것을 지양하고 필요할경우 sudo 명령을 사용.
#ssh 서비스의 root 로그인 막기
# sshd_config 파일을 root 권한으로 수정
$ sudo vi /etc/ssh/sshd_config
# ... 파일내용중 PermitRootLogin항목을 no로 설정.
# sshd 서비스 재시작
$ sudo systemctl restart sshd
시스템 계정 관리
시스템과 일반(일반) 사용자 사이에는 실질적인 기술적 차이가 없다. 일반적으로 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 범위에서 선택되며, 일반 사용자에게 사용되는 범위와는 다르다
$ sudo useradd -r username
사용자 계정 관리
계정 추가 명령어
사용자 추가 (useradd / adduser)
# 사용자를 생성한다
$ useradd testuser
추가된 사용자는 /etc/passwd 파일에서 확인할 수 있다.
$ tail -1 /etc/passwd # passwd 파일 맨끝 라인만 출력하기 (맨끝이 최근에 추가된 유저 정보)
testuser:x:1002:1002::/home/testuser:/bin/sh
[사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정 설명]:[홈 디렉터리]:[셸]
'/etc/passwd' 파일에는 콜론(:) 으로 구분되며 다음과 같은 정보를 포함하고 있다.
사용자명 | 비밀번호 | uid | gid | 사용자 계정 설명 | 홈 디렉터리 | 셸 |
testuser | x | 1002 | 1002 | /home/testuser | /bin/sh |
이밖에 useradd 명령어와 adduser 명령어 둘다 유저 정보를 출력해주는데 이 둘의 차이를 알고 싶다면 아래 포스팅을 참고하길 바란다.
사용자 추가 옵션
$ useradd [옵션] [사용자명]
옵 션 | 설 명 |
-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 파일의 내용을 참고하며, 이 파일의 내용을 그대로 보여준다고 생각하면 된다.
# 생성시 기본옵션을 열람
$ sudo useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
홈 디렉터리 지정하기 (-m)
사용자의 홈 디렉터리를 지정하는 옵션이다. 중간 경로가 있을 경우에는 미리 생성해 줘야 한다.
별도로 지정하지 않으면 /etc/default/useradd의 'HOME' 변수에 지정된 디렉터리에 '사용자명'으로 생성된다.
[-m] 옵션을 함께 사용하면, 디렉터리를 동시에 생성할 수 있다.
# 사용자 홈 디렉토리를 /home/testuser으로 자동 생성
$ useradd -m testuser
# 기본적으로 useradd는 /home에 사용자의 홈 디렉토리를 생성.
# 사용자의 홈 디렉토리를 다른 위치에 작성하려면 d(--home) 옵션을 사용.
$ useradd -m -d /home/color/testuser testuser
uid 지정하기 (-u)
사용자의 uid를 설정하는 옵션이다. 별도의 옵션을 지정하지 않을 경우, uid는 자동 발번되어 추가된다.
# 특정 UID를 가진 사용자를 생성
$ useradd -u 999 testuser
$ useradd -u [UID숫자] [유저명]
#사용자의 UID를 확인
$ id -u testuser
gid가 'group id'의 약자라면, uid는 'user id'의 약자이다. 사용자의 필요에 따라 특정 uid를 지정하여 생성할 수도 있다. 단, 다른 사용자가 이미 사용 중인 uid는 지정할 수 없다.
그룹 지정하기 (-g)
사용자가 소속될 그룹을 지정하는 옵션이다. 옵션을 생략할 경우, 아이디와 동일한 그룹에 포함시킨다.
옵션을 사용하여 gid를 지정하는 경우, 해당 gid는 반드시 생성되어 있는 것이어야만 한다.
# 그룹을 지정하여 사용자를 생성. 단, 그룹은 미리 생성되어 있어야 함.
$ useradd -g groupname testuser
$ useradd -g [그룹명] [유저명]
리눅스 사용자는 하나 이상의 그룹에 속하게 되어 있다. 그 그룹은 계정이 생성될 때 '사용자명'으로 생성되는데, 이와 동시 그룹의 고유 id인 'gid(group id)'도 발번된다.
그룹명과 gid는 /etc/group 파일을 보면 확인할 수 있다. 이 파일도 /etc/passwd 파일처럼 여러 개의 필드가 '콜론(:)'으로 구분되어 있는데, 여기서 첫 번째 필드가 그룹명이고, 세 번째 필드가 gid이다.
$ tail -3 /etc/group
[그룹명]:[패스워드]:[GID]:[멤버목록]
yhjeong:x:1000:
sambashare:x:126:yhjeong
testuser:x:1001:
# 'testuser' 그룹의 gid는 1001번
이 상태에서 신규 사용자 계정 'testuser2'를 별도의 옵션을 지정하지 않고 추가해본다. /etc/passwd 파일에서 testuser2 계정의 내용을 확인해보면, gid가 이전에 생성된 1001번 이후의 번호 1002번이 되어있으며
$ adduser testuser2
$ cat /etc/passwd | grep testuser2
testuser2:x:1002:1002::/home/testuser2:/bin/sh
[사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정]:[설명]:[홈 디렉터리]:[셸]
/etc/group 파일에서 gid가 1002번인 그룹의 이름은 'testuser2'라는 것을 확인할 수 있다.
$ cat /etc/group | grep 1002
testuser2:x:1002:
[그룹명]:[패스워드]:[GID]:[멤버목록]
이미 존재하는 그룹에 신규 사용자 계정을 추가해야 하는 상황도 발생할 수 있다. 이럴 때는 '-g gid' 옵션을 추가하여 사용자 생성도 가능하다.
예를 들어, 'testuser3' 계정을 생성하되, 별도의 신규 그룹을 생성하지 않고 그룹명 'testuser2'인 '1002(gid)'에 추가하는 명령어를 실행해본다.
# testuser3을 생성하되 그룹은 1002로 설정
$ useradd -g 1002 testuser3
명령 실행 결과, 'testuser3'의 gid가 '1002'로 설정되어 있음을 확인할 수 있다.
$ cat /etc/passwd | grep user5
testuser3:x:1003:1002::/home/testuser3:/bin/sh
[사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정 설명]:[홈 디렉터리]:[셸]
2차 그룹 지정하기 (-G)
사용자가 소속될 2차 그룹을 지정하는 옵션이다.
[-g] 옵션과 마찬가지로, 해당 gid는 이미 생성되어 있는 것이어야만 한다.
# 여러 그룹 할당
$ 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)
사용자는 여러 개의 그룹에 동시에 속할 수도 있다. '[-G]' 옵션을 사용하면 사용자가 기본적으로 속한 그룹 외, 다른 그룹에도 동시에 속하게 할 수 있다.
'testuser4'의 기본 그룹(1차 그룹)을 '1002'로, 2차 그룹을 '1001'번으로 지정하여 계정을 생성해본다.
$ useradd -g 1002 -G 1001 testuser4
계정 생성 후 /etc/passwd 파일을 살펴보면, 기본 그룹은 '1002'로 추가되었음을 확인할 수 있다.
$ cat /etc/passwd | grep testuser4
testuser4:x:1004:1002::/home/testuser4:/bin/sh
[사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정 설명]:[홈 디렉터리]:[셸]
반면, 2차 그룹은 /etc/group 파일의 마지막 필드에서 확인할 수 있는데,
이 필드에서는 해당 그룹 id를 2차 그룹으로 지정한 사용자 리스트를 보여준다.
$ cat /etc/group | grep testuser4
testuser:x:1001:testuser3 # GID 1001을 가진 testuser라는 그룹에 testuser3이라는 유저가 속해있다
[그룹명]:[패스워드]:[GID]:[멤버목록]
그룹 여러개에 각각 사용자가 속해있다면 이런식으로 출력된다. /etc/group 에 있는 inpa사용자의 그룹속함 정보와 명령어 $ id 로 출력되는 그룹정보가 일치함을 알 수 있다.
UID 와 그룹 동시 지정하기
# UID와 그룹을 지정하여 사용자를 생성. 단, color 그룹은 미리 생성되어 있어야 함.
$ useradd -u 999 -g color testuser
$ useradd -u [UID숫자] -g [그룹명] [유저명]
사용자 설명 추가하기 (-c)
'comment'의 이니셜로, 사용자에 대한 설명을 추가하는 옵션이다. 띄어쓰기가 필요할 경우, 따옴표('')로 묶어준다.
# 사용자 이름 이름을 사용자 이름으로 만들고 텍스트 문자열로 사용자 계정 테스트를 주석으로 사용
# -c(--comment) 옵션: 새 사용자에 대한 간단한 설명을 추가
$ useradd -c "Test User Account" testuser
$ grep username /etc/passwd
username:x :1001:1001:Test User Account:/home/testuser:/bin/sh
계정 만기일 설정하기 (-e)
계정의 만기일을 설정한다. 만기일 형식은 반드시 'YYYY-MM-DD'로 설정해야 한다.
# 사용자 계정의 만료일을 지정하면서 생성
# 날짜는 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 : 7
패스워드 만기일 설정하기 (-f)
'[-f]' 옵션을 사용하면 패스워드 만기일을 날짜 수로 지정할 수 있다.
$ useradd -f [날짜 수]
예를 들어, 'user10' 계정을 생성하되, 패스워드를 3일 이내 만기 시켜야 할 경우 다음과 같이 명령어를 입력하면 된다.
결과는 '/etc/shadow'의 7번째 필드를 확인하면 된다.
$ useradd -f 3 user10
$ cat /etc/shadow | grep user10
user10:!:18369:0:99999:7:3::
[사용자명]:[패스워드]:[마지막 변경일]: [패스워드] [최소사용일]:[최대사용일]:[만료경고일]:[유예기간]:[만료일]
사용자의 셸 지정하기 (-D)
사용자의 셸을 지정하는 옵션이다. 옵션을 지정하지 않으면, '/etc/default/useradd' 파일의 기본 설정을 따른다.
# 기본 로그인 셸을 /bin/sh에서 /bin/bash로 변경
$ sudo useradd -D -s /bin/bash
# 기본 셸 값이 변경되었는지 확인
$ sudo useradd -D | grep -i shell
SHELL=/bin/bash
일명 '명령어 해석기'라는 셸을 사용자별로 지정하는 옵션이다.
리눅스는 기본적으로 'bash' 셸을 사용하는데, 이 외에도 다양한 셸이 존재한다. 현재 사용하는 리눅스에서 사용 가능한 셸의 목록을 확인하려면 '/etc/shells' 파일을 확인해보면 된다.
$ cat /etc/shells
/etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
계정 패스워드 명령어
패스워드 설정 (passwd)
$ passwd [option][username]
Changing password for user username.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
옵 션 | 설 명 |
-d, --delete | 패스워드 삭제. 비밀번호없이 로그인 가능 |
-e, --expire | 사용자의 패스워드를 만료 |
-i, --inactive | 패스워드 만료후 비활성화전 유예기간 일 지정 |
-l, --lock | 사용자 패스워드에 락 걸어 로그인 막음 |
-n, --mindays | 비밀번호 변경할수 있을때까지 유지해야할 일수 설정 |
-q, --quiet | 화면 출력없이 명령을 수행 |
-S, --status | 사용자의 로그임명, 패스워드 상태, 설정여부, 마지막으로 변경한 날짜, 패스워드 변경까지 남은 기간 등 다양한 정보 출력 |
-u, --unlock | 락을 걸었던 패스워드를 다시 해제 |
-w, --warndays | 패스워드 만료전 경고날짜 지정 |
-x, --maxdays | 최대사용기간 설정 |
# 사용자 패스워드 설정
$ 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 testuser
패스워드 유효기간 관리 (chage)
$ chage [options] username
옵 션 | 설 명 |
-d,--lastday | 패스워드를 변경해야 할 날짜수 지정 |
-E,--expiredate | 계정이 만료되는 날 설정 |
-I,--inactive | 계정만료후 패스워드가 비활성화될때까지 유예기간을 설정 |
-l,--list | 계정의 매스워드 만료 정보 보여줌 |
-m,--mindays | 패스워드 변경할 때 최소 날짜를 지정 |
-M,--maxdays | 패스워드 변경할 때 최대날짜 지정 |
-W,--warndays | 패스워드 만료에 대한 경고 메시지를 보여줄 날짜를 지정 |
# 만료정보 출력
$ 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 test
계정 전환 / 설정 / 삭제 명령어
계정 전환 (su)
- su : switch user 약자
# 다른 사용자의 권한으로 실행
$ su [options] username
옵 션 | 설 명 |
-c, --command | 지정한 사용자로 셸이 실행할 명령어 지정 |
-, -l, --login | 사용자가 직접 로그인했을때 동일하게 환경변수가 설정되고 홈 디렉토리로 이동 |
-s, --shell | 명시된 셸 사용 |
# root 사용자 전환.
$ su -
# 사용자 전환을 하지않고 일시적으로 지정명령 실행
$ su root -c "vi /etc/passwd"
계정 설정 (usremod)
사용자 셸, 홈디렉토리, 그룹, UID, GID 사용자 설정 변경. useradd 명렁어의 설정 대부분 적용가능.
$ usermod [options] username
옵 션 | 설 명 |
-a,--append | 사용자에 그룹 추가하기위해 -G 옵션과 사용 |
-c,--comment | 사용자에 간단한 정보 입력 |
-l,--login | 로그인 이름 변경 |
-L, --lock | 패스워드에 락 |
-U,--unlock | 패스워드 락 해제 |
# 사용자 홈 디렉터리 변경. -m 옵션까지 입력하면 내용도 복사
$ usermod -d /home/whiteblue testuser
# 사용자 그룹을 photo 사용자 그룹으로 변경
$ usermod -g photo testuser
계정 삭제 (userdel)
$ userdel [option] username
# 계정삭제. 단, 홈디렉토리 파일은 남아있음.
$ userdel testuser
# -r 옵션을 통해 사용자 계정 홈 디렉토리도 삭제
$ userdel -r testuser
# -f옵션으로 강제 삭제
$ userdel -f testuser
계정 삭제 (deluser)
# userdel이랑 같지만 옵션명이 다른것 뿐이다.
$ deluser [userName]
# 홈 디렉토리 삭제
$ deluser --remove [userName]
# 홈 디렉토리, 계정명으로된 모든 파일 삭제
$ deluser --remove-all-files [userName]
# home이나 passwd에 유저 디렉토리, 정보를 삭제해서 계정 삭제하는 방법도 존재한다.
# 홈 디렉토리 및 하위폴더 삭제
$sudo rm -r /home/[userName]
# /etc/passwd 에서 해당 내용 삭제
$sudo vi /etc/passwd
그룹 계정 관리
그룹이란 사용자를 묶어 관리 가능하게 하는 매커니즘 이다. 그룹을 통해 각 그룹에 보안설정, 접근설정, 권한등을 일괄 적용 관리할 수 있다.
모든 사용자는 UID와 그룹에 대한 식별자인 GID 가진다. 사용자 생성시 기본으로 사용자 이름과 동일한 그룹을 생성하여 포함시킨다.
그룹 계정 명령어
그룹 출력 (groups)
# 특정 사용자나 현재 로그인한 사용자가 속한 그룹을 표시
$ 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)
그룹 생성 (groupadd)
$ groupadd [options] groupname
옵션 | 설명 |
-f, --force | 그룹을 생성할때 이미 생성되어 있더라도 성공으로 간주 |
-r, --system | 시스템 그룹을 생성 |
-g,--gid GID | 그룹의 양수의 GID를 지정 |
-o,--non-unique | 그룹을 생성할때 중복된 GID값 허용 |
# GID 지정하여 그룹을 생성
$ sudo groupadd -g 550 groupname
그룹 정보 변경 (groupmod)
옵션 | 설명 |
-g, --gid | 변경할 GID 설정 -o 옵션을 주지않는다면 유일한 정수값 |
-n, --new-name | 그룹의 이름 변경 |
# colors 그룹 이름을 newcolors 그룹으로 변경
$ sudo groupmod -n newcolors colors
# GID 567로 변경
$ sudo groupmod -g 567 colors
그룹관련 설정파일인 /etc/group , /etc/gshadow , /etc/passwd 에서 그룹관련 속성 변경할 수 있다.
그룹 삭제 (groupdel)
그룹을 삭제하기 위해선 주 그룹에 존재하는 사용자가 없어야 한다. (사용자를 삭제한 후 그룹을 삭제할 수 있음.)
또한 파일중 그룹이 설정된 파일이 없어야 한다.
$ sudo groupdel groupname
그룹 전반적인 관리 및 패스워드 변경 (gpasswd)
그룹 패스워드 변경 뿐만 아니라 앞에서 본 그룹 추가/삭제 등 전반적인 그룹 관리 마스터 명령어이다.
$ gpasswd [options] groupname
옵션 | 설명 |
-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)
만일 참여하려는 그룹에 그룹패스워드가 존재하는데, 사용자가 명령어를 통해 그룹에 참여하려면 패스워드 입력 필요하다.
# 현재 그룹대신 groupname 그룹으로 전환
$ newgrp groupname
사용자 계정 환경 설정 파일
사용자 계정과 그룹정보는 /etc 디렉터리 이하에 존재한다.
구분 | 파일명 | 설명 |
계정 및 그룹 설정파일 | /etc/passwd | 사용자 계정의 아이디, 그룹정보 등 계정정보 |
/etc/shadow | 암호화된 패스워드 및 정책 설정 정보 | |
/etc/group | 사용자 그룹의 기본정보 | |
/etc/gshadow | 사용자 그룹의 암호화된 패스워드 정보 | |
계정 환경설정 파일 | /etc/default/useradd | useradd명령을 사용할 때 기본 사용자 부가정보 |
/etc/login.defs | 로그인 수행시 기본설정 | |
/etc/skel | 홈 디렉터리 생성시 기본으로 제공할 파일 |
환경 설정 파일 종류
/etc/passwd
- 로그인시 필요한 UID, GID, 홈디렉터리, 셸 등의 사용자 계정 정보를 포함.
- 모든 사용자에게 읽기권한 가진 파일
- 루트 사용자만 쓰기 허용
$ cat /etc/passwd
userid:x:14:50:FTP This is test User:/var/userid:/sbin/nologin
[사용자명]:[비밀번호]:[UID]:[GID] [사용자설명]:[홈디렉토리]:[쉘경로]
# 사용자 명 : 로그인 할때 사용하는 사용자이름
# 비밀번호 : x는 암호화된 패스워드를 보관하고있다는 의미
# UID : 사용자 번호
# GID : /etc/group 파일에 보관된 주 그룹 ID번호
# 사용자 설명 : 사용자에대한 추가설명 코멘트 필드
# 홈 디렉터리 : 기본디렉터리로 절대경로로 설정
# 셸 : 셸의 위치를 절대 경로로 지정.
/etc/shadow
- 사용자 패스워드를 해시 알고리즘으로 암호화한 값과 패스워드와 연관된 여러 속성을 단고있는 파일
- /etc/passwd 파일은 각 사용자들에 대한 암호 정보를 담고있음.
$ cat /etc/shadow
francis: $fislf2R$R45trhertsdfs:18119:0:99999:7: : :
[사용자명]:[패스워드]:[마지막 변경일]: [패스워드] [최소사용일]:[최대사용일]:[만료경고일]:[유예기간]:[만료일]
/etc/default/useradd
- 사용자 생성시 사용되는 기본 설정값이 저장된 환경설정 파일
- useradd -D 로 내용확인 가능.
/etc/login.defs
- 쉐도우 패스워드 스위트를 위한 읽기 전용 환경설정파일
- 패스워드 최대 사용일 : PASS_MAX_DAYS
- 패스워드 최소사용일 : PASS_MIN_DAYS
- 패스워드 만료 경고일 : PASS_WARN_AGE
/etc/group
- 그룹에 속한 사용자를 관리하는 파일.
- 그룹에 여러 사용자가 속할 수 있음.
$ cat /etc/group | grep mail
mail:x:12:mail,postfix
[그룹명]:[패스워드]:[GID]:[멤버목록]
/etc/gshadow
- 그룹의 암호화된 비밀번호 정보를 포함.
- 루트권한 사용자만 접근 가능
$ cat /etc/gshadow
test:$65$ssafhasrjkg/sasldfjsadkf:test:francis
[그룹명]:[패스워드]:[그룹관리자]:[멤버목록]
# 참고자료
https://wiseworld.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%82%AC%EC%9A%A9%EC%9E%90%EA%B4%80%EB%A0%A8-%EB%AA%85%EB%A0%B9%EC%96%B4%EC%99%80-%ED%8C%8C%EC%9D%BC
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nmnmnmnm01&logNo=110175553005
https://laughcryrepeat.tistory.com/59
https://tragramming.tistory.com/85
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.