리눅스 기초

Sleeper·2025년 5월 26일

구디아카데미

목록 보기
1/3

🐧 리눅스 기초 명령어 완전 정복

📋 목차

  1. 파일 권한 시스템
  2. 기본 네비게이션 명령어
  3. 파일 검색과 조회
  4. 리디렉션과 파이프
  5. 네트워크 관련 명령어
  6. 시스템 종료 명령어
  7. 파일 시스템과 권한 관리
  8. 기본 권한 설정 (umask)
  9. 파일 시스템 마운트 (mount)

🔐 파일 권한 시스템

권한 표기법 이해하기

rwx | r-x | r-x
 ↑     ↑     ↑
Owner Group Others
위치의미예시 권한설명
1~3 (rwx)파일 소유자(owner)의 권한읽기/쓰기/실행파일 주인의 모든 권한
4~6 (r-x)같은 그룹 사용자(group)의 권한읽기/실행만쓰기 권한 없음
7~9 (r-x)기타 사용자(others)의 권한읽기/실행만제한된 접근 권한

권한 문자의 의미

문자의미파일에서디렉토리에서
rread (읽기)파일 내용을 읽을 수 있음파일 목록을 볼 수 있음
wwrite (쓰기)파일 내용을 수정할 수 있음파일 추가/삭제 가능
xexecute (실행)파일을 실행할 수 있음디렉토리에 접근 가능 (cd 가능)
-해당 권한 없음예: r--는 읽기만 가능해당 동작 불가

💡 실제 예시로 이해하기

📁 디렉토리 권한: rwxr-xr-x

rwx: 소유자는 읽기, 쓰기, 실행 모두 가능
r-x: 같은 그룹의 사용자는 읽기와 실행 가능, 쓰기는 불가
r-x: 다른 사용자도 읽기와 실행 가능

📄 텍스트 파일 권한: rw-r--r--

소유자: 읽기 + 쓰기
그룹: 읽기만
기타 사용자: 읽기만
→ 가장 일반적인 텍스트 파일 권한 형태

🧭 기본 네비게이션 명령어

pwd - 현재 위치 확인

pwd는 "print working directory"의 약자로, 현재 터미널 세션이 위치한 절대 경로를 출력합니다.

$ pwd
/home/myuser/projects/java

이 출력은 현재 /home/myuser/projects/java 디렉터리에 있다는 의미입니다.

주요 네비게이션 명령어

명령어설명예시
pwd현재 디렉터리 위치 출력pwd
ls현재 디렉터리의 파일/폴더 목록 보기ls -la
cd디렉터리 이동cd /etc
cd ..상위 디렉터리로 이동cd ..
cd ~홈 디렉터리로 이동cd ~ (= /home/username)

🔍 파일 검색과 조회

find - 파일 검색

현재 디렉터리부터 하위 디렉터리까지 주어진 조건의 파일을 찾아 해당 경로를 표시합니다.

find [경로] [옵션] [정규표현식] [파일명]

find 명령어 주요 옵션

옵션설명예시
-name이름 기준으로 파일 검색find . -name "*.txt"
-user특정 사용자의 파일이나 디렉터리 검색find / -user john
-perm지정된 권한의 파일 검색find . -perm 755
-type파일 유형에 따라 파일 검색find . -type d (디렉터리만)
-atime nn일 이전에 접근한 파일 검색find . -atime +7
-exec검색된 파일에 수행할 명령어 지정find . -name "*.log" -exec rm {} \;

head - 파일 앞부분 출력

파일의 앞 부분을 지정한 만큼 출력하는 명령어입니다.

head [옵션] 파일명

head 명령어 옵션

옵션설명예시
-c출력을 원하는 용량 지정 (바이트 단위)head -c 100 file.txt
-숫자 또는 -n 숫자출력을 원하는 줄 수 지정head -n 5 file.txt

⚠️ 기본값: 옵션을 지정하지 않으면 10줄씩 출력됩니다.


🔄 리디렉션과 파이프

리디렉션 (Redirection)

기본 리디렉션 예시

cat /etc/passwd > p.txt

이 명령어는 /etc/passwd 파일의 전체 내용을 p.txt 파일로 복사합니다.

🔍 명령어 구성 요소

구성 요소의미
cat /etc/passwd/etc/passwd 파일 내용을 출력 (concatenate)
>리디렉션 연산자: 출력 결과를 파일로 저장 (덮어쓰기)
p.txt결과를 저장할 목적 파일 이름

