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를 만들고 암호를 지정하시오
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>
그룹
| 이름 | 성 | 사용자 ID | 직무 | 시작 암호 |
|---|---|---|---|---|
| Alejandro | Rosalez | arosalez | Sales Manager | P@ssword1234! |
| Efua | Owusu | eowusu | Shipping | P@ssword1234! |
| Li | Juan | ljuan | HR Manager | P@ssword1234! |
위에서 생성한 사용자들을 직무에 알맞은 그룹에 지정하시오
#!/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 로그인
## 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 파일에 기록됨