리눅스 마스터 1급_4

알파카파카·2026년 3월 7일
post-thumbnail

일반 운영 관리 에서는 여러 사람이 동시에 사용하는 리눅스 운영체제에서 해당 내용을 관리하는 것을 목표로 한다.

  • 사용자들을 관리하는 방법
  • 디렉토리 & 파일을 관리하는 방법
  • 프로그램을 관리하는 방법( 프로세스 관리 )

1. 사용자를 관리하는 방법

리눅스의 사용자는 크게 3종류의 계정으로 접근한다.

  • 루트( root ) 계정 -> 리눅스 시스템의 모든 권한을 가진 관리자 계정
  • 시스템 계정 -> 프로그램이나 시스템이 특정 작업을 위해 사용하는 계정
  • 사용자 계정 -> 사용자가 직접 로그인하여 사용하는 계정, 권한을 부여하여 작업의 범위를 넓힐 수 있다.

사용자의 정보를 저장하는 파일의 내용 확인하려면

cat /etc/passwd

보이는 것처럼 각 필드가 콜론으로 구분되어 있음

순서대로

계정 이름:비밀번호:사용자 번호:그룹번호:설명:사용자의 홈 디렉토리:로그인 쉘 종류

루트사용자( 모든 권한이 있는 사용자 )는 사용자 번호가 '0번' 따라서 UID가 0번인 사용자는 딱 한 사람만 있는지 관리가 필요함

daemon, bin 과 같은 시스템 계정은 리눅스 시스템이 특정 작업을 할 때 사용하는 계정이므로
사용자가 임의로 로그인하여 사용하는 계정이 아니므로 nologin이 붙어있음

일반 계정이나 루트 계정은 사용자가 로그인하여 사용할 수 있는 계정이므로 로그인했을 때 bash 쉘이 실행되게 되어 있음

구분파일명설명
계정 및 그룹 설정 파일
/etc/passwd사용자 계정의 아이디, 그룹 정보 등 계정 정보 ( 여기에 예전에 사용하던 비밀번호 필드가 있는데 현재는 'x'표시 - 보안상 이유로 비밀번호를 이곳에 저장하지 않음 )
/etc/shadow암호화된 패스워드 및 정책 설정 정보
/etc/group사용자 그룹의 기본 정보( 하나의 계정에 여러 그룹을 지정하기 위해 사용 )
/etc/gshadow사용자 그룹의 암호화된 패스워드 정보
계정 환경설정 파일사용자에게 기본적으로 제공하는 설정
/etc/default/useradduseradd( 사용자 생성 ) 명령을 사용할 때 기본 설정
/etc/login.defs사용자와 관련된 기본 설정들을 정의하는 설정 파일
/etc/skel홈 디렉터리 생성 시 기본으로 제공할 파일

사용자 계정 관리 명령어

구분파일명설명
사용자 계정 관리
useradd사용자 계정 생성
usermod사용자 계정 정보 변경
userdel사용자 계정 삭제
passwd사용자 계정 비밀번호 설정 또는 변경
su사용자 로그인

2. 디렉토리 & 파일을 관리하는 방법

디렉토리와 파일들은 파일 시스템에 의해서 관리가 됨

  • 하드디스크 어디에 저장이 되어 있는지 확인
  • 현재 사용자가 해당 파일에 접근할 수 있는지 확인
ls -l 

명령을 하면

파일의 유형과 권한을 볼 수 있는 10자리가 먼저 등장

10자 중 가장 처음 단어는 파일 유형을 나타냄

'-' -> 일반파일
'd' -> 디렉토리
'l' -> 심볼릭 링크
'b' -> 블록 디바이스
'c' -> 캐릭터 디바이스
'p' -> FIFO
's' -> 소켓

뒤의 9자리는 허가권을 나타내는데 3자리씩 묶어서 소유자( u ), 그룹( g ), 다른 사용자( o ) 허가권으로 나뉨
3자리씩 읽기( r ), 쓰기( w ), 실행( x )

원하는 파일의 허가권의 변경 방법은

# 숫자모드 ( 해당 파일 모든 사용자에게 모든 권한 부여 )
chmod 777 [ 파일 이름 ]

# 기호모드 ( 소유자( u )에게 해당 파일 실행 권한( x ) 부여 )
chmod u+x [ 파일 이름 ]

파일이 생성이 될 때마다 설정되는 기본 허가권은 umask를 이용해서 설정이 가능

# 기본 권한 666을 기준으로 umask 뒤의 숫자를 뺌
# 기본 권한이 666인 이유는 보안상 실행 권한으 부여하지 않기 때문
umask 0022	# 이제부터 기본적으로 생성되는 권한은 644 

