CAB TA 4기 13일차의 기록

Urban Jungle·2025년 3월 28일

CAB TA 4기

목록 보기
13/28


기본 명령어 Quiz

1. 재부팅을 시키는 명령어는?

reboot

2. 해당 명령어의 경로를 확인하는 명령어는?

which reboot

3. 현재 내 위치 확인

pwd

4. 실제 로그인한 사용자 확인 (who -m과 같음)

who am i

5. 명령어 기록 확인

history

6. UID, GID, 소속 그룹 확인

id

7. ls(1P) 매뉴얼 보기

man 1p ls


디렉토리 Quiz (tree 구조)

tree /alice를 수행한 결과

/
ㄴ alice/
   ㄴ book/
     ㄴ ant/
   ㄴ video/
ㄴ bob/
   ㄴ comic/

1. 상대경로로 comic 디렉토리로 이동 (현재: /alice/book)

cd ../../bob/comic

2. 메타문자로 원래 위치로 이동

cd -

3. 절대경로로 ant 디렉토리로 이동

cd /alice/book/ant

4. /tmp/로 이동 후에 /root/ 디렉토리로 다시 이동 /tmp/mtest 디렉토리 생성

cd /tmp/
cd
mkdir /tmp/mtest

5. /tmp/mtest 디렉토리 안에 za1~za10 파일과 zb01~zb10 파일과 zc001~zc100 파일을 만드시오.

cd /tmp/mtest
touch za{1..10}
touch zb{01..10}
touch zc{001..100}

6. 모든 파일을 삭제 하는데 za 파일은 [ ], zb 파일은 ?,
zc 파일은 *을 사용하시오.

rm za[1-9] za10
rm zb??
rm zc*

7. /media 디렉토리 안에 document 디렉토리를 만들고 그 안에 Music, Movie, Picture 디렉토리를 각각 만드시오.
그리고 music(00-20).mp3, movie(00-10).avi, picture(0-9).jpg 파일을 생성 후에 이름에 맞추어서 각각 넣으시오.
(document 디렉토리는 하위 디렉토리가 만들어질 때 같이 만들어지도록 하시오.)

mkdir -p /media/document/{Music,Movie,Picture}
touch music{00..20}.mp3
touch movie{00..10}.avi
touch picture{0..9}.jpg
mv music*.mp3 /media/document/Music
mv movie*.avi /media/document/Movie
mv picture*.jpg /media/document/Picture


리디렉션 & 출력 제어 Quiz

1. ps -ef 결과를 pfile01에 저장

ps -ef > pfile01

2. ls -R / 결과 값에서 오류 출력 없이 실행

ls -R / 2>/dev/null

3. rpm -qash 패턴만 추출

rpm -qa | grep sh

4. /media/document 디렉토리 및 하위 디렉토리의 파일 보기 (절대경로)

ls -R /media/document

5. 현재 위치를 /media/document로 변경

cd /media/document

6. Music 디렉토리를 이용해 /link_music이라는 링크파일 생성

ln -s /media/document/Music /link_music

7. Picture 디렉토리 /tmp/picture로 이동

mv /media/document/Picture /tmp/picture

8. Movie 디렉토리 /tmp/movie로 복사

cp -r /media/document/Movie /tmp/movie

9. 홈 디렉토리 내 document 제거 (확인 없이)

rm -rf ~/document


find Quiz

1. 전체 파일 시스템에서 소유주가 vagrant 사용자의 파일만 검색

find / -user vagrant -type f

2. 사용자의 홈 디렉토리 내 777 권한 파일을 755로 변경

find ~ -type f -perm 0777 -exec chmod 755 {} \;

3. /etc 내 심볼릭 링크 파일만 자세하게 출력 (출력시 확인하고 출력하게끔)

find /etc -type l -ok ls -l {} \;

4. /tmp에서 이름이 big으로 시작하는 파일을 찾아 상세정보 출력

find /tmp -type f -name 'big*' -ls


grep Quiz

1. /etc/passwd에서 'nobody' 검색

grep 'nobody' /etc/passwd

