📌 Linux 사용자 관리 파일 요약 (/etc/passwd, /etc/shadow, /etc/group)
1. /etc/passwd (사용자 정보)
- 사용자 ID, 홈 디렉터리, 기본 쉘 등 기본적인 사용자 정보를 저장하는 파일
- 구조: 사용자명:x:UID:GID:사용자 설명:홈 디렉터리:기본 쉘
- 예: centos:x:500:500::/home/centos:/bin/bash
- x: 패스워드는 /etc/shadow 파일에서 관리됨 (보안 목적)
🔹 중요 사항
설정 | 의미 |
x | /etc/shadow에서 패스워드 관리 |
* | 패스워드 없음 → 로그인 불가 |
/sbin/nologin or /bin/false | 로그인 불가 (FTP, 시스템 계정 등에 사용) |
빈칸(공백) | 패스워드 없이 로그인 가능 → 보안상 위험! ⚠ |
2. /etc/shadow (암호화된 패스워드 관리)
- /etc/passwd에 x로 표시된 패스워드를 해시화하여 보관하는 파일
- 구조: 사용자명:암호화된 패스워드:패스워드 변경 정보 등
- 예: centos:$6$XQLzic8C$5CQ9OMD/uBf.1HCouZQAa1:14281:0:99999:7:::
🔹 필드 설명
필드 | 내용 |
$6$ | 암호화 방식 (SHA512) ($1$ = MD5, $5$ = SHA256) |
!! | 로그인 불가 (비활성화된 계정) |
* | 패스워드 없음 |
salt | 해시를 강화하기 위한 추가 보안 문자열 |
14281 | 마지막 패스워드 변경 날짜 (1970-01-01 이후 경과 일수) |
0 | 패스워드 변경 제한 (0이면 제한 없음) |
99999 | 패스워드 유효기간 (99999일 = 무제한) |
7 | 패스워드 만료 7일 전 경고 |
:: | 계정 잠금 관련 필드 (비워두면 기본 설정 유지) |
3. /etc/group (그룹 정보)
- 사용자가 속한 그룹 정보를 저장하는 파일
- 구조: 그룹명:패스워드(대부분 x):GID:그룹에 속한 사용자 목록
- 예: wheel:x:10:centos,admin
- 특정 사용자의 그룹 확인
groups centos
사용자를 그룹에 추가하는 법
sudo usermod -aG 추가할_그룹 사용자이름
✅ 예제 (centos 사용자를 docker 그룹에 추가)
sudo usermod -aG docker centos
🔎 정리
- /etc/passwd: 사용자 계정 정보 (x는 패스워드가 /etc/shadow에 저장됨)
- /etc/shadow: 암호화된 패스워드 및 보안 설정 관리 (!!가 있으면 로그인 불가)
- /etc/group: 사용자 그룹 관리
⚠ 보안 주의사항
- /etc/passwd에서 x 대신 공백이면 패스워드 없이 로그인 가능 → 보안상 매우 위험!
- /etc/shadow에서 **!!**이면 로그인 불가
- /etc/passwd에서 기본 쉘을 /sbin/nologin 또는 /bin/false로 변경하면 로그인 차단 가능
✅ 보안 설정 추천
- 패스워드 없는 계정 확인
sudo awk -F: '($2 == "") {print $1}' /etc/shadow
- root 계정 원격 로그인 차단
sudo nano /etc/ssh/sshd_config # 아래 설정 변경 PermitRootLogin nosudo systemctl restart sshd
- 만료된 계정 확인
sudo chage -l centos
- 패스워드 변경
sudo passwd centos
📌 pwunconv란?
pwunconv 명령어는 암호화된 패스워드를 /etc/shadow에서 /etc/passwd로 되돌리는 명령어입니다.
즉, Shadow Password 시스템을 비활성화(해제) 하는 역할을 합니다.
✅ /etc/shadow에 저장된 암호화된 비밀번호를 /etc/passwd 파일로 다시 이동
✅ 보안상 위험! (/etc/passwd는 누구나 읽을 수 있기 때문)
✅ 일반적으로 사용하지 않는 것이 좋음
📌 해시와 크랙, 무결성 개념 요약
✅ 해시(Hash)란?
- 평문(원본 텍스트)을 일방향 함수를 통해 고정된 길이의 값으로 변환하는 것
- 해시된 값(해시 출력)은 절대로 원본으로 복구할 수 없음
- 같은 해시 알고리즘을 사용해도, 다른 평문이 같은 해시 값을 가질 수도 있음 (해시 충돌)
✅ 해시 크랙(Crack)이란?
- 다양한 평문을 미리 해시한 후, 특정 해시값과 비교하여 일치하는 평문을 찾는 과정
- 해시를 크랙하는 방법:
- Brute Force (무차별 대입 공격) → 가능한 모든 조합을 시도
- Dictionary Attack (사전 공격) → 흔한 비밀번호 리스트를 활용
- Rainbow Table (레인보우 테이블) → 해시 값을 미리 계산하여 저장한 데이터베이스
✅ 레인보우 테이블(Rainbow Table)이란?
- 여러 개의 해시 값을 체인(chain) 구조로 묶어 저장한 것
- 미리 계산된 해시 값을 빠르게 검색하여 특정 해시 값과 매칭되는 평문을 찾음
- **솔트(Salt)**가 적용된 해시는 레인보우 테이블 공격이 효과 없음
✅ 해시(Hash) vs 암호화(Encryption)
개념 | 설명 |
해시(Hash) | 원본 데이터의 무결성(Integrity) 보장 (검증용) |
암호화(Encryption) | 원본 데이터를 숨기는 것 (복호화 가능) |
📌 Linux 사용자 및 시스템 관리 요약
1. 시스템 부팅 관련 파일
파일 | 역할 |
/etc/rc.local | 시스템 부팅 직전 실행할 스크립트 설정 |
/etc/fstab | 부팅 시 자동 마운트할 저장장치 설정 |
/etc/grub(2).conf | 부팅 설정 및 커널 선택 관련 설정 |
/etc/inittab | 시스템 런레벨(runlevel) 설정 |
2. 사용자 생성 및 속성 관리
파일 | 역할 |
/etc/default/useradd | 사용자 생성 시 기본 속성 (홈 디렉터리, 기본 쉘 등) 설정 |
/etc/skel/ | 새 사용자의 홈 디렉터리에 복사될 기본 파일 설정 |
/etc/login.defs | 패스워드 관련 정책 설정 |
✅ 사용자 정보 확인 파일
파일 | 역할 |
/etc/passwd | 사용자 계정 정보 (UID, GID, 홈 디렉터리, 기본 쉘 등) |
/etc/shadow | 사용자 패스워드 정보 (암호화된 패스워드, 패스워드 만료 설정 등) |
/etc/group | 그룹 정보 (그룹명, GID, 속한 사용자 목록) |
3. 패스워드 관리 명령어
명령어 | 설명 |
passwd 사용자 | 특정 사용자의 패스워드 변경 |
passwd -l 사용자 | 사용자의 패스워드를 잠금 (로그인 불가) |
passwd -u 사용자 | 사용자의 패스워드 잠금 해제 |
chpasswd | 여러 사용자의 패스워드를 일괄 변경 |
chage -M 15 -E 2025-02-29 사용자 | 15일마다 패스워드 변경, 2025년 2월 29일 만료 |
pwunconv | /etc/shadow에 저장된 패스워드를 /etc/passwd로 이동 (보안 취약!) |
✅ 로그인 제한 방법
방법 | 설명 |
/etc/passwd에서 /bin/bash → /bin/false 또는 /sbin/nologin 변경 | 로그인 불가 |
/etc/passwd에서 x → * 변경 | 로그인 불가 |
/etc/shadow에서 해시된 패스워드를 !!로 변경 | 로그인 불가 |
4. 사용자 관리 명령어
명령어 | 설명 |
useradd 사용자 | 새 사용자 추가 |
userdel 사용자 | 사용자 삭제 |
userdel -r 사용자 | 사용자와 홈 디렉터리 삭제 |
usermod -aG 그룹 사용자 | 사용자를 특정 그룹에 추가 |
usermod -g 그룹 사용자 | 사용자의 기본 그룹 변경 |
usermod -d 새_홈디렉터리 -m 사용자 | 사용자의 홈 디렉터리 변경 및 기존 데이터 이동 |
usermod -s /bin/bash 사용자 | 사용자의 기본 쉘 변경 |
5. 사용자 전환 (su, sudo)
✅ 사용자 전환 명령어
명령어 | 설정 |
su - 사용자 | 해당 사용자로 완전히 전환 (패스워드 입력 필요) |
su -c '명령어' | root 권한으로 단일 명령어 실행 (root 패스워드 필요) |
sudo 명령어 | root 권한으로 일시적으로 실행 (사용자 패스워드 입력) |
sudo su | root 계정으로 전환 (Ubuntu에서 기본적으로 사용) |
✅ sudo 설정
- /etc/sudoers 파일에서 특정 사용자에게 sudo 권한 부여
- %wheel (CentOS) 또는 %sudo (Ubuntu) 그룹에 사용자를 추가하면 sudo 사용 가능
✅ Ubuntu에서 su root가 기본적으로 안 되는 이유
- Ubuntu는 설치 시 root 패스워드를 설정하지 않음
- sudo su를 사용해야 root로 전환 가능
- passwd root 명령으로 root 패스워드를 설정하면 su root 사용 가능
6. 사용자 권한 및 접근 제어
✅ 일반 사용자의 제한 사항
- 다른 사용자의 홈 디렉터리에 접근할 수 없음
- root는 모든 사용자의 홈 디렉터리에 접근 가능
✅ sudo 사용자는 어떻게 동작하는가?
- sudo를 처음 실행할 때 사용자 패스워드를 입력
- 이후 5분 동안 추가 패스워드 입력 없이 sudo 사용 가능
📌 PAM(Pluggable Authentication Module)
1. PAM이란?
✅ PAM (Pluggable Authentication Module)
- Linux에서 인증(Authentication) 시스템을 모듈화하여 관리하는 프레임워크
- /etc/pam.d/ 디렉터리에 존재하는 각 서비스별 설정 파일을 통해 인증을 관리
✅ PAM의 장점
- 중앙 집중식 인증 관리 → 개별 서비스(예: SSH, Cron 등)의 설정보다 PAM이 우선 적용
- 보안 강화 → 시스템 전체에 일관된 인증 정책 적용 가능
- 설정 오류 감소 → 모든 인증을 /etc/pam.d/에서 관리하여 설정 실수를 줄일 수 있음
2. PAM 설정 파일 구조 (/etc/pam.d/)
🔹 출력 예시
✅ 각 서비스별 PAM 설정 파일 예시
- /etc/pam.d/sshd → SSH 로그인 인증 관리
- /etc/pam.d/su → su 명령어 실행 시 인증 설정
- /etc/pam.d/sudo → sudo 사용 시 인증 방식 설정
- /etc/pam.d/passwd → passwd 명령어 실행 시 패스워드 정책 관리
3. PAM의 적용 방식
PAM을 사용하면 개별 서비스 설정 파일(예: /etc/ssh/sshd_config, /etc/crontab)에서 직접 인증 설정을 하지 않아도 PAM 설정이 시스템 전체에 우선 적용됨.
✅ 예제: SSH 인증 설정 (/etc/pam.d/sshd)
🔹 의미
- pam_unix.so → 기본 Linux 패스워드 인증 사용
- pam_tally2.so → 로그인 실패 3회 시 계정 잠금, 5분 후 해제
📌 즉, PAM에서 SSH 인증을 설정하면 /etc/ssh/sshd_config의 인증 정책보다 우선 적용됨!
🔎 결론
- PAM(Pluggable Authentication Module) → Linux의 인증 시스템을 중앙에서 통합 관리
- /etc/pam.d/ 디렉터리에 각 서비스별 인증 설정 파일 존재
- 개별 서비스 설정보다 PAM 설정이 우선 적용되므로 보안 강화 및 설정 효율 증가
- 예를 들어 SSH의 인증 정책을 /etc/ssh/sshd_config보다 /etc/pam.d/sshd에서 우선 관리
✅ 즉, PAM을 사용하면 시스템 전체의 인증 정책을 중앙에서 관리할 수 있어 보안이 강화됨!
📌 사용자와 그룹 관리 명령어
1. 주요 명령어 정리
명령어 | 설정 |
finger | 현재 로그인한 사용자 정보 확인 |
id [사용자명] | 사용자 UID, GID, 그룹 정보 조회 |
groups [사용자명] | 사용자가 속한 그룹 목록 확인 |
getent | /etc/nsswitch.conf에 정의된 데이터베이스에서 사용자, 그룹 등의 정보 조회 |
2. 명령어별 상세 설명
🔹 finger (로그인 사용자 정보 확인)
- 현재 로그인한 사용자 정보(이름, 로그인 시간, 터미널 정보 등)를 출력
- 예제:
Login Name Tty Idle Login Time Office user1 User One pts/0 00:10 Feb 28 10:15
-
finger
- 특정 사용자의 정보를 보고 싶다면:
finger user1
📌 추가 사항:
- finger 명령어가 없으면 패키지를 설치해야 함:
sudo apt install finger # Ubuntu/Debian sudo yum install finger # CentOS/RHEL
🔹 id (사용자의 UID, GID, 그룹 정보 조회)
- 특정 사용자의 UID(User ID), GID(Group ID), 그룹 정보를 확인하는 명령어
- 예제:
id user1uid=1001(user1) gid=1001(user1) groups=1001(user1),27(sudo),1002(docker)
- 출력 설명:
- uid=1001(user1) → user1의 UID는 1001
- gid=1001(user1) → user1의 기본 그룹 GID는 1001
- groups=1001(user1),27(sudo),1002(docker) → user1이 속한 그룹 목록
🔹 groups (사용자가 속한 그룹 확인)
- 현재 사용자가 속한 그룹 확인:
groupsuser1 sudo docker
- 특정 사용자의 그룹 확인:
groups user1user1 : user1 sudo docker
🔹 getent (엔트리 정보 조회)
- Linux 시스템에서 사용자, 그룹, 호스트 등의 정보를 /etc/nsswitch.conf 설정에 따라 조회하는 명령어
- 예제:
user1:x:1001:1001::/home/user1:/bin/bashgetent passwd user1
- 모든 사용자 목록 조회 (/etc/passwd 파일 기반)
getent passwd
- 특정 그룹 정보 조회 (/etc/group 파일 기반)
sudo:x:27:user1,user2getent group sudo
📌 추가 사항:
- getent는 /etc/nsswitch.conf 설정에 따라 로컬 파일뿐만 아니라 네트워크 인증 시스템(NIS, LDAP 등)에서도 정보를 조회할 수 있음.
- /etc/passwd는 로컬 사용자 계정 관리,
도메인 환경에서는 NIS(Network Information Service) 같은 시스템이 중앙에서 사용자 인증을 관리할 수 있음.
3. GUI를 통한 사용자 및 그룹 관리
✅ GNOME 환경에서는 GUI를 사용하여 사용자 및 그룹을 쉽게 관리 가능
- gnome-control-center users 실행 (GNOME Desktop 환경)
- system-config-users 패키지를 설치하면 GUI 기반 사용자 관리 가능 (CentOS)
- Ubuntu에서는 "설정(Settings) → 사용자(Users)" 에서 관리 가능
🔎 결론
- finger, id, groups, getent → 사용자 및 그룹 정보 조회 명령어
- getent는 /etc/nsswitch.conf를 기반으로 로컬 + 네트워크 인증 정보 조회 가능
- /etc/passwd는 로컬 계정 정보 저장, NIS(Network Information Service)는 네트워크 계정 관리
- GUI 환경에서도 사용자 및 그룹 관리 가능 (gnome-control-center users)
✅ 즉, getent는 로컬뿐만 아니라 네트워크 인증 서비스에서도 사용자 정보를 조회할 수 있어 더욱 강력한 명령어!
📌 프로세스 관리 및 우선순위 설정 명령어
1. 프로세스 확인 명령어
명령어 | 설명 |
ps | 현재 실행 중인 프로세스 목록 출력 (ps aux 또는 ps -ef 사용) |
pstree | 프로세스 간 종속 관계를 트리 구조로 출력 (pstree -p → PID 포함) |
top | CPU, RAM, Swap 사용량을 실시간으로 모니터링 (top -d 5 → 5초마다 갱신) |
pmap | 특정 PID의 메모리 사용 정보를 출력 (pmap <PID>) |
fuser | 특정 파일/포트를 사용 중인 프로세스 확인 (fuser -v /path/to/file) |
🔹 ps (프로세스 목록 확인)
- 기본 사용법:
ps aux # BSD 스타일 ps -ef # UNIX 스타일
🔹 pstree (프로세스 트리 구조 출력)
- 부모-자식 관계를 한눈에 확인 가능
- 예제:
pstree -psystemd(1)─┬─sshd(789)───bash(1024)───top(1056) ├─cron(900) ├─cupsd(850)
🔹 top (실시간 프로세스 모니터링)
- 실행 후 기본 단축키:
- Space → 화면 갱신
- k → 특정 프로세스 종료 (PID 입력 후 엔터)
- i → Idle 및 좀비 프로세스 숨기기
- d → 갱신 주기 변경 (기본값: 3초)
- 특정 프로세스 종료:⚠ 주의:
- Xorg 같은 그래픽 프로세스를 종료하면 GUI가 멈출 수 있음!
-
k 1234 # PID 1234 프로세스 종료
2. 프로세스 종료 및 제어 명령어
명령어 | 설명 |
kill <PID> | 특정 PID를 종료 |
killall <프로세스명> | 특정 프로세스명을 가진 모든 프로세스 종료 |
pkill <프로세스명> | killall과 유사하지만, 패턴 매칭 가능 |
skill <옵션> <프로세스명> | 명령어 기반으로 프로세스를 제어 (예: skill -STOP firefox) |
✅ kill 옵션 (시그널)
옵션 | 설명 |
-1 (SIGHUP) | 프로세스 재실행 (설정 파일 다시 로드) |
-9 (SIGKILL) | 즉시 종료 (강제 종료) ⚠ |
-15 (SIGTERM) | 정상 종료 (기본값) |
-19 (SIGSTOP) | 프로세스 일시 정지 |
-CONT | 일시 정지된 프로세스 다시 실행 |
🔹 예제
3. 프로세스 우선순위 설정 (nice & renice)
명령어 | 설명 |
nice | 새로운 프로세스를 특정 우선순위로 실행 |
renice | 실행 중인 프로세스의 우선순위 변경 |
✅ 우선순위 값 (-20 = 최고, 19 = 최저, 기본값 10)
- 높은 우선순위 (-n -10) → CPU 점유율 증가
- 낮은 우선순위 (-n 15) → CPU 사용량 제한
🔹 새로운 프로세스를 우선순위 -15로 실행
🔹 실행 중인 프로세스(PID 1234)의 우선순위 변경
🔹 특정 사용자(user1)의 모든 프로세스 우선순위 변경
📌 추가 설정:
- /etc/security/limits.conf 파일에서 nice 값을 조정 가능
- 일반 사용자는 기본값보다 낮은 우선순위(높은 성능)로 변경 불가 (root만 가능)
🔎 결론
- 프로세스 확인
- ps aux → 현재 실행 중인 프로세스 조회
- pstree -p → 트리 형태로 부모-자식 관계 확인
- top → 실시간 프로세스 모니터링 (k로 종료 가능)
- 프로세스 종료
- kill <PID> → 특정 프로세스 종료
- killall <프로세스명> / pkill <프로세스명> → 특정 프로세스명으로 전체 종료
- skill -STOP <PID> → 프로세스 일시 정지
- 프로세스 우선순위 조정
- nice -n -15 명령어 → 높은 우선순위로 실행
- renice -10 -p <PID> → 실행 중인 프로세스 우선순위 변경
✅ 즉, top과 kill을 조합하면 실시간으로 CPU 사용량을 확인하고 문제 프로세스를 쉽게 종료할 수 있음!
📌 메모리 관리 & 백그라운드 작업 명령어
1. 메모리 관리 명령어 (free, sync)
✅ 메모리는 시스템에서 중요한 요소이지만, 오래 사용하면 캐시 메모리가 불필요하게 쌓여 성능 저하 가능
- free → 메모리 사용량 확인
- sync → 메모리 버퍼 데이터를 디스크에 저장
🔹 free (메모리 사용량 확인)
🔹 출력 예시:
- total → 총 메모리
- used → 사용 중인 메모리
- free → 사용 가능한 메모리
- buff/cache → 캐시된 메모리 (사용 가능하지만 현재 캐시로 잡혀 있음)
📌 캐시 메모리 정리 (메모리 확보)
⚠ 주의: 캐시 정리는 자주 하지 않는 것이 좋음! (시스템 성능 저하 가능)
🔹 sync (메모리 버퍼 데이터를 디스크에 저장)
- 디스크에 쓰이지 않은 데이터를 강제로 저장
- 파일 시스템 충돌 방지, 데이터 손실 예방
- 사용법:
sync
✅ sync + drop_caches 조합 사용 (캐시 메모리 정리)
➡ 디스크에 저장되지 않은 데이터를 먼저 sync로 저장하고, 캐시를 정리하여 메모리 확보
2. 백그라운드 작업 & 프로세스 제어 명령어
✅ 백그라운드에서 실행하면 터미널이 닫혀도 작업이 계속 실행됨
- & → 백그라운드 실행
- jobs → 현재 백그라운드 작업 확인
- fg %job_id → 백그라운드 작업을 다시 포그라운드로 이동
- bg %job_id → 백그라운드에서 멈춘 작업을 다시 실행
- disown → 백그라운드 작업을 쉘에서 분리 (터미널 종료해도 작업 유지)
🔹 백그라운드 실행 (&)
➡ tar 명령어를 백그라운드에서 실행 (터미널을 닫아도 실행 유지)
🔹 현재 백그라운드 작업 확인 (jobs)
🔹 출력 예시:
➡ [1]+ → 현재 실행 중인 첫 번째 백그라운드 작업
➡ [2]- → 두 번째 작업이 Stopped(일시 정지) 상태
📌 옵션
- jobs -p → 백그라운드 작업의 PID만 출력
- jobs -r → 실행 중인 작업만 출력
- jobs -s → 일시 정지된 작업만 출력
🔹 백그라운드 작업 재개 (bg)
- 일시 정지된 작업을 다시 백그라운드에서 실행
➡ [2]번 작업(정지된 vim file.txt)을 다시 실행
🔹 포그라운드로 이동 (fg)
- 특정 백그라운드 작업을 다시 포그라운드로 실행
➡ [1]번 작업을 포그라운드로 이동
🔹 터미널 종료 후에도 작업 유지 (disown)
➡ [1]번 작업을 쉘과 분리하여 터미널이 닫혀도 실행 유지
🔎 결론
- 메모리 관리
- free -h → 메모리 사용량 확인
- sync → 메모리 버퍼 데이터를 디스크에 저장
- sync; echo 3 > /proc/sys/vm/drop_caches → 캐시 메모리 정리 (주의해서 사용!)
- 백그라운드 작업 제어
- 명령어 & → 백그라운드 실행
- jobs → 백그라운드 작업 확인
- fg %번호 → 백그라운드 작업을 포그라운드로 이동
- bg %번호 → 정지된 작업을 다시 실행
- disown -h %번호 → 작업을 쉘에서 분리 (터미널 종료해도 유지)
✅ 즉, sync는 데이터 보호를 위한 필수 명령어, disown을 활용하면 터미널 종료 후에도 작업이 유지됨!
📌 시스템 사용자 정보 확인 명령어
1. 주요 명령어 정리
명령어 | 설명 |
who | 현재 로그인한 사용자 정보 조회 |
w | 로그인한 사용자 + 실행 중인 프로세스 확인 |
users | 현재 로그인한 사용자 목록 출력 |
whoami | 현재 사용자의 계정명 출력 |
last | 로그인 성공 기록 (/var/log/wtmp 사용) |
lastb | 로그인 실패 기록 (/var/log/btmp 사용) |
✅ 로그인 기록 관련 파일
파일 | 설명 |
/var/log/wtmp | 로그인 성공 기록 저장 (last 명령어 사용) |
/var/log/btmp | 로그인 실패 기록 저장 (lastb 명령어 사용) |
/var/run/utmp | 현재 로그인 사용자 정보 (who, w, users, finger 사용) |
2. 명령어별 상세 설명
🔹 who (현재 로그인한 사용자 정보 확인)
🔹 출력 예시:
- user1, user2 → 현재 로그인한 사용자
- pts/0, pts/1 → 터미널 유형 (GUI 에뮬레이터 터미널)
- (192.168.1.100) → 원격 접속한 IP 주소
✅ 추가 옵션
🔹 w (로그인 사용자 + 실행 중인 프로세스 확인)
🔹 출력 예시:
- IDLE → 사용자가 입력 없이 대기한 시간
- JCPU → 해당 터미널에서 실행된 전체 CPU 사용 시간
- PCPU → 현재 실행 중인 프로세스의 CPU 사용 시간
- WHAT → 실행 중인 명령어
🔹 users (현재 로그인한 사용자 목록 확인)
🔹 출력 예시:
➡ 현재 로그인한 사용자만 간단하게 표시
🔹 whoami (현재 로그인한 사용자 확인)
🔹 출력 예시:
➡ 현재 로그인한 사용자의 계정명 출력
✅ root 권한 확인
➡ 출력이 0이면 root 계정
🔹 last (로그인 성공 기록 확인)
🔹 출력 예시:
- user1, user2 → 로그인한 사용자
- 192.168.1.100 → 로그인한 IP 주소
- still logged in → 현재 로그인 중
- reboot → 시스템 재부팅 기록
✅ 마지막 10개의 로그인 기록만 출력
✅ 특정 사용자(user1)의 로그인 기록 확인
🔹 lastb (로그인 실패 기록 확인)
🔹 출력 예시:
- ssh:notty → 원격 로그인 실패
- 192.168.1.102 → 로그인 실패를 시도한 IP 주소
✅ 로그인 실패 기록 삭제
3. 로그인 기록 관련 파일 (wtmp, btmp, utmp)
파일 | 설명 |
/var/log/wtmp | 로그인 성공 기록 저장 (last 사용) |
/var/log/btmp | 로그인 실패 기록 저장 (lastb 사용) |
/var/run/utmp | 현재 로그인 사용자 정보 저장 (who, w, users, finger 사용) |
✅ 로그 파일을 직접 읽을 경우 깨져 보일 수 있음 → strings 사용
✅ 로그 파일 초기화 (보안 목적)
🔎 결론
- 현재 로그인한 사용자 확인
- who → 로그인한 사용자 확인
- w → 로그인 사용자 + 실행 중인 프로세스 확인
- users → 로그인 사용자 목록 출력
- whoami → 현재 사용자의 계정명 출력
- 로그인 기록 조회
- last → 로그인 성공 기록 (/var/log/wtmp)
- lastb → 로그인 실패 기록 (/var/log/btmp)
- 로그 기록 관련 파일
- /var/log/wtmp → 로그인 성공 기록 저장
- /var/log/btmp → 로그인 실패 기록 저장
- /var/run/utmp → 현재 로그인 사용자 정보 저장
✅ 즉, last와 lastb를 활용하면 로그인 시도 및 보안 위험을 쉽게 파악할 수 있음! 🚀
'Linux' 카테고리의 다른 글
리눅스 과정 12일차 (1) | 2025.03.05 |
---|---|
리눅스 과정 11일차 (1) | 2025.03.04 |
리눅스 과정 8일차 (0) | 2025.02.27 |
리눅스 과정 7일차 (0) | 2025.02.26 |
리눅스 과정6일차 (0) | 2025.02.26 |