카테고리 없음

16일차

pulttaegi 2026. 5. 21. 12:02
반응형

[ 실습 전 싱글 부트를 꼭 진행해준다. ]

 

#0. 사전 설정
# mkdir -p /export/sdb/home sevas 계정을 옮길 위치 만들기
# cd /export/sdb/home/
현재 위치를 /export/sdb/home/ 경로로 이동
# usermod -md /export/sdb/home/sevas sevas
기존 sevas 계정 이동시키기
# cat /etc/passwd |grep sevas
sevas:x:1000:1000:sevas:/export/sdb/home/sevas:/bin/bash

이동 되었는지 확인 후 아래와 같이 출력되는지 확인


# 1. 스켈레톤 기본 디렉토리 생성
# mkdir -p /skel2/ftp_admin/pub/
# touch /skel2/ftp_admin/pub/ sevas_test
지정한 경로에 디렉토리(폴더)를 한 번에 생성
여기서 skel2는 아직 그냥 일반 디렉토리임
# mkdir -p /skel2/main/html
# touch  /skel2/main/html/index.html
지정한 경로에 디렉토리(폴더)를 한 번에 생성
main 계정을 새로 생성시, 그 계정의 홈 디렉토리 안에 html이라는 폴더가 자동으로 들어가서 태어나도록 skel2 안에 미리 세팅하는 것임


# 2. main 계정용 index.html 파일 생성 및 내용 삽입
# echo "i love sevas" > /skel2/main/html/index.html
# cat > /skel2/main/html/index.html
   i love sevas
   ^C
html 폴더 안에 index.html이라는 파일을 새로 만들면서,
그 안에 i love sevas라는 문장을 삽입함
# cat /skel2/main/html/index.html
i love sevas  출력 되는지 확인


# 3. sevas라는 내용 삽입

# echo "sevas" > /skel2/ftp_admin/pub/sevas_test
# cat > /skel2/ftp_admin/pub/sevas_test
   sevas
   ^C
기존 sevas 계정 홈 디렉토리에 있던 모든 파일과 숨김 파일까지 전부 복사해서 스켈레톤 보관함에 집어넣는 명령어


#4. 계정 생성 및 자동 설정
 1. ftp_admin 계정 생성 (자동으로 스켈레톤 복사됨)
useradd -d /export/sdb/home/ftp_admin -mk /skel2/ftp_admin  ftp_admin  
 2. main 계정 생성 (자동으로 스켈레톤 복사됨)
useradd -d /export/sdb/home/main -mk /skel2/main main  
 3. ftpuser 계정 생성
useradd -d /export/sdb/home/ftpuser ftpuser  

 4. ftp_admin 그룹에 대한 권한 부여
chmod 750 /export/sdb/home/ftp_admin
 


#5. ftpuser를 ftp_admin 그룹에 가입
 1. usermod로 그룹 가입
usermod -G ftp_admin ftpuser  


#6. 실습 제대로 했는지 최종 확인
계정에 접속해서 자신의 home 디렉토리에 무엇이 있는지 ls -la로 확인

① 모든 계정이 홈에 위치하며 권한만 변경되었는지 확인
cd /export/sdb/home  
ls -l
 
확인 포인트: ftp_admin 디렉토리의 권한이 drwxr-x--- 형태로 되어 있는지
                     소유자와 그룹이 여전히 ftp_admin ftp_admin인지 확인

② main 계정 내부 구조와 index.html 내용 확인
ls -lR main  
  cat main/html/index.html  
확인 포인트: 스켈레톤을 통해 html/index.html이 자동 생성되어 소유자가 main으로 잡혀있는지 확인
                     cat 결과로 i love sevas가 찍히는지 확인

③ ftp_admin 자동 구성 및 읽기 전용 권한 확인
ls -lR ftp_admin  
확인 포인트: pub/sevas_test 구조가 보이고,
                     pub 폴더의 권한이 dr-xr-x--- (550)로 설정되어 쓰기 권한(w)이 안전하게 빠져 있는지 확인

④ ftpuser의 그룹 가입 상태 최종 확인 
cat /etc/group | grep ftp_admin  
확인 포인트: 출력 결과가 ftp_admin:x:1001:ftpuser로 나오는지 마지막으로 점검
                     이 상태면 ftpuser가 그룹 권한을 이용해 ftp_admin/pub에 읽기 전용으로 접근할 수 있게 됨

 

증명 내용 확인 명령어 정상적인 결과 화면
sevas 계정의 홈 디렉토리가 제대로 이사했는지 cat /etc/passwd | grep sevas 경로가 /export/sdb/home/sevas로 출력됨
ftpuser가 ftp_admin 그룹에 정상적으로 가입됐는지 cat /etc/group | grep ftp_admin ftp_admin:x:GID:ftpuser 처럼 맨 끝에 ftpuser 이름이 박혀있음
ftpuser가 그룹 권한으로 진입할 수 있고, 타인은 차단됐는지 ls -ld /export/sdb/home/ftp_admin 권한 부분이 drwxr-x---로 출력됨 (맨 끝 ---는 타인 차단, 중간 r-x는 그룹 허용)
main 계정이 수작업이 아니라 /skel2를 통해 자동으로 생성된건지 ls -lR ~main html/index.html 구조가 보이고, 파일 소유자가 root가 아닌 **main main**으로 자동 지정되어 있음

