Gom3rye
(중요!) 리눅스를 활용한 패키지 관리 본문
사용자 계정 관리
사용자 계정 관련 명령
useradd [옵션] [로그인ID]
옵션
- u uid: uid 설정
- o: uid의 중복을 허용
- g gid: gid 설정
- G gid: 2차 그룹 아이디
- m: 홈 디렉토리 자동으로 생성 (중요!)
- d 디렉토리: 홈 디렉토리 설정
- s 셸: 기본 셸을 설정
- c 설명: 설명 설정
- D: 기본값을 설정하거나 출력
- e 유효기간: EXPIRE를 설정 (YYYY-MM-DD)
- f 비활성일수: INACTIVE 항목 설정
- k 디렉토리: 계정 생성 시 복사할 초기 파일이나 디렉토리를 설정해놓은 디렉토리 설정
useradd 명령 실습
- 옵션 없이 user1 계정 생성
sudo useradd user1
- 확인
tail -2 /etc/passwd #마지막 2줄만 확인해보기

- user1으로 로그인 시도
ssh user1@192.168.56.1 -p 10001
→ 접속 실패한다. ⇒ 비밀번호가 없기 때문에
sudo more /etc/shadow로 /etc/shadow 파일을 보면 원래 유저는 비밀번호가 있는 것을 확인할 수 있는데 user1은 !로 되어 있는 것을 확인할 수 있다.

- 비밀번호 세팅해주기
sudo passwd user1
- su user1 으로 로그인 해보기



kyla → /bin/bash (more /etc/passwd 로 확인)
user1 → /bin/sh

각각의 셸은 조금씩 프롬프트 모양이 다르다.
- 암호를 설정한 후 로그인을 하면 dash 셸로 로그인 된다.
- 기본 설정 값 확인
useradd -D

- 기본값 설정 파일 확인
cat /etc/default/useradd #SHELL=/bin/sh 로 나와있는 것을 확인할 수 있다.
→ 이 파일을 수정하면 유저를 생성할 때 기본값이 변경되는데 파일을 직접 변경하는 것보다는 useradd -D를 이용하는 것을 권장한다.
- EXPIRE의 값을 2025년 12월 31로 기본값을 설정하도록 수정
sudo useradd -D -e 2025-12-31

- /etc/skel 디렉토리
- 사용자 계정을 생성할 때 시스템 운영 정책에 따라 사용자 계정의 홈디렉토리에 공통으로 배포해야 할 파일이 있을 때 이 파일을 복사하기 위한 디렉토리
- -a 옵션을 줘야 한다. (다 숨김으로 되어 있기 때문에)

- 옵션을 사용해서 사용자 계정을 생성해보기
sudo useradd -s /bin/bash -m -d /home/user2 -u 2000 -g 1000 -G 3 user2
→ -u : userid, g : groupid

sudo useradd -e 2025-12-31 -f 5 -c "user3 test" user3
→ -e 2025-12-31 : 계정 만료일. 이 날짜 이후 user3 계정은 로그인이 불가능 → -f 5 : 비밀번호 만료 후 계정을 비활성화하기까지 유예 기간(일). 즉, 비밀번호가 만료되면 5일 후 계정이 잠긴다. → -c "user3 test" : 사용자 설명(Comment). /etc/passwd 파일의 GECOS 필드에 들어간다.
- 확인
grep user3 /etc/passwd

adduser [옵션] 로그인ID
adduser 명령을 이용한 사용자 생성
- 옵션
- --uid UID
- --gid GID
- --home 홈디렉토리경로
- --shell 기본 셸
- --gecos 설명
- 옵션 없이 생성
sudo adduser user4 # 대화식으로 유저 생성

-> 비밀번호도 바로 넣어줄 수 있다.
- 확인

- 옵션과 함께 생성
sudo adduser --uid 2002 user5

- 기본값 확인
more /etc/adduser.conf
usermod [옵션] [로그인ID]
사용자 계정 수정 명령어
- UID, GID, 홈디렉토리, 기본셸, 설명, 로그인ID, 패스워드 에이징 값을 수정하는 것이 가능하다.
- 옵션
- u: uid
- o: UID의 중복을 허용
- g: gid
- G gid: 2차 그룹 ID
- d: 디렉토리
- s: 셸
- c: 설명
- f: inactive
- e: expire
- l(소문자 엘): 계정 이름을 변경
- user2의 UID를 2000번에서 1003번으로 수정
sudo usermod -u 1003 user2