그 뒤의 숫자는 넘어가고 2단어가 나오는데 소유권을 나타냄
사용자 소유권, 그룹 소유권으로 구분된다.

그런데 chmod는 3자리 였는데 왜 여기서는 0022 하면서 4자리로 나타낼까?
umask 022 해도 정상적으로 기본 권한은 설정이 되지만 가장 앞의 숫자는 특수 권한을 의미

8진수 값기호 설정(Symbolic)설명
SetUID4chmod u+s [파일명]실행 파일이 소유자의 허가권으로 실행되도록 설정
SetGID2chmod g+s [파일명]실행 파일이 그룹의 허가권으로 실행되거나 그룹 소유권 상속
Sticky Bit1chmod +t [디렉터리명]디렉터리 내부의 파일은 소유자만 삭제하거나 이름 변경 가능하도록 제한

예를 들어 ) 기존 권한이 755인 파일에 SetUID를 추가하려면 4000 + 755 = 4755

파일 링크

파일 링크는 윈도우의 바로가기 기능과 같음

링크의 종류는 하드링크, 심볼릭 링크

하드링크 -> 원본 파일과 똑같은 링크 파일을 생성하는 것 ( Inode 번호가 일치, 백업용으로 사용 )
심볼릭 링크 -> 원본을 가리키는 링크 파일을 만드는 것 ( 경로 단축을 위해 사용 )

차이점

  • 원본 삭제시, 하드링크는 데이터를 유지하지만 심볼릭링크는 연결 끊김( Redirection 에러 )
  • 하드링크는 같은 파일 시스템 내에서만 가능하고, 심볼릭링크는 서로 다른 파일 시스템 간에도 가능하여 자유로움
# ln [원본] [링크]
ln 로그파일.txt 로그파일_backup.txt

# ln -s [원본] [링크]
ln -s /아주아주/복잡한/경로의/파일이나/디렉토리/가능.txt ~/이걸로볼수있음

파일 시스템 점검

간혹 파일 시스템이나 디스크가 동작을 하지 않는 경우가 있음
그럴때 사용하는 fsck는 리눅스 시스템의 파일 시스템 무결성을 점검하고 오류를 복구하는 필수 도구 ( 확장형은 e2fsck )

옵션사용 예시상세 설명
-afsck -a /dev/sdb1오류 발견 시 사용자 확인 없이 자동으로 복구를 진행
-bfsck -b 32768 /dev/sdb1메인 슈퍼블록 손상 시 백업 슈퍼블록(예: 32768)을 사용하여 복구 ( 슈퍼블록은 mke2fs -n /dev/sdb1 명령으로 확인 )
-yfsck -y /dev/sdb1모든 질문에 "yes"라고 응답하며 복구
-nfsck -n /dev/sdb1실제로 수정하지 않고 오류 여부만 점검
-rfsck -r /dev/sdb1오류 복구 시 사용자에게 일일이 확인을 요청하는 대화형 복구 모드
-tfsck -t ext4 /dev/sdb1특정 파일 시스템 타입(ext4, xfs 등)을 지정하여 검사할 때 사용
-Vfsck -V /dev/sdb1점검 및 복구 과정에 대한 상세한 출력

스왑

물리적 메모리( RAM )는 한정되어 있기 때문에 하드디스크의 프로그램을 동시에 시작하기는 어려움
새로운 프로그램을 시작할 때 용량 문제가 생긴다면 하드디스크에 스왑이라는 공간을 생성해서 프로그램을 잠시 저장해 두기 ( 하드디스크에 생성되는 공간으로 느리다는 단점이 있음 )

스왑은 디스크에 설정하는 것으로 파티션으로 설정할 수도 있고 그냥 파일로도 만들 수 있다.

파티션으로 구현

  1. fdisk나 gdisk를 사용하여 파티션을 생성( 파티션 타입을 82 (Linux swap)로 변경 )
fdisk /dev/sdb
# 't'를 눌러 타입 변경 -> '82' 입력 -> 'w'로 저장
  1. 스왑 포맷팅( mkswap )
mkswap /dev/sdb1
  1. 스왑 활성화 ( swapon )
swapon /dev/sdb1
  1. 부팅 시 자동 마운트 설정 ( /etc/fstab )
    /etc/fstab 파일에 아래 내용을 추가
/dev/sdb1  swap  swap  defaults  0 0

파일로 구현