모든 계정의 집은 /export/sdb/home 하위에 배치되어야 하며, 최종 형태는 다음과 같아야 함

/export/sdb/home/
├── sevas/          <-- [기존 계정 이동] 원래 쓰던 파일들이 이 안으로 이사 옴
├── main/           <-- [자동 생성] 
│   └── html/
│       └── index.html  <-- 내부에 "i love sevas" 텍스트가 적혀있음
└── ftp_admin/      <-- [자동 생성] 
    └── pub/        <-- ftpuser가 로그인하면 여기로 읽기 접근 가능 (쓰기 차단)
        └── sevas_test/ <-- 내부에 기존 sevas의 파일들이 그대로 복사되어 들어있음

 

# mkdir -p /export/sdb/home

# ls -ld /

 

 

# tail -3 /etc/passwd

 

# find / -name sevas

# usermod -md /export/sdb/home/sevas sevas

# cd ~sevas

# pwd

# tail -3 /etc/passwd |grep sevas

# ls -l /export/sdb/home

권한이 700인거 확인 (rwx------)


 

 

 

 

Other에 권한이 없기 때문에 허가 거부가 남

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c : 특수 장치 파일(문자 형태), b : 블럭장치(용량)
/dev/zero : 0으로 채워진 무한대 공간, /dev/null : 빈 공간
버릴때 사용함
setUID가 된 것들이 출력됨
동작중일때 나오는 에러 메시지
에러 메시지를 삭제할때나,
필요없는 출력 메시지를 없앨때 사용함
가상 디스크 만들시 사용함
흔적을 남기지 않을때 사용하는 명령어


 

PATH

 

 

명령어 위치 찾기

 

 

[ 실습 ]

 

 

alias와 환경변수의 차이는 ??

alias는 명령어의 단축만 할 뿐, 경로를 담지 못함 그에비해 환경변수는 더 포괄적으로 여러 내용을 담을 수 있음

 

 

 

 

 

 

cat .bashrc
cat .bash_profile

 

 

 

 

 

 

현재는 이 방식만 사용

영구 설정으로 다시 시작해도 적용이 됨

리눅스 시험에 자주나옴

PS1=소소대 \s@\h \W

소문자 w는 절대경로, 대문자 W는 절대경로

가장 많이 사용하는 방식이다

 

 

 

PS1="🍃 \[\e[1;32m\]\u\[\e[0m\] \[\e[33m\]➔\[\e[0m\] \[\e[1;36m\]\w\[\e[0m\]\n🌱 "

 

PS1=" 🌱 \[\e[33m\][\t]\[\e[0m\] \[\e[1;32m\]\u@\h\[\e[0m\] \[\e[36m\]\w\[\e[0m\] 🍃 "

 

PS1="🌱 \[\e[1;32m\]\u@\h\[\e[0m\] \[\e[1;36m\]\w\[\e[0m\] 🌱 "

 

 

 

PROMPT_COMMAND='
  # 1;32(초록), 1;33(노랑), 1;36(청록), 1;35(연보라) - 검은 바탕 가시성 대장들
  COLOR_LIST=("1;32" "1;33" "1;36" "1;35")
  
  RANDOM_COLOR_1=${COLOR_LIST[$RANDOM % ${#COLOR_LIST[@]}]}
  RANDOM_COLOR_2=${COLOR_LIST[$RANDOM % ${#COLOR_LIST[@]}]}
  
  # 유저명과 디렉토리 색상이 겹치지 않도록 방지
  while [ "$RANDOM_COLOR_1" = "$RANDOM_COLOR_2" ]; do
    RANDOM_COLOR_2=${COLOR_LIST[$RANDOM % ${#COLOR_LIST[@]}]}
  done

  PS1="🌱 \[\e[${RANDOM_COLOR_1}m\]\u@\h\[\e[0m\] \[\e[${RANDOM_COLOR_2}m\]\w\[\e[0m\] 🌱 "
'

 

 

 

 

 

 PROMPT_COMMAND='
> COLOR_LIST=("1;32" "1;33" "1;34" "1;35")
> RANDOM_COLOR_1=${COLOR_LIST[$RANDOM % ${#COLOR_LIST[@]}]}
> RANDOM_COLOR_2=${COLOR_LIST[$RANDOM % ${#COLOR_LIST[@]}]}
>
> while [ "$RANDOM_COLOR_1" = "$RANDOM_COLOR_2" ]; do
>     RANDOM_COLOR_2=${COLOR_LIST[$RANDOM % ${#COLOR_LIST[@]}]}
> done
>
> PS1="🌱 \[\e[${RANDOM_COLOR_1}m\]\u@\h\[\e[0m\] \[\e[${RANDOM_COLOR_2}m\]\w\[\e[0m\] 🌱 "

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형