이세개발
article thumbnail


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 직무 시작 암호
Alejandro Rosalez arosalez Sales Manager P@ssword1234!
Efua Owusu eowusu Shipping P@ssword1234!
Li Juan ljuan HR Manager P@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 직무 시작 암호
Alejandro Rosalez arosalez Sales Manager P@ssword1234!
Efua Owusu eowusu Shipping P@ssword1234!
Li Juan ljuan HR Manager P@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

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!