userdel [옵션] [로그인ID]
사용자 계정 삭제
- 옵션
- r: 홈디렉토리를 삭제
- f: 로그인 중이어도 강제로 삭제
- 사용자 계정만 삭제
sudo userdel user5

-r 을 안 썼으니 홈디렉토리는 남아있다.
- 홈디렉토리도 같이 지워보기
sudo userdel -r user4

- 사용자의 홈디렉토리를 설정하지 않은 경우 삭제
- 사용자 user1의 홈디렉토리가 / 이기 때문에 해당 디렉토리를 삭제할 수 없다.
- userdel -r user1 명령은 사용자의 홈디렉토리를 지우려다 루트 디렉토리(/) 삭제를 시도하게 되어, 보안상의 이유로 에러가 발생하며 중단된다.
⇒ user1 만들 때 아무런 옵션도 주지 않았기 때문에 홈디렉토리가 root 디렉토리가 되어 버렸다. 이런 경우 찾아서 지워줘야 한다.
find / -user UID exec rm -r {} \;
# -------user3 지워보기 ---------------------
sudo find / -user 2001 -exec rm -r {} \;

패스워드 에이징 관련 명령
패스워드 에이징 : 사용자의 비밀번호를 일정 기간이 지나면 변경하도록 강제하거나, 비밀번호 사용 기간을 제한하는 기능
→ 사용 기간이나 inactive 같은 것
관련 명령 : useradd, usermod, passwd or chage
- 항목
- MIN passwd -n 날수 chage -m
- MAX passwd -x 날수 chage -M
- WARNING passwd -w 날수 chage -W
- INACTIVE useradd -f 날수 chage -I (대문자 i)
usermod -f 날수 - EXPIRE useradd -e 날짜 chage -E
usermod -e 날짜
- user2의 패스워드 에이징 값 수정
sudo grep user2 /etc/shadow
sudo usermod -f 10 -e 2026-12-31 user2

sudo passwd -n 2 -x 100 -w 5 user2

- chage 명령 사용
sudo chage -l user2

연습
- useradd 명령을 이용해서 test01과 test02 계정을 생성하는데 아래 조건에 맞춰서 생성
로그인셸 UID 2차 그룹 설명test01 본셸 2100 3 test01.user test02 배시셸 2200 4 test02.user sudo useradd -s /bin/sh -m -u 2100 -G 3 -c "test01.user" test01 sudo useradd -s /bin/bash -m -u 2200 -G 4 -c "test02.user" test02
- adduser 명령으로 test03 사용자 계정을 생성test03 배시셸 2300 test03.user
sudo adduser --shell /bin/bash --uid 2300 --gecos "test03.user" test03

- test01에 대한 패스워드 에이징
MIN: 4 MAX: 200 WARNING: 10 INACTIVE: 5 EXPIRE: 2026-12-31sudo chage -m 4 -M 200 -W 10 -I 5 -E 2026-12-31 test01
- 확인
sudo tail /etc/shadow

- 계정 정보 수정
- test03의 UID를 2010으로 계정의 이름을 test33으로 수정
sudo usermod -u 2010 -l test33 test03

- test02 유저를 홈디렉토리와 함께 삭제
sudo userdel -r test02
그룹 관리 명령
groupadd [옵션] [그룹이름]
그룹 생성 명령어
- 옵션
- -g gid: 그룹 번호 지정
- -o: gid의 중복을 허용
- 옵션 없이 생성하면 gid가 마지막 번호 +1 생성
sudo groupadd gtest01
- 그룹 정보 확인
tail -1 /etc/group # or
grep gtest01 /etc/group

- gid를 지정해서 생성
sudo groupadd -g 3000 gtest02

- gid 중복해서 생성 (-o : overwrite의 약자 → 중복 가능)
sudo groupadd -g 3000 -o gtest03
→ -o 안 넣고 gid 중복시키면 에러 남
addgroup [옵션] [그룹명]
- 옵션 (이 단어로 쓰인다는 것 말곤 groupadd 와 차이 없다.)
- --gid GID
- 옵션 없이 생성
sudo addgroup gtest04
- 옵션과 함께 생성
sudo addgroup --gid 3001 gtest05
groupmod [옵션] [그룹명]
그룹 정보 수정 명령어
- 옵션
- -g gid
- -o
- -n 그룹이름
- gid 변경
sudo groupmod -g 2500 gtest01
- 그룹 이름 바꾸기
sudo groupmod -n gtest11 gtest01
delgroup [옵션] [그룹명]
그룹 삭제 명령어
- gtest05 삭제
sudo delgroup gtest05
gpasswd [옵션] [그룹명]
그룹 암호 설정
- 옵션
- -a 사용자계정: 사용자 계정을 추가
- -d 사용자계정: 사용자 계정을 그룹에서 제거
- -r: 그룹 암호 삭제
- test01과 test33 계정을 gtest11에 추가
- 일단 test01과 test33, gtest11이 있는지 확인 -> tail /etc/passwd tail /etc/group
sudo gpasswd -a test01 gtest11 sudo gpasswd -a test33 gtest11