리디렉션 기호의 종류

기호의미설명예시
>덮어쓰기 (overwrite)기존 파일 내용을 완전히 교체echo "Hello" > file.txt
>>이어쓰기 (append)기존 내용 뒤에 추가echo "World" >> file.txt
# 덮어쓰기 예시
cat /etc/passwd > p.txt

# 이어쓰기 예시  
cat /etc/passwd >> p.txt  # 기존 p.txt에 내용 추가

파이프 (Pipe)

파이프는 둘 이상의 명령을 함께 묶어 출력 결과를 다른 프로그램의 입력으로 전환하는 기능입니다.

파이프의 동작 원리

명령어1 | 명령어2 | 명령어3
  1. 명령어1의 출력 결과 → 명령어2의 입력으로 처리
  2. 명령어2의 출력 결과 → 명령어3의 입력으로 처리
  3. 최종 결과는 표준출력 장치(화면)으로 출력

파이프 사용 예시

# 파일 내용을 출력하고 줄 수를 세기
cat /etc/passwd | wc -l

# 프로세스 목록에서 특정 프로세스 찾기
ps aux | grep apache

# 로그 파일에서 에러만 필터링하고 최근 10개만 보기
cat /var/log/system.log | grep "ERROR" | tail -10

🌐 네트워크 관련 명령어

ping - 네트워크 연결 확인

외부 호스트에 신호를 보내며, 신호를 받은 호스트는 응답을 주면서 서로 네트워크가 연결되어 있음을 확인하는 명령어입니다.

ping [옵션] [도메인명 또는 IP주소]

ping 명령어 주요 옵션

옵션설명예시
-c [요청수]ping을 보낼 회수 (생략시 무제한 실행)ping -c 5 google.com
-i [초]신호를 보내는 시간 간격 (기본값: 1초)ping -i 2 google.com
-s [패킷 크기]전송하는 패킷 크기를 바이트 단위로 설정ping -s 1024 google.com

실사용 예시

# 구글 서버와의 연결 확인 (5회)
ping -c 5 google.com

# 특정 IP 주소로 연결 확인
ping -c 3 8.8.8.8

# 큰 패킷으로 테스트
ping -s 1000 -c 3 naver.com

🔌 시스템 종료 명령어

shutdown - 안전한 시스템 종료

시스템을 종료하거나 재부팅하는 명령어입니다. 현재 수행 중인 프로세스들을 안전하게 종료하며, sync를 수행하여 저장되지 않은 데이터를 디스크에 저장하고 모든 파일 시스템을 마운트한 후 시스템을 종료합니다.

⚠️ 주의: root 권한이 필요한 명령어입니다.

# 즉시 종료
shutdown -h now

# 10분 후 종료 (메시지와 함께)
shutdown -h +10 "시스템 점검을 위해 10분 후 종료됩니다"

# 즉시 재부팅
shutdown -r now

init - 런레벨을 이용한 시스템 제어

shutdown과 동일한 기능을 하지만 런레벨을 사용하여 시스템 상태를 제어합니다.

init [런레벨]

런레벨 종류

런레벨설명사용 예시
0지금 즉시 종료init 0
1단일 사용자 복구 모드로 재시작init 1
2다중 사용자 모드 (NFS 사용 불가)init 2
3텍스트 모드로 재시작init 3
4사용안함-
5X 윈도우 모드로 재시작init 5
6재가동 모드 (재부팅)init 6

clear - 터미널 화면 정리

터미널의 내용을 지우는 간단한 명령어입니다.

clear

💡 : Ctrl + L 단축키로도 같은 효과를 얻을 수 있습니다.


📁 파일 시스템과 권한 관리

ls -l 출력 이해하기

ls -l 명령어의 출력을 자세히 살펴보겠습니다:

drwxrwxr-x 3 ex2-user ex2-user 53875910  228  2024 chap
-rw-rw-r-- 1 ex2-user ex2-user     1426  228  2024 file.txt

출력 정보 해석

항목예시값의미
파일 유형과 권한drwxrwxr-x디렉터리(d) + 권한 정보
파일 유형과 권한-rw-rw-r--일반파일(-) + 권한 정보
링크 수3물리적인 파일 연결 개수
소유자ex2-user파일 소유자명
소유 그룹ex2-user파일 소유 그룹명
파일 크기53875910파일 크기 (바이트 단위)
수정 시간2월 28 2024파일이 마지막으로 변경된 시간
파일명chap파일 또는 디렉터리 이름

