CAB TA 4기 14일차의 기록

Urban Jungle·2025년 3월 31일

CAB TA 4기

목록 보기
14/28

사용자 및 그룹 관리 실습 2

1. 초기화 및 vagrant 사용자 복구

기존 사용자 모두 삭제 (예: user01 등)

userdel -r user01
userdel -r user02
userdel -r user03
userdel -r testuser01
userdel -r vagrant

  • -r 옵션을 사용해야 홈 디렉토리까지 같이 삭제됨

2. vagrant 사용자 재생성 + sudo 권한 부여

useradd -m -s /bin/bash vagrant
passwd vagrant

wheel 그룹에 추가

usermod -aG wheel vagrant

  • wheel 그룹은 /etc/sudoers 파일에서 sudo 사용 허용됨

vagrant 사용자로 전환

su - vagrant

root 권한 일회성 전환

sudo -i

3. 기본값 변경

홈 디렉토리 기본 경로 /home1, 기본 쉘 /bin/sh

useradd -D -b /home1 -s /bin/sh

  • 확인: useradd -D

4. 사용자 생성

사용자: user01
UID: 1001
GID: 1001
보조그룹: 1000
홈디렉토리: /home/user01 (기본값 무시)
쉘: /bin/bash

groupadd -g 1001 user01
useradd -u 1001 -g 1001 -G 1000 -d /home/user01 -s /bin/bash user01


사용자: user02
UID: 2000
GID: 1000
보조그룹: 10
홈디렉토리: /home/user02
쉘: /bin/bash

useradd -u 2000 -g 1000 -G 10 -d /home/user2 -s /bin/bash user02


사용자: user03
UID: 2001
GID: 2001
보조그룹: wheel
홈디렉토리: /home/user03
쉘: /bin/bash

groupadd -g 2001 user03
useradd -u 2001 -g 2001 -G wheel -d /home/user3 -s /bin/bash user03


사용자: testuser01
UID: 2002
GID: 1000
보조그룹: 없음
홈디렉토리: /home/testuser01
쉘: /bin/sh

useradd -u 2002 -g 1000 testuser01

  • 기본값 설정 덕분에 /home1에 생성되고, 쉘도 /bin/sh

5. 기본값 다시 /home, /bin/bash로 변경

useradd -D -b /home -s /bin/bash

6. 수정 작업

user02 홈디렉토리 변경 → /home/user02

usermod -md /home/user02 user02

  • -m 옵션이 없으면 디렉토리만 등록되고 실제 이동은 안 됨
    -md 함께 써야 파일도 함께 이동됨

testuser01user04 변경

usermod -l user04 -c "user4" -md /home/user04 -s /bin/bash testuser01

  • -l : 계정명 변경
  • -c : comment
  • -md : 홈 디렉토리 변경 및 이동
  • -s : 쉘 변경

7. 마무리 체크

/etc/passwd 확인

tail -n 5 /etc/passwd

id 확인

id user01
id user02
id user03
id user04

요약 명령어 정리표

  • 기본값 설정: useradd -D -b /home1 -s /bin/sh
  • 사용자 생성: useradd -u UID -g GID -G 보조 -d 홈 -s 쉘 사용자
  • 사용자 전환: su - 사용자
  • sudo 권한: usermod -aG wheel 사용자
  • 계정 변경: usermod -l newname oldname
  • 홈디렉토리 이동: usermod -md /새홈 사용자
  • 쉘 변경: usermod -s /bin/bash 사용자
  • comment 변경: usermod -c "설명" 사용자

그룹 생성

1. 그룹 생성

newgroup01 - GID: 4000
newgroup02 - GID: 10

groupadd -g 4000 newgroup01
groupadd -og 10 newgroup02

2. 그룹명과 GID 변경

newgroup01 → 이름 newgroup, GID 1000

groupmod -og 1000 -n newgroup newgroup01

newgroup02 → 이름 newgroup01, GID 4000

groupmod -g 4000 -n newgroup01 newgroup02

  • -g: GID 변경
  • -n: 그룹명 변경

3. 사용자 그룹 구성

user01newgroup 구성원

usermod -aG newgroup user01

user02newgroup01 구성원

usermod -aG newgroup01 user02

  • -aG: 기존 보조 그룹 유지하면서 추가

4. 그룹 구성원 확인

grep newgroup /etc/group
grep newgroup01 /etc/group

또는

getent group newgroup
getent group newgroup01

또는

id user01
id user02
egrep 'user01|user02' /etc/group

5. 그룹 삭제

groupdel newgroup

에러발생 -> id vagrant
-> usermod -g 1000 vagrant -> id vagrant
-> groupdel newgroup -> 삭제완료