- test33 계정을 gtest11에서 제거
sudo gpasswd -d test33 gtest11

- 확인
grep gtest11 /etc/group

그룹 암호를 설정하는 이유: 그룹을 변경할 때 사용
- gtest11 그룹에 암호 설정
sudo gpasswd gtest11
newgrp [그룹명]
소속 그룹 변경하기
- kyla의 소속그룹 확인하기 (groups : 2차 그룹)
id kyla

- kyla의 소속 그룹을 adm으로 수정
newgrp adm

- 자신의 2차 그룹이 아닌 그룹으로 gid를 변경할 때 비밀번호를 물어본다.
id : 현재 로그인된 사용자(예: kyla)의 정보를 출력
- / : root의 정보
- ~ : kyla의 정보
id kyla : kyla의 정보를 위치에 상관 없이 보여준다.
kyla@maser : /$ → kyla의 계정으로 루트에 있다.
권한의 묶음 : role
role을 부여하거나 그룹에게 권한 부여

id kyla로 했을 때도 adm으로 바뀌어야 하지만 재부팅을 안해서 메모리에 있는 값을 불러오므로 다르게 보이는 것!
사용자 정보 관리
UID와 EDUID
- UID는 로그인한 ID이고 EUID는 명령을 실행한 주체 ID
- 보통의 경우는 UID와 EUID는 동일하다.
- UID와 EUID가 다른 경우
- 명령에 setuid가 설정된 경우 -> 대표적 예 passwd: root의 것인데 우리가 실행 권한이 없어도 실행할 수 있다. → setuid 덕분에
x 없음 -> 실행 권한 없음 - su 계정 명령으로 계정을 변환한 경우
- 명령에 setuid가 설정된 경우 -> 대표적 예 passwd: root의 것인데 우리가 실행 권한이 없어도 실행할 수 있다. → setuid 덕분에
who [옵션]
사용자 확인 명령 (보통은 그냥 who 만 쓴다.)
- 옵션
- q: 사용자 이름만
- H: 출력 항목의 제목도
- b: 마지막으로 재부팅한 날짜와 시간
- m: 현재 사용자 계정의 정보를
- r: 런레벨을 출력
w [사용자명]
현재 실행 중인 작업에 대한 정보를 알려준다. (who 보다 더 자세함)

last
사용자 이름과 로그인한 시간 및 로그아웃한 시간 그리고 터미널 번호나 IP 주소를 출력한다.
→ 접속한 정보를 알고 싶을 때 사용
whoami, who am i, id
UID와 EUID 확인하기

(who am i 는 어디서 접속했는지도 알려준다.)
groups [사용자명]
소속 그룹 확인하기, if 사용자명 안 쓰면 그냥 현재 로그인한 유저이다.

root 권한 사용 방법
- su 명령으로 root 계정으로 전환해서 사용
- 일반 사용자에게 시스템 관리 작업 중 특정 작업만 수행할 수 있는 권한을 주는 것
- sudo 권한 설정
- 일반 사용자가 sudo 명령으로 root 권한을 실행하려면 특정 권한을 부여 받아야 한다.
- 이 권한은 /etc/sudoers 파일에 설정
- vi 편집기로 편집해도 되고 visudo 명령을 사용해도 되는데 visudo 명령을 사용하는 것을 권장(문법 검사를 수행함)한다.
- 설정 형식은 사용자계정 호스트=명령
- 호스트는 사용하는 컴퓨터를 의미
- root는 root All=(All) → All로 설정되어 있다.
Ex.
user1에게 useradd 권한과 usermod 권한을 부여
sudo visudo #해서
user1 ALL=/usr/sbin/useradd, /usr/sbin/usermod #적어주기
user1 만들 때 홈디렉토리 안 줘서

test33 은 useradd 권한 안 줘서 에러