👥 소유권 관련 명령어

chown - 소유자 변경

파일과 디렉터리의 사용자 소유권그룹 소유권을 변경할 때 사용합니다.

# 소유자만 변경
chown newuser file.txt

# 소유자와 그룹 모두 변경  
chown newuser:newgroup file.txt

# 그룹만 변경
chown :newgroup file.txt

# 하위 디렉터리까지 재귀적으로 변경
chown -R newuser:newgroup directory/

chgrp - 그룹 소유권 변경

change group을 줄인 명령어로, 파일이나 디렉터리의 그룹 소유권만 변경합니다.

# 그룹 변경
chgrp newgroup file.txt

# 하위 디렉터리까지 재귀적으로 변경
chgrp -R newgroup directory/

💡 차이점: chown은 소유자와 소유그룹을 모두 변경 가능하지만, chgrp는 소유 그룹만 변경 가능합니다.


🔒 허가권(Permission) 관련 명령어

chmod - 파일 권한 변경

파일이나 디렉터리의 접근 허가권을 변경하는 명령어입니다.

chmod [옵션] [권한] 파일명

chmod 주요 옵션

옵션설명예시
-R하위 디렉터리 포함 모든 파일의 권한 변경chmod -R 755 directory/

숫자형 권한 설정

# 실행 전 권한 확인
$ ls -al
-rw-rw-rw- 1 myuser myuser 1426 May 26 12:23 p.txt

# 모든 권한 부여 (777)
$ chmod 777 p.txt
$ ls -l
-rwxrwxrwx 1 myuser myuser 1426 May 26 12:23 p.txt

숫자 권한 대응표

숫자이진수권한의미
7111rwx읽기+쓰기+실행
6110rw-읽기+쓰기
5101r-x읽기+실행
4100r--읽기만
3011-wx쓰기+실행
2010-w-쓰기만
1001--x실행만
0000---권한 없음

문자형 권한 설정

# 읽기 전용으로 변경 후 소유자에게 쓰기 권한 추가
$ chmod 444 p.txt
$ ls -l
-r--r--r-- 1 myuser myuser 1426 May 26 12:23 p.txt

$ chmod u+w p.txt
$ ls -l  
-rw-r--r-- 1 myuser myuser 1426 May 26 12:23 p.txt

문자형 권한 기호

대상기호의미
uuser소유자
ggroup그룹
oothers기타 사용자
aall모든 사용자 (u+g+o)
연산자의미예시
+허가권 부여chmod u+x file.txt
-허가권 제거chmod g-w file.txt
=특정 사용자에게 허가권 지정chmod u=rwx file.txt
권한기호의미
rread읽기
wwrite쓰기
xexecute실행

문자형 권한 사용 예시

# 소유자에게 실행 권한 추가
chmod u+x script.sh

# 그룹에서 쓰기 권한 제거  
chmod g-w document.txt

# 기타 사용자의 모든 권한 제거
chmod o-rwx private.txt

# 모든 사용자에게 읽기 권한 부여
chmod a+r public.txt

# 소유자에게만 모든 권한, 나머지는 읽기만
chmod u=rwx,go=r important.txt

🛡️ 기본 권한 설정 (umask)

umask - 기본 파일 권한 설정

umask는 새로 생성되는 파일과 디렉터리의 기본 권한을 설정하는 명령어입니다.

💡 동작 원리: 시스템 기본 권한에서 umask 값을 빼서 실제 권한을 결정합니다.

# 현재 umask 값 확인
umask

# umask 값을 8진수로 확인  
umask -S  # 문자형으로 표시

umask 계산 방법

파일 유형시스템 기본 권한umask 예시실제 권한계산
파일666 (rw-rw-rw-)022644 (rw-r--r--)666 - 022 = 644
디렉터리777 (rwxrwxrwx)022755 (rwxr-xr-x)777 - 022 = 755

umask 설정 예시

# umask를 022로 설정 (일반적인 설정)
umask 022

# 파일 생성 테스트
touch test.txt
ls -l test.txt
# 결과: -rw-r--r-- (644 권한)

# 디렉터리 생성 테스트  
mkdir testdir
ls -ld testdir
# 결과: drwxr-xr-x (755 권한)

# 더 제한적인 umask 설정
umask 077
touch private.txt
ls -l private.txt  
# 결과: -rw------- (600 권한 - 소유자만 접근 가능)

일반적인 umask 값