2. /etc/login.defs에서 주석 제외 후 new라는 파일로 저장 (주석은 #로 시작)

grep -v '^#' /etc/login.defs > new

3. /rootfileA, fileB, fileC 생성 후 세로 출력

cd /root
echo -e "fileA\nfileB\nfileC"

4. /etc에서 'root' 단어가 포함된 파일 검색

grep -rl 'root' /etc

5. grep '5..$' datafile 동작방식 설명

  • 5로 시작하고 뒤에 문자 2개, 총 3글자인 줄 끝 매칭

6. grep '5..' datafile 동작방식 설명

  • 5로 시작하고 아무 문자 2개 이상 포함된 줄이면 전부 매칭

7. 대소문자 구분 없이 검색

grep -i '단어' 파일

8. /etc/passwd에서 bin 혹은 adm 라는 단어가 있는 줄을 찾는 방법

egrep 'bin|adm' /etc/passwd


Vim 단축키 Quiz

1. 파일의 마지막 줄로 이동:

G

2. 줄 복사:

yy

3. 파일의 처음으로 이동:

gg 또는 1G

4. 첫줄에 복사한 내용을 붙여넣기:

P

5. 파일의 라인 넘버 보기:

:set number

6. vim /etc/passwd 를 실행한 결과에서 root 라는 단어를 검색

/root


프로세스 & 백그라운드 Quiz

1. sleep 1000 명령어를 백그라운드로 실행

sleep 1000 &

2. sleep 프로세스를 kill 명령어로 중지

pkill sleep

kill -19 pid

3. sleep 프로세스를 프로세스명으로 다시 작동

sleep 1000 &

pkill -18 sleep

4. sleep 강제 종료

killall -9 sleep


아카이브 Quiz

1. vagrant 홈 디렉토리 gzip 압축

tar zcvf vagrant_home.tar.gz /home/vagrant

2. /tmp에 압축 해제

tar zxvf vagrant_home.tar.gz -C /tmp

3. tar 아카이브 내용 보기

tar tvf vagrant_home.tar.gz


주요 시스템 파일 정리

/etc/passwd: 사용자 기본 정보 (계정명, UID, GID, 홈, 쉘 등)
/etc/shadow: 암호 정보 (해시, 만료일, 변경일 등)
/etc/group: 그룹 정보 (그룹명, GID, 구성원)
/etc/default/useradd: 사용자 생성 기본값 설정 파일
/etc/login.defs: 추가 기본 설정 (홈 디렉토리 생성 여부 등)

/etc/passwd 형식

계정명:암호(X):UID:GID:코멘트:홈디렉토리:로그인쉘

예) user01:x:1001:1001::/home/user01:/bin/bash

/etc/shadow 형식

계정명:암호해시:최종변경일:min:max:warn:inactive:expire:

예) $6$SALT$HASHED_PASSWORD

  • $6$: SHA-512
  • SALT: 난수값
  • HASH: 입력+salt → 해시 결과

사용자 생성 관련 명령어

사용자 생성

useradd [옵션] 계정명

[option]

-u: UID 지정
-g: GID 지정 (기본 그룹)
-G: 보조 그룹 지정 (여러 개 가능)
-d: 홈 디렉토리 지정
-s: 로그인 쉘 지정 (ex: /sbin/nologin)
-c: 코멘트 지정
-m: 홈 디렉토리 생성
-b: 기본 홈 경로 변경
-D: 기본값 확인/수정

기본값 수정

vim /etc/default/useradd
또는
useradd -D -b /home1 -s /bin/bash

사용자 수정 관련 명령어

usermod [옵션] 계정명

[option]

-u: UID 변경
-g: GID 변경
-G: 보조 그룹 지정 (덮어씀)
-aG: 보조 그룹 추가
-d: 홈 디렉토리 변경만
-md: 홈 디렉토리 이동까지
-s: 쉘 변경
-l: 계정명 변경
-L: 계정 잠금
-U: 계정 잠금 해제

사용자 삭제

userdel [옵션] 계정명

[option]

-r: 홈 디렉토리, 메일함까지 삭제

그룹 관리 명령어

그룹 생성

groupadd -g GID 그룹명

그룹 수정

groupmod -g GID 그룹명
groupmod -n 새그룹명 기존그룹명

그룹 삭제

groupdel 그룹명

암호 관련 명령어

비밀번호 설정/변경

passwd 계정명

암호 속성 확인 및 설정

chage -l 계정명 # 현재 속성 보기
chage -m 10 -M 90 -W 7 계정명 # 최소 10일, 최대 90일, 7일 전 경고
chage -d 0 계정명 # 다음 로그인 시 비번 변경 요구

[option]

-m: 최소 사용일
-M: 최대 사용일
-W: 경고일
-I: 비활성일
-E: 만료일
-d: 최종 변경일

사용자 전환

su: 사용자 전환 (환경 일부 유지)
su -: 전체 환경까지 포함한 전환
sudo: 일회성 root 권한 (자기 비번)
sudo -i: root 셸로 전환 (su - root 효과)

  • sudo를 쓰기 위해서는 wheel 그룹에 포함되어야 함
    /etc/sudoers에서 wheel 그룹 허용 확인

실전 꿀팁

사용자 생성 + 홈 생성: useradd -m user01
기본 홈 경로 변경: useradd -D -b /home1
홈 디렉토리 변경 + 이동: usermod -md /new/home user01
비번 강제 변경 요구: chage -d 0 user01
계정명 변경: usermod -l newname oldname
사용자 삭제 + 홈 제거: userdel -r user01


사용자 생성 실습

사용자: user01
UID: 1001
GID: 10
보조그룹: 없음	
코멘트: 없음
홈 디렉토리: /home/user01
쉘: /bin/bash

useradd -g 10 user01


사용자: user02
UID: 2000
GID: 2000
보조그룹: wheel	
코멘트: user
홈 디렉토리: /home/user
쉘: /bin/sh

useradd -u 2000 -G wheel -c user -d /home/user -s /bin/sh user02


사용자: user03
UID: 3000
GID: 1000
보조그룹: 없음	
코멘트: 없음
홈 디렉토리: /home/user03
쉘: /bin/sh