파티션을 새로 나누기 어려운 상황( ex: 이미 디스크가 꽉 찼거나 클라우드 환경 )에서 유연하게 사용할 수 있는 방법( 2GB 스왑 파일 생성 예시 )

  1. 빈 파일 생성 ( dd 또는 fallocate )
    fallocate가 더 빠르지만, 시스템에 따라 지원되지 않을 경우 dd를 사용
fallocate -l 2G /swapfile
# 또는
dd if=/dev/zero of=/swapfile bs=1M count=2048
  1. 권한 설정
    스왑 파일은 루트 권한만 읽고 쓸 수 있어야 함
chmod 600 /swapfile
  1. 스왑 포맷팅 ( mkswap )
    일반 파일을 스왑 전용 파일 시스템 구조로 초기화
mkswap /swapfile
  1. 스왑 활성화 ( swapon )
    생성된 파일을 시스템의 가상 메모리 영역으로 편입
swapon /swapfile
  1. 상태 확인 ( swapon -s )
    현재 활성화된 스왑의 목록과 유형( file 또는 partition ), 크기, 우선순위( Priority )를 확인
swapon -s
  1. 부팅 시 자동 마운트 설정 ( /etc/fstab )
    /etc/fstab 파일에 아래 내용을 추가
/swapfile  swap  swap  defaults  0 0

디스크 쿼터

사용자 별 혹은 그룹 별 제한을 둬서 공간을 낭비하지 않게 하는 방법( 용량이나 파일 개수를 제한 )

  1. /etc/fstab 수정 및 재마운트( 활성화 준비 )
    해당 파티션에서 쿼터 기능을 사용하겠다고 선언
  • usrquota : 사용자별 쿼터 활성화
  • grpquota : 그룹별 쿼터 활성화
sudo cat /etc/fstab
/dev/sdb5  /quota-test  ext4  defaults,usrquota,grpquota  1 1
  1. 사용자 쿼터 파일 생성
  • -m : 마운트된 상태에서 강제로 체크
  • -f : 파일이 없으면 강제로 생성
sudo mount quotacheck -mf /quota-test
  1. 사용자별 쿼터 정책 설정
항목의미설명
Blocks용량 제한현재 사용 중인 용량을 의미( 기본 단위는 KB )
Inodes파일 개수 제한현재 생성된 파일 및 디렉터리의 전체 개수
Soft Limit경고 한도사용자에게 경고를 보내는 지점, 유예 기간(Grace Period) 동안은 초과가 허용
Hard Limit절대 한도절대 넘을 수 없는 최대치, 이 수치에 도달하면 즉시 쓰기 작업이 차단
sudo edquota [사용자 이름]
  1. 쿼터 시작
sudo quotaon /quota-test
  1. 쿼터 기능 설정 테스트
    설정이 잘 되었는지 확인
sudo repquota /quota-test

3. 프로세스 관리

프로세스란 실행 중인 프로그램을 의미

프로세스 정보

실행 중인 명령어 확인

  • ps
  • pstree

어떤 프로세스 사용 현황

  • top

프로세스 종료

  • kill
  • killall
  • pkill

프로세스 관련 파일

/proc 디렉토리

  • procfs 라는 가상의 파일 시스템을 시스템이 부팅 시에 자동으로 /proc에 마운트
  • 각 프로세스는 PID를 가지고 고유하게 구분이 가능, /proc/PID 디렉터리 이하에서 프로세스 정보 확인 가능

작업 예약

1) at 명령어로 작업 예약 가능
2) cron 으로 주기를 가지고 특정 명령 실행

# 분 시 일 월 요일 순서로 설정, '*'은 전체를 의미
# 분 : 0 ~ 59
# 시 : 0 ~ 23
# 일 : 1 ~ 31
# 월 : 1 ~ 12 혹은 jan, feb, mar 등의 문자열
# 요일 : 0 ~ 6, 0 : 일요일, 6: 토요일
* * * * * [ 실행할 명령어 ]

# 예약된 작업 확인
crontab -l
# 작업 예약하기( 편집 )
crontab -e
# 예약된 작업 삭제
crontab -r

4. 프로그램 설치 및 관리

  • 저수준 패키지 도구 -> 라이브러리 파일만 있으면 인터넷이 없는 환경에서도 설치 가능
  • 고수준 패키지 도구 -> 인터넷이 되는 환경에서 저수준 패키지 설치 파일을 한 번에 다운 & 설치 가능
배포판저수준 패키지 도구고수준 패키지 도구
레드햇 계열rpmyum
데비안 계열dpkgapt-get, apt, aptitude
openSUSE 계열rpmzipper/YaST
profile
타닥,,, 타다닥,,,,,,,

0개의 댓글