Gom3rye

(중요!) 리눅스를 활용한 패키지 관리 본문

현대 오토에버 클라우드 스쿨

(중요!) 리눅스를 활용한 패키지 관리

Gom3rye 2025. 5. 23. 17:43
728x90

사용자 계정 관리

사용자 계정 관련 명령

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-31
    sudo 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 계정 명령으로 계정을 변환한 경우

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로 나감 (주소 부족해서)
      • 이 주소는 논리적인 주소로 바뀔 수 있다.
  • DNS: IP address가 숫자로 되어 있어서 기억하기 어렵기 때문에 사람이 기억하기 쉽도록 만든 문자 형태의 주소
  • Port: 컴퓨터 내에서 애플리케이션을 구분하기 위한 숫자
728x90
반응형

'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글

네트워크  (0) 2025.05.27
네트워크  (1) 2025.05.26
리눅스를 활용한 패키지 관리  (2) 2025.05.22
리눅스를 활용한 시스템 관리  (1) 2025.05.21
Linux  (0) 2025.05.20