1. 리눅스 계정 종류
1.1. 사용자 분류
- 루트 계정 : 모든 권한을 가진 특별한 사용자
- 시스템 계정 : 리눅스 설치 시 기본으로 생성되는 계정
- 사용자 계정 : 실제 리눅스 사용자를 위한 계정
→ 리눅스에서는 사용자를 root(관리자)와 일반 사용자로 구분
→ 각 계정은 번호로 부여하는 UID로 관리함
root(Super User) 계정
- UID 값이 0으로 지정된 관리자 계정
- 다른 계정을 생성하거나 권한을 부여하고 비밀번호를 바꿀 수 있음
일반 사용자
- 관리자에게 권한을 부여 받아 사용
시스템 계정
- 필요에 의해 자동으로 생성되는 시스템 계정
- bin, daemon, adm, lp, sync, shutdown 등 여러가지가 있으며, 일반적으로 로그인은 불가능함
1.2. 계정 확인 명령어
1.2.1. 계정 확인
# 현재 사용자의 UID, GID, 그룹정보를 확인하는 명령어
$ id
uid=0(root) gid=0(root) groups=0(root), 4(adm)
# 현재 시스템을 사용하는 사용자의 정보와 작업 정보를 출력
w
USER TTY FROM LOGING IDLE JCPU PCPU WHAT
root tty1 - 01:46 1.00s 0.00s 0.00s w
# 현재 시스템을 사용하는 사용자의 정보를 출력
who
root tty1 2024-10-23 01:46
# 유효 사용자 아이디의 정보를 확인 (사용자명 출력)
$ whoami
root
# 시스템에 접속할 당시의 계정명과 접속 정보를 확인
who am I 또는 who -m
root tty1 2024-10-23 01:46
# 현재 호스트에 로그인되어 있는 모든 사용자 출력
users
root
# 시스템 내에 있는 사용자 계정에 대한 정보를 출력
lslogins
UID USER PROC PWD-LOCK PWD-DENY LAST-LOGIN GECOS
0 root 93 0 0 01:46 root
1 test 0 1 0
계정 전체 확인
# 전체 목록 확인
$ cat /etc/passwd
2. 루트 계정 관리
2.1. 루트 계정 명령어
2.1.1. root 암호 설정
$ sudo passwd root
# 패스워드 입력 후 로그인
2.1.2. root 로그인
# 현재 계정에서 root 권한을 이용하여 명령어를 실행할 때 사용하는 명령어
# sudo : superuser do
$ sudo
# 로그아웃을 하지 않고 다른 사용자의 계정으로 전환
# su : switch user
$ su [계정명]
3. 사용자 계정 관리
3.1. 계정 추가 명령어
3.1.1. 사용자 추가 : useradd
useradd [옵션] 사용자명
→ 추가된 사용자는 /etc/passwd 파일에서 확인 가능
$ cat /etc/passwd
root:x:0:0::/root:/bin/sh
testuser:x:1000:1000::/home/testuser:/bin/sh
[사용자명]:[비밀번호]:[uid]:[gid]:[사용자 계정 설명]:[홈 디렉터리]:[셸]
3.1.2. 주요 옵션
- -b : 홈 디렉터리가 지정되지 않은 경우 시스템이 기본 디렉터리
- -c : 주석
- -d 경로 : 사용자 홈 디렉토리 경로 지정
- -D : /etc/default/useradd 정보
- -e : 만료일 지정 (YYYY-MM-DD)
- -f : 패스워드 만기일을 날짜 수로 지정
- -g 그룹명 : 1차 그룹 지정
- -G 그룹명 : 2차 그룹 지정
- -k : /etc/skel (skeldir 지정)
- -m : 사용자 홈 디렉토리 생성
- -p : 사용자 암호를 추가 시 지정
- -s : 사용할 쉘 지정
- -u : uid 값 지정
- -U : 사용자 생성 시 사용자명으로 그룹 생성
3.1.3. 사용자 생성 정보 기본 정보 확인
# 신규 사용자 추가 시 반영되는 기본 사항들을 확인하는 명령어
$ useradd -D
$ cat /etc/default/useradd
3.1.4. 예시
- 사용자 추가 시에 생성되는 홈 디렉터리를 /home2 디렉터리의 하위 디렉터리가 되도록 변경함
- -useradd –D -b /home2
- 사용가 추가 시에 부여되는 기본 셸을 /bin/csh가 부여되도록 변경함
- useradd -D -s /bin/csh
- 해당 설정의 변경 여부를 확인함
- cat /etc/default/useradd
3.2. 패스워드 설정
passwd [옵션] 사용자명
3.2.1. 주요 옵션
- -d : 패스워드 삭제 (패스워드 없이 로그인 가능)
- -l : 패스워드 일시적 잠금
- -u : 패스워드 일시적 잠금 해제
- -e : 다음 로그인 시 반드시 패스워드 변경
- -x : 패스워드 유효기간
- -n : 패스워드 변경 후 최소 날짜
- -w : 패스워드 만료 전 경고 날짜
- -i : 패스워드 만료된 후 실제 계정이 로그인이 불가능하기까지의 유예기간
- -S : 사용자에 대한 패스워드 정보를 알려줌
3.3. 패스워드 관리
chage [옵션] 사용자명
3.3.1. 주요 옵션
- -d : /etc/shadow의 3번째 필드 (패스워드 바꾼날 수정)
- -E : 만료일(YYYY-MM-DD)
- -I (i의 대문자) : 패스워드 만료된 후 lock 될 때까지의 유예기간
- -l : 사용자에 대한 패스워드 정보 보여줌
- -m : 최소 날짜 수
- -M : 최대 날짜 수
- -W : 만료 전 경고 날짜
3.4. 계정 전환 / 설정 / 삭제 명령어
3.4.1. 계정 전환(su)
# 다른 사용자의 권한으로 실행
$ su [옵션] 사용자명
- -c : 지정한 사용자로 셸이 실행할 명령어 지정
- -, -ㅣ : 사용자가 직접 로그인했을 때 동일하게 환경 변수가 설정되고 홈 디렉터리로 이동
- -s : 명시된 셸 사용
3.4.2. 계정 설정
usermod [옵션] 사용자명
- -d 새로운_경로 : 사용자의 홈 디렉토리 변경 (m 옵션과 같이 사용 시 홈 디렉토리의 파일, 디렉터리도 같이 옮김)
- -e : 만료일 변경
- -f : 비번이 만기되고 실제 계정이 lock 될 때까지의 유예기간
- -g : 1차 그룹 변경
- -G : 2차 그룹 변경
- -a -G : 사용자를 추가 그룹에 추가
- -l : 사용자 이름을 변경
- -L : 계정 잠금
- -m : 사용자의 홈 디렉터리로 이동
- -s : 사용할 쉘 변경
- -u : uid 값 변경
- -U : 계정 잠금 해제
# ihduser의 사용자명을 kaituser로 변경
# 홈 디렉터리를 /home/ihduser에서 /home/kaituser로 변경하고, 기존에 소유했던 파일이나 디렉터리도 그대로 이용가능하도록 함
usermod -l kaituser -d /home/kaituser -m ihduser
3.4.3. 계정 삭제
userdel [옵션] 사용자명
# 계정삭제. 단, 홈 디렉터리 파일은 남아있음
$ userdel testuser
# -r 옵션을 통해 사용자 계정 홈 디렉터리도 삭제
$ userdel -r testuser
# -f 옵션으로 강제 삭제
$ userdel -f testuser
4. 그룹 계정 관리
4.1. 그룹 계정 명령어
4.1.1. 그룹 출력
# 특정 사용자나 현재 로그인한 사용자가 속한 그룹을 표시
$ groups
4.1.2. 그룹 생성
groupadd [옵션] 그룹명
- -f : 그룹을 생성할 때 이미 생성되어 있더라도 성공으로 간주
- -r : 시스템 그룹을 생성
- -g : 그룹의 양수의 GID를 지정
- -o : 그룹을 생성할 때 중복된 GID 값 허용
4.1.3. 그룹 정보 변경
groupmod [옵션] 그룹명
- -g : 변경할 GID 설정
- -n : 그룹의 이름 변경
4.1.4. 그룹 삭제
# 그룹을 삭제하기 위해선 주 그룹에 존재하는 사용자가 없어야 함
groupdel 그룹명
4.1.5. 그룹 관리 및 패스워드 변경
gpasswd [옵션] 그룹명
- -a : 그룹에 사용자를 추가
- -d : 그룹에 사용자 삭제
- -r : 그룹의 패스워드 제거
- -R : 그룹 접근 제한
- -A : 관리자로 지정할 사용자 설정
- -M : 그룹멤버 설정
4.1.6. 그룹 참여
# 참여하려는 그룹에 그룹 패스워드가 존재하는데, 사용자가 명령어를 통해 그룹에 참여하려면 해스워드 입력 필요
$ newgrp 그룹명
5. 사용자 계정 환경 설정 파일
- 계정 및 그룹 설정 파일
- /etc/passwd : 사용자 계정의 아이디, 그룹 정보 등 계정정보
- /etc/shadow : 암호화된 패스워드 및 정책 설정 정보
- /etc/group : 사용자 그룹의 기본정보
- /etc/gshadow : 사용자 그룹의 암호화된 패스워드 정보
- 계정 환경설정 파일
- /etc/default/useradd : 기본 사용자 부가정보
- /etc/login.defs : 로그인 수행 시 기본설정
- /etc/skel : 홈 디렉터리 생성 시 기본으로 제공할 파일
5.1. 환경 설정 파일 종류
5.1.1. /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번호
# 사용자 설명 : 사용자에대한 추가설명 코멘트 필드
# 홈 디렉터리 : 기본디렉터리로 절대경로로 설정
# 셸 : 셸의 위치를 절대 경로로 지정
5.1.2. /etc/shadow
- 사용자 패스워드를 해시 알고리즘으로 암호화한 값과 패스워드와 연관된 여러 속성을 담고 있는 파일
$ cat /etc/shadow
francis: $fislf2R$R45trhertsdfs:18119:0:99999:7: : :
[사용자명]:[패스워드]:[마지막 변경일]: [패스워드] [최소사용일]:[최대사용일]:[만료경고일]:[유예기간]:[만료일]
5.1.3. /etc/default/useradd
- 사용자 생성 시 사용되는 기본 설정값이 저장된 환경설정 파일
5.1.4. /etc/login.defs
- 사용자의 패스워드에 적용되는 해시 알고리즘의 이름을 확인할 수 있는 파일
- 사용자 계정의 설정과 관련된 기본값을 정의한 파일
- 기본 메일 디렉터리, 패스워드 에이징, 사용자 계정의 UID/GID 값 범위 등의 기본값을 설정할 수 있음
- PASS_MIN_LEN : 패스워드 길이 지정
- PASS_MIN_DAYS : 패스워드 변경없이 사용가능한 기간
- PASS_WARN_AGE : 패스워드 만료 경고일
5.1.5. /etc/skel
- 사용자 계정 생성 시 공통으로 배포할 파일이나 디렉터리를 저장하는 디렉터리
5.1.6. /etc/group
- 그룹에 속한 사용자를 관리하는 파일
- 그룹에 여러 사용자가 속할 수 있음
$ cat /etc/group | grep mail
mail:x:12:mail,postfix
[그룹명]:[패스워드]:[GID]:[멤버목록]Copy
5.1.7. /etc/gshadow
- 그룹의 암호화된 비밀번호 정보를 포함
- 루트 권한 사용자만 접근 가능
$ cat /etc/gshadow
test:$65$ssafhasrjkg/sasldfjsadkf:test:francis
[그룹명]:[패스워드]:[그룹관리자]:[멤버목록]
참고 문헌
https://inpa.tistory.com/entry/LINUX-📚-사용자-계정-관리-명령어-💯-정리
'자격증 & 공부 > 리눅스마스터 1급' 카테고리의 다른 글
[리눅스마스터 1급 - 2차] 파일 및 디렉터리 권한 (0) | 2024.10.23 |
---|---|
[리눅스마스터 1급 - 2차] 파일 링크 (하드 링크 / 심볼릭 링크 / inode) (0) | 2024.10.23 |
[리눅스마스터 1급] 필기 시험 후기 (0) | 2024.09.09 |
[리눅스마스터1급 - 1차] 2과목 - 6-3. 시스템 백업 (0) | 2024.06.13 |
[리눅스마스터1급 - 1차] 2과목 - 6-2. 시스템 보안 및 관리 (0) | 2024.06.13 |