실습
계정 생성
sudo useradd -m juni #-m 덕분에 홈디렉토리도 만들어졌다.
계정 만들어졌는지 확인
tail -1 /etc/passwd

로그인할 수 있도록 새로 만든 계정에 비밀번호 설정
sudo passwd juni
필요한 sudo 권한 설정(useradd)
useradd 명령의 위치를 확인
whereis useradd # -> /usr/sbin/useradd (절대경로로 보여줘야 한다.)
sudo visudo 명령을 이용해서 sudoers 파일을 편집할 수 있는 모드로 진입한 후 작성
juni ALL=/usr/sbin/useradd # 작성한 후 Ctrl+O 누르고 엔터 치고 Ctrl+x로 빠져나오기
제대로 설정되었는지 확인
주니로 로그인 하기
su - juni

-> useradd 쓸 수 있다!

-> userdel은 권한 안 줘서 쓸 수 없다.

지우려고 하는데 뭔갈 하고 있다고 안 된다.
⇒ 다 죽이자.
sudo killall -u juni
또는
sudo userdel -r -f juni # -f : 강제로
암호를 잠그고 해제하기
sudo passwd -l 유저 # 암호 잠금 -> 로그인을 못 하게 하는 것
sudo passwd -u 유저 # 잠금 해제
파일 소유자와 소유 그룹 변경
chown [옵션] [사용자 계정] [파일명 또는 디렉토리명]
소유자 변경 명령어
- 옵션
- -R : 서브 디렉토리의 소유자도 변경된다.

chgrp [옵션] [그룹명] [파일명 또는 디렉토리명]
그룹 변경 명령어
연습 문제
- 현재 계정에서 temp라는 디렉토리를 생성
mkdir temp
- temp의 소유자를 확인
ls -l
- test100 이라는 계정을 만들어서 chown 명령을 사용할 수 있도록 설정
sudo useradd -m test100
sudo passwd test100
whereis chown
sudo visudo
test100 ALL=/usr/bin/chown # 작성한 후 Ctrl+O 누르고 엔터 치고 Ctrl+x로 빠져나오기
- 현재 계정의 temp 라는 디렉토리의 소유자를 test100으로 수정
sudo chown -R test100 temp
디스크 사용량 설정
quota 라는 패키지 설치
sudo apt install quota
edquota [옵션] [계정이나 그룹]
쿼터 설정
- 옵션
- u: 사용자 쿼터
- g: 그룹 쿼더
- p: 쿼터 설정을 복사
quota [옵션] [계정 또는 그룹]
쿼터 확인
- 옵션
- u
- g
repquota
쿼터 정보 요약 출력
리눅스 네트워크 서비스
네트워크 설정
TCP/IP 프로토콜
프로토콜: 컴퓨터와 컴퓨터 사이에 데이터를 주고 받기 위한 규칙, 규약, 약속을 의미한다.
- 인터넷은 TCP/IP라는 프로토콜을 기반으로 하는 네트워크
- TCP/IP는 5개의 계층으로 구성
- Application: 서비스를 제공하는 응용 프로그램/ DNS, FTP, SSH, HTTP등
- Transport: 데이터를 전달하고 흐름을 제어/ TCP, UDP
- Network: 주소 관리 및 경로 제어/ IP, ICMP
- Link: 네트워크 장치 드라이버/ ARP
- Physical: 실제 물리적인 장비/ 케이블
- Address
- MAC Address: 실제 물리적인 장비의 주소
- 16진수 12개로 구성되는데 앞의 여섯개는 제조사 번호이고 뒤의 여섯개는 일련번호이다.
- IP Address: 컴퓨터를 가리키는 주소
- IPv4(32비트)와 IPv6(128비트) - 실제 나갈때는 IPv6로 나감 (주소 부족해서)
- 이 주소는 논리적인 주소로 바뀔 수 있다.
- MAC Address: 실제 물리적인 장비의 주소
- DNS: IP address가 숫자로 되어 있어서 기억하기 어렵기 때문에 사람이 기억하기 쉽도록 만든 문자 형태의 주소
- Port: 컴퓨터 내에서 애플리케이션을 구분하기 위한 숫자
'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글
네트워크 (0) | 2025.05.27 |
---|---|
네트워크 (1) | 2025.05.26 |
리눅스를 활용한 패키지 관리 (2) | 2025.05.22 |
리눅스를 활용한 시스템 관리 (1) | 2025.05.21 |
Linux (0) | 2025.05.20 |