umask파일 권한디렉터리 권한용도
022644 (rw-r--r--)755 (rwxr-xr-x)일반적인 설정
002664 (rw-rw-r--)775 (rwxrwxr-x)그룹 공유 환경
077600 (rw-------)700 (rwx------)높은 보안이 필요한 경우
000666 (rw-rw-rw-)777 (rwxrwxrwx)모든 권한 허용 (비추천)

💾 파일 시스템 마운트 (mount)

mount - 파일 시스템 연결

mount는 저장 장치나 파일 시스템을 리눅스 디렉터리 구조에 연결(마운트)하는 명령어입니다.

mount [옵션] [장치] [마운트포인트]

기본 사용법

# 현재 마운트된 파일 시스템 확인
mount

# 특정 파일 시스템만 확인
mount -t ext4

# USB 드라이브 마운트
sudo mount /dev/sdb1 /mnt/usb

# CD/DVD 마운트
sudo mount /dev/cdrom /mnt/cdrom

mount 주요 옵션

옵션설명예시
-t [파일시스템]파일 시스템 유형 지정mount -t ntfs /dev/sdb1 /mnt/usb
-o [옵션들]마운트 옵션 지정mount -o ro,noexec /dev/sdb1 /mnt/usb
-a/etc/fstab의 모든 항목 마운트mount -a
-r읽기 전용으로 마운트mount -r /dev/sdb1 /mnt/usb

주요 마운트 옵션 (-o 옵션)

마운트 옵션설명사용 예시
ro읽기 전용 (read-only)mount -o ro /dev/sdb1 /mnt/usb
rw읽기/쓰기 가능 (read-write)mount -o rw /dev/sdb1 /mnt/usb
noexec실행 파일 실행 금지mount -o noexec /dev/sdb1 /mnt/usb
nosuidsetuid/setgid 비트 무시mount -o nosuid /dev/sdb1 /mnt/usb
user일반 사용자도 마운트 가능mount -o user /dev/sdb1 /mnt/usb

umount - 파일 시스템 연결 해제

마운트된 파일 시스템을 안전하게 연결 해제하는 명령어입니다.

# 마운트 포인트로 언마운트
umount /mnt/usb

# 장치명으로 언마운트  
umount /dev/sdb1

# 강제 언마운트 (사용 중인 경우)
umount -f /mnt/usb

# lazy 언마운트 (사용이 끝나면 자동 해제)
umount -l /mnt/usb

실전 마운트 예시

# 1. USB 드라이브 확인
lsblk
# 또는
fdisk -l

# 2. 마운트 포인트 생성
sudo mkdir /mnt/myusb

# 3. 마운트 실행
sudo mount /dev/sdb1 /mnt/myusb

# 4. 마운트 확인
df -h
mount | grep sdb1

# 5. 사용 후 안전하게 언마운트
sudo umount /mnt/myusb

/etc/fstab 파일

영구적인 마운트 설정을 위해 /etc/fstab 파일을 편집합니다:

# /etc/fstab 예시
/dev/sdb1 /mnt/data ext4 defaults 0 2
UUID=1234-5678 /mnt/backup ntfs-3g defaults,uid=1000,gid=1000 0 0
필드설명예시
장치마운트할 장치나 UUID/dev/sdb1 또는 UUID=1234-5678
마운트포인트마운트될 디렉터리/mnt/data
파일시스템파일 시스템 유형ext4, ntfs-3g, vfat
옵션마운트 옵션defaults, ro, rw
dump백업 여부 (0 또는 1)0
fsck부팅시 검사 순서0, 1, 2

🎯 마무리

이번 포스트에서는 리눅스의 핵심 개념들을 종합적으로 살펴봤습니다:

  • 파일 권한 시스템: rwx 권한과 소유자/그룹/기타 사용자 구분
  • 기본 명령어: pwd, ls, cd 등으로 시스템 탐색
  • 파일 검색: find와 head를 활용한 효율적인 파일 관리
  • 데이터 흐름 제어: 리디렉션과 파이프로 명령어 연결
  • 네트워크 도구: ping으로 연결 상태 확인
  • 시스템 관리: 안전한 종료와 재시작 방법
  • 권한 관리: chmod, chown, chgrp를 통한 보안 설정
  • 기본 권한 설정: umask로 새 파일의 기본 권한 제어
  • 파일 시스템 관리: mount/umount로 저장 장치 연결 및 해제

이러한 기초 개념들을 확실히 익혀두면 리눅스 환경에서 훨씬 효율적이고 안전하게 작업할 수 있습니다! 🚀


0개의 댓글