AWS re/Start 7일 (Linux 명령,계정및 그룹)

hankyo·2023년 6월 21일

AWS re/Start 공부기록

목록 보기
7/19

AWS re/Start 에서제공하는 Lab의 EC2 t3.micro 인스턴스의 AMI(아마존 머신 이미지) 는 Amazon Linux 이다.

Amazon Linux
Red Hat Enterprise Linux 기반의 Amazon에서 만든 Linux 배포판

Amazon Linux의 명령어를 실습하였다.

명령어 실습

## 현재 사용자 이름 출력
whoami

## 축약된 버전의 컴퓨터 호스트 이름표시
hostname -s

## 시스템의 가동 시간을 읽기 쉬운 형식으로 표시
uptime -p

## 로그인한 사용자의 정보 및 추가 정보
who -H -a

## 타임존=아메리카/뉴욕 날짜 시간 표시
TZ=America/New_York date

## 타임존=아메리카/로스엔젤로스 날짜 시간 표시
TZ=America/Los_Angeles date

## 율리우스 날짜
cal -j

## 달력 표시 -s 일요일기준 -m 월요일기준
cal -s
cal -m

## 자신의 고유한 ID와 특정 사용자의 그룹 정보를 표시
id ec2-user
## 현재 bash 기록 표시
history

## 이전 기록 검색은 CTRL+R (역방향 기록 검색)
## 키워드 입력 후 Tab키 

## 최근 명령 다시 실행
!!

사용자 및 그룹 관리

사용자 생성

## 현재 디렉토리 위치 확인
pwd

## 사용자 생성 User ID
sudo useradd <User ID>

## 비밀번호 지정
sudo passwd <User ID>

## 사용자 생성 확인
## cat: 파일의 내용 화면에 출력
## cut: 문자열을 잘라내서 새로운 문자열 생성
sudo cat /etc/passwd | cut -d: -f1
## /etc/passwd 내용 출력 하면서(cat) 그 문자를 잘라내는데(cut) :를 구분자로 하고(-d) 1번째 필드를 기준으로 잘라냄(-f1)

사용자생성 실습

이름사용자 ID직무시작 암호
AlejandroRosalezarosalezSales ManagerP@ssword1234!
EfuaOwusueowusuShippingP@ssword1234!
LiJuanljuanHR ManagerP@ssword1234!

위 사용자ID를 만들고 암호를 지정하시오

  • vi로 user.txt 에 위의 표 내용을 만든다.
  • vi로 makeuser.sh 를 만든다.

makeuser.sh

#!/bin/bash
# user.txt 파일 경로
USER_FILE="user.txt"

# user.txt 파일이 존재하는지 확인
if [ ! -f "$USER_FILE" ]; then
  echo "user.txt 파일을 찾을 수 없습니다."
  exit 1
fi

# user.txt 파일을 한 줄씩 읽어서 사용자 생성 및 초기 암호 설정
while IFS=$'\t' read -r name last_name username role password; do
  # 사용자 생성
  useradd -m -s /bin/bash "$username"

  # 초기 암호 설정
  echo "$username:$password" | chpasswd

  echo "사용자 $username 생성 및 초기 암호 설정 완료"
done < "$USER_FILE"

echo "모든 사용자 생성 및 초기 암호 설정이 완료되었습니다."

그룹 생성

## 그룹 생성 Group
sudo groupadd <Group>

## 그룹 확인
cat /etc/group

## 사용자 그룹 추가
sudo usermod -a -G <Group Name> <User ID>

그룹 실습

그룹

  • Sales
  • HR
  • Shipping
  • Managers
    를 추가한 후
이름사용자 ID직무시작 암호
AlejandroRosalezarosalezSales ManagerP@ssword1234!
EfuaOwusueowusuShippingP@ssword1234!
LiJuanljuanHR ManagerP@ssword1234!

위에서 생성한 사용자들을 직무에 알맞은 그룹에 지정하시오

  • vi로 user.txt 에 위의 표 내용을 만든다.
  • vi로 group.sh 를 만든다.
#!/bin/bash

# user.txt 파일 경로
USER_FILE="user.txt"

# user.txt 파일이 존재하는지 확인
if [ ! -f "$USER_FILE" ]; then
  echo "user.txt 파일을 찾을 수 없습니다."
  exit 1
fi

# 그룹 생성
groupadd Sales
groupadd HR
groupadd Shipping
groupadd Managers

# 그룹 생성 및 사용자 지정 함수
assign_group() {
  local name last_name username role password

  name=$1
  last_name=$2
  username=$3
  role=$4
  password=$5

  echo "사용자 $username 생성 및 초기 암호 설정 완료"

  # 직무에 맞는 그룹에 사용자 추가
  case $role in
    "Sales Manager")
      usermod -aG Sales "$username"
      ;;
    "HR Manager")
      usermod -aG HR "$username"
      ;;
    "Shipping")
      usermod -aG Shipping "$username"
      ;;
    "Finance Manager" | "Finance Specialist")
      usermod -aG Managers "$username"
      ;;
    "CEO")
      usermod -aG Sales, HR, Shipping, Managers "$username"
      ;;
    *)
      echo "알 수 없는 직무입니다. 사용자 $username은 어떤 그룹에도 지정되지 않았습니다."
      ;;
  esac

  echo "사용자 $username을 그룹에 지정 완료"
}

# user.txt 파일을 한 줄씩 읽어서 사용자 생성 및 그룹 지정
while IFS=$'\t' read -r name last_name username role password; do
  assign_group "$name" "$last_name" "$username" "$role" "$password"
done < "$USER_FILE"

echo "모든 사용자 그룹 지정이 완료되었습니다."

새로운 사용자로 로그인

실습 새로운 사용자 로그인 및 로그출력

  • 위에서 생성한 arosalez 로그인
## 위에서 생성한 arosalez 로그인
## password: P@ssword1234!
su arosalez

## 다음과 같이 출력됨
## [arosalez@ec2-user]$

## 현재 위치 확인 /home/ec2-user 인지
pwd

## myFile.txt 생성
touch myFile.txt

## 권한오류 touch: cannot touch ‘myFile.txt’: Permission denied
## 사용자 arosalez에게 ec2-user 홈 폴더에 파일을 쓸 수 있는 권한이 없다.


## sudo 명령을 사용하여 관리자로 시도
sudo touch myFile.txt

## 루트권리가 필요한명령을 실행할 권한이 없음 (Sudoer 목록에없음)
## arosalez is not in the sudoers file.  This incident will be reported.

## 계정 로그인 해제 및 이전사용자 ec2-user 로 전환
exit

## 보안 파일의 내용을 표시 (/var/log/secure)
sudo cat /var/log/secure

## Aug  9 14:45:55 ip-10-0-10-217 sudo: arosalez : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/ec2-user ; USER=root ; COMMAND=/bin/touch myFile.txt
## sudo 및 허용되지 않은 액션이 /var/log/secure 파일에 기록됨
profile
devops

0개의 댓글