useradd -u 3000 -g 1000 -s /bin/sh user03


사용자: user04
UID: 4000
GID: 4000
보조그룹: 10	
코멘트: guser
홈 디렉토리: /home/user04
쉘: /bin/bash

default 값 수정 실습

1. 기본 shell /bin/sh로 변경 (vim 사용)

vim /etc/default/useradd
# SHELL=/bin/bash → SHELL=/bin/sh로 변경
:wq

2. 기본 홈 디렉토리 /home1으로 변경

mkdir /home1
useradd -D -b /home1

3. 테스트 사용자 생성 및 확인

useradd testuser01
tail -2 /etc/passwd

사용자 정보 수정

1. user01: GID, 보조그룹 변경

usermod -g 1000 -G wheel user01

2. user02: UID, 보조그룹 추가, 코멘트, 홈 이동, shell 변경

usermod -u 1002 -aG adm -c "user02" -md /home/user02 -s /bin/bash user02

3. user03: UID, 그룹, shell 수정

usermod -u 1003 -G 10 -s /bin/bash user03

4. user04: UID, 보조그룹 추가

usermod -u 1004 -aG 2000 user04

5. testuser01user05로 이름 및 환경 변경

usermod -l user05 -md /home/user05 -s /bin/bash testuser01

그룹 관리 실습

1. user01용 그룹 생성 (GID=1001) 후 지정

groupadd -g 1001 user01
usermod -g 1001 user01

2. user02 GID 변경

groupmod -g 1002 user02

3. user03용 그룹 생성 (GID=1003) 후 지정

groupadd -g 1003 user03
usermod -g 1003 user03

4. user04 그룹 GID 변경

groupmod -g 1004 user04

비밀번호 속성 실습

1. user01의 최소/최대/경고일 설정

chage -m 10 -M 100 -W 10 user01

2. user02는 로그인 시 반드시 비번 변경

chage -d 0 user02

user01 홈디렉토리 삭제 및 재설정

rm -rf /home/user01
cp -r /etc/skel /home/user01
chown -R user01:user01 /home/user01
chmod 700 /home/user01


확장 권한 개념 정리

setuid

  • u+s
  • 파일 적용: ✅
  • 디렉토리 적용: ❌
  • 실행 시 파일 소유자 권한으로 실행

setgid

  • 'g+s'
  • 파일 적용: ✅
  • 디렉토리 적용: ✅
  • 파일: 그룹 권한으로 실행
  • 디렉토리: 하위 항목의 소유그룹을 상속

sticky bit

  • o+t
  • 파일 적용: ❌
  • 디렉토리 적용: ✅
  • 디렉토리 안 파일을 소유자와 root만 삭제 가능

확장 권한 설정 방법

setuid

chmod u+s 파일
chmod 4000 파일

setgid

chmod g+s 파일/디렉토리
chmod 2000 파일/디렉토리

sticky bit

chmod o+t 디렉토리
chmod 1000 디렉토리

확장 권한 실습

1. 사용자 생성

useradd user01
useradd user02
useradd user03

2. 디렉토리 생성 및 권한 부여

mkdir /ptest
chmod 2777 /ptest # rwxrwsrwx

또는

chmod a=rwx,g+s /ptest

3. user01로 전환 → 파일 & 디렉토리 생성

su - user01
mkdir /ptest/dir01
touch /ptest/file01

  • dir01file01의 소유그룹이 /ptest의 그룹을 따라 root로 되어 있음
    → 이것이 setgid 디렉토리 효과

4. root로 전환 → dir01 설정 변경

exit # root로 돌아옴
groupadd student
chown user01:student /ptest/dir01
chmod 1777 /ptest/dir01

  • chmod 1777 = rwxrwxrwt
    → 모두가 접근 가능하지만 삭제는 소유자만

5. /ptest/file01setuid 권한 부여

chmod u+s /ptest/file01

  • 실행 시 user01 권한으로 작동함

6. user02로 전환 → 하위 항목 생성

su - user02
mkdir /ptest/dir01/dir02
touch /ptest/dir01/file02

  • 소유그룹이 student로 상속되는 것을 확인 (setgid 효과)

7. user03로 전환 → file02 삭제 시도

su - user03
rm /ptest/dir01/file02 # → 실패 (sticky bit)

  • 에러 발생: dir01sticky bit가 설정되어 있기 때문

8. 같은 user03/ptest/file01은 삭제 가능

rm /ptest/file01 # → 성공 (sticky bit 없음)

확장 권한 검색 명령

1. setgid 권한이 설정된 파일/디렉토리 찾기

방법 1: find

find / -perm -2000 -ls 2>/dev/null

방법 2: ls + grep

ls -lR / | grep '^......s'

보충

ls -ld 디렉토리: 디렉토리 자체 권한 확인
stat 파일명: setuid/setgid/sticky 상태 확인 가능
chmod 4775 파일: setuid + 775 권한
chmod 1755 디렉토리: sticky bit + 일반 권한

profile
똑똑해지고 싶은 공학도

0개의 댓글