groupdel newgroup01

  • 그룹 삭제 전, 해당 그룹을 보조그룹으로만 사용하는 경우에만 삭제 가능
    → 기본 그룹으로 사용 중이면 usermod -g 다른그룹 사용자로 변경 필요

6. 사용자 비활성화 상태라면 활성화

예: user01, user02, user03 잠겨 있었다면

usermod -U user01
usermod -U user02
usermod -U user03

  • U: unlock
  • 확인: passwd -S user01

전체 요약 명령어 정리

  • 그룹 생성: groupadd -g GID 그룹명
  • 그룹명 + GID 변경: groupmod -g GID -n 새이름 기존이름
  • 사용자 보조 그룹 추가: usermod -aG 그룹명 사용자
  • 그룹 확인: getent group 그룹명
  • 그룹 삭제: groupdel 그룹명
  • 사용자 활성화: usermod -U 사용자

확장 권한 실습

1. user01/etc/shadowcat으로 읽을 수 있도록 설정

/etc/shadowroot 전용 접근 (600 권한, root:root)

해결 방법: cat 명령어에 setuid 설정 → 실행 시 root 권한 부여

cp /bin/cat /usr/local/bin/cat_shadow
chmod u+s /usr/local/bin/cat_shadow
chown root:root /usr/local/bin/cat_shadow

검증

ls -l /usr/local/bin/cat_shadow
# -rwsr-xr-x 1 root root ...

user01로 전환하여 테스트

su - user01
/usr/local/bin/cat_shadow /etc/shadow

  • 결과: /etc/shadow 내용을 읽을 수 있어야 함

2. /ptest 내 파일들이 항상 user02 그룹을 갖도록 설정

단계 1: 디렉토리 생성

mkdir -m 2777 /ptest

단계 2: 소유 그룹을 user02로 설정

chown :user02 /ptest

단계 3: setgid 설정

chmod g+s /ptest

또는

chmod 2775 /ptest

  • 이후 /ptest에 만들어지는 모든 파일/디렉토리의 그룹이 user02로 자동 설정됨

3. /ptest/dir01 안의 파일/디렉토리를 만든 사용자 or root만 삭제 가능하게끔

단계 1: 디렉토리 생성

mkdir -m 777 /ptest/dir01

단계 2: sticky bit 설정

chmod o+t /ptest/dir01

또는

chmod 1777 /ptest/dir01

  • 파일/디렉토리 삭제 제한: 생성자 or root만 가능

  • 보안성 있는 공동작업 디렉토리 설정 시 주로 사용 (/tmp도 같은 구조)

실전 팁

setuid: chmod u+s 파일
setgid: chmod g+s 디렉토리
sticky bit: chmod +t 디렉토리

최종 검증 방법

/etc/shadow 읽기: su - user01 && /usr/local/bin/cat_shadow /etc/shadow
/ptest 내 그룹 유지: touch /ptest/testfile && ls -l /ptest
sticky bit 확인: ls -ld /ptest/dir01 (t 플래그 확인)


at 명령어 – 단일성 예약

at <timespec>: 지정 시간에 명령어 한 번 실행
at -l 또는 atq: 예약 목록 확인
at -c <번호>: 예약 작업 내용 확인
atrm <번호>: 예약 작업 삭제

  • 결과를 확인하려면 → 파일로 저장하거나 메일로 받아야 함

timespec 예시

now +3 min: 지금부터 3분 뒤
teatime: 오후 4시
midnight: 자정
noon tomorrow: 내일 정오
04:00 PM 2/23/22: 날짜 지정 가능
12:00 PM today: 오늘 정오


at 실습 정리

1. 3분 뒤 ps -ef > psfile01 실행

at now +3 min
at> ps -ef > psfile01
<Ctrl + D>

2. 23년 8월 1일 0시에 date 실행 (메일로 결과 수신)

at 00:00 23-08-01
at> date
<Ctrl + D>

3. 오늘 오후 12시에 cal 실행 (메일로 결과 수신)

at 12:00 PM today
at> cal
<Ctrl + D>

4. 내일 오후 4시에 ps -ef > psfile02 실행

at teatime tomorrow
at> ps -ef > psfile02
<Ctrl + D>

5. 예약 확인

atq


cron 명령어 – 반복성 예약

crontab -e: 예약 작업 편집
crontab -l: 예약 목록 확인
crontab -r: 모든 예약 삭제
crontab <파일>: 예약 내용을 외부 파일로부터 등록

시간 설정 형식

분 시 일 월 요일 command

분: 0-59
시: 0-23
일: 1-31
월: 1-12 (Jan~Dec 가능)
요일: 0-7 (0 or 7: 일요일) (Mon~Sun 가능)


cron 실습 정리

1. 매년 1월 첫 번째 일요일 자정 재부팅

0 0 1-7 1 0 reboot

2. 매월 13~17시 사이 10분마다 date >> datefile01

*/10 13-17 * * * date >> datefile01

외부 파일로 예약 작업 관리

3. test 파일에 아래 작업 내용 추가 (vim 사용)

vim test

내용

# 3. 3,6,9월 둘째 화요일 오후 2시 20분
20 14 8-14 3,6,9 2 cat /etc/passwd > userfile

# 4. 매주 수~금 오후 5시 secure 로그 추출
0 17 * * 3-5 egrep '^... .. (0[89]|1[0-7])' /var/log/secure > securefile

4. 해당 작업 예약 등록

crontab test

5. 작업 예약 목록 확인

crontab -l

예약 수정/삭제

6. 3번 작업 삭제 (crontab -e로 직접 삭제)

crontab -e
# 3번 라인 삭제
:wq

7. 모든 작업 삭제

crontab -r

핵심 요약 표


디스크 전체 설정 순서 요약

디스크 인식
→ 파티션 생성 (fdisk)
→ 파일시스템 생성 (mkfs, mkswap)
→ 마운트 (mount, swapon)
→ 자동 마운트 설정 (/etc/fstab)

명령어 및 실습 내용 정리

1. 디스크 인식

echo '- - -' > /sys/class/scsi_host/host0/scan # 또는 host1, host2...
lsblk # 디스크 상태 확인

2. 파티션 생성 (/dev/sdb 기준)

MBR 파티션 테이블

fdisk /dev/sdb

  • p: primary
  • e: extended
  • +2G: 2GB 크기 지정
  • w: 저장

3. 파티션 인식 강제 등록

partprobe /dev/sdb

4. 파일시스템 포맷

ext4

mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
mkfs.ext4 /dev/sdb3

xfs

mkfs.xfs /dev/sdb5
mkfs.xfs /dev/sdb6
mkfs.xfs /dev/sdb7
mkfs.xfs /dev/sdb8

5. 수동 마운트

mkdir /mnt/disk{1..3}
mount /dev/sdb1 /mnt/disk1
mount /dev/sdb2 /mnt/disk2
mount /dev/sdb3 /mnt/disk3

확인

df -Th
lsblk

6. 자동 마운트 설정

vim /etc/fstab

추가

/dev/sdb1 /mnt/disk1 xfs defaults 0 1
/dev/sdb2 /mnt/disk2 xfs defaults 0 1
/dev/sdb3 /mnt/disk3 xfs defaults 0 1

저장 후 마운트

mount -a

7. 모든 파티션 삭제

fdisk /dev/sdb
d (반복해서 모두 삭제)
w
partprobe /dev/sdb

8. 스왑 설정 실습

1G / 2G / 3G 크기의 주파티션 생성

mkswap /dev/sdb1
mkswap /dev/sdb2
mkswap /dev/sdb3

수동 마운트

swapon /dev/sdb1

자동 마운트 설정

vim /etc/fstab

추가

/dev/sdb2 swap swap defaults 0 0
/dev/sdb3 swap swap defaults 0 0

swapon -a

9. 스왑 상태 확인

free -h
swapon -s
lsblk

10. sticky bit + setgid 연습

디렉토리 생성 및 설정

mkdir /ptest
chmod 2777 /ptest
chown :user02 /ptest

확인

touch /ptest/file1
mkdir /ptest/dir1
ls -l /ptest

  • 그룹이 user02, 권한에 s 있음 (setgid)

sticky bit 설정

mkdir /ptest/dir01
chmod 1777 /ptest/dir01
ls -ld /ptest/dir01

  • 권한에 t 있음 → 생성자 또는 root만 삭제 가능

실습 후 확인 리스트

  • 블록 장치 확인: lsblk
  • 마운트 상태 확인: df -Th
  • 스왑 상태 확인: free -h, swapon -s
  • 파일시스템 종류 확인: blkid
  • fstab 확인: cat /etc/fstab
  • 권한/sticky/setgid: ls -ld

마무리

  • XFS로 다시 포맷할 땐 -f 옵션 필수: mkfs.xfs -f /dev/sdb1
  • 마운트 실패 시 mount -a 대신 /etc/fstab 경로, UUID 등을 점검
  • sticky bit (t): 공동 디렉토리 접근 + 파일 보호 용도로 /tmp에서 기본 사용

profile
똑똑해지고 싶은 공학도

0개의 댓글