🐧 Linux 심화: 파일 권한, 패키지 및 네트워크 관리

오늘은 리눅스 시스템 관리의 핵심 요소인 파일 권한(Permission), 소프트웨어 패키지 관리, 그리고 네트워크 설정에 대해 학습했다. chmodchown을 사용하여 파일 접근을 제어하고, aptdpkg로 패키지를 설치 및 관리하며, sshscp를 통해 원격 서버에 접속하고 파일을 전송하는 실용적인 기술들을 익혔다.

💡 권한과 패키지, 왜 알아야 할까?

권한 관리는 시스템의 보안을 유지하고 다중 사용 환경에서 파일을 보호하는 기본이다. 패키지 관리는 필요한 소프트웨어를 손쉽게 설치하고 시스템을 최신 상태로 유지하는 핵심 기술이다. 이 두 가지를 마스터하면 리눅스 시스템을 안정적이고 효율적으로 운영할 수 있다.


🔐 파일 권한(Permission)과 소유권

리눅스의 모든 파일과 디렉토리에는 소유자(owner), 소유 그룹(group), 그리고 그 외 사용자(others)에 대한 접근 권한이 설정되어 있다.

ls -l 명령어로 확인한 권한 정보 예시:
-rwxr-xr-x 1 root root 4096 ...

필드 의미 설명
- 파일 종류 -: 일반 파일, d: 디렉토리, l: 심볼릭 링크
rwx 소유자 권한 읽기(r), 쓰기(w), 실행(x) 가능
r-x 소유 그룹 권한 읽기(r), 실행(x) 가능 (쓰기 불가)
r-x 그 외 사용자 권한 읽기(r), 실행(x) 가능 (쓰기 불가)
1 링크 수 파일에 연결된 하드 링크의 개수
root 소유자 파일의 주인 (user)
root 소유 그룹 파일이 속한 그룹 (group)

💡 디렉토리 권한의 특별한 의미

  • r (읽기): 디렉토리 내의 파일 및 하위 디렉토리 목록을 볼 수 있는 권한.
  • w (쓰기): 디렉토리 내에서 파일을 생성, 삭제, 이름 변경할 수 있는 권한. (파일 자체의 w 권한과 무관!)
  • x (실행): cd 명령어로 해당 디렉토리에 진입할 수 있는 권한.

🛠️ 권한 및 소유권 변경 명령어

1. chmod (Change Mode): 권한 변경

chmod는 파일이나 디렉토리의 권한을 변경하며, 기호 모드숫자 모드 두 가지 방식이 있다.

  • 숫자 모드 (권장): r=4, w=2, x=1의 합으로 권한을 표현한다.
    • rwx = 4+2+1 = 7
    • rw- = 4+2+0 = 6
    • r-x = 4+0+1 = 5
    • r-- = 4+0+0 = 4
# 소유자에게 rwx, 그룹과 다른 사용자에게 r-x 권한 부여 (가장 일반적인 디렉토리 권한)
$ chmod 755 my_directory

# 소유자에게 rw-, 그룹과 다른 사용자에게 r-- 권한 부여 (가장 일반적인 파일 권한)
$ chmod 644 my_file.txt

# 모든 사용자가 실행할 수 있도록 실행 권한 추가
$ chmod +x my_script.sh

2. chown (Change Owner): 소유자 및 그룹 변경

chown은 파일이나 디렉토리의 소유자나 소유 그룹을 변경한다. (주로 sudo 권한 필요)

# 소유자를 user01로 변경
$ sudo chown user01 my_file.txt

# 소유 그룹을 team1으로 변경
$ sudo chgrp team1 my_file.txt

# 소유자와 그룹을 한번에 변경
$ sudo chown user01:team1 my_file.txt

# 디렉토리와 그 하위 모든 파일/디렉토리의 소유권을 재귀적으로 변경 (-R 옵션)
$ sudo chown -R user01:team1 my_directory/

📦 소프트웨어 패키지 관리

우분투(데비안 계열)에서는 aptdpkg를 사용하여 소프트웨어를 관리한다.

명령어 설명 주요 용도
apt 고수준 패키지 관리 도구 의존성을 자동으로 해결하며 패키지 설치, 업데이트, 삭제. (가장 권장)
dpkg 저수준 패키지 관리 도구 .deb 파일을 직접 설치/삭제. (의존성 문제 발생 가능)
apt-cache 패키지 정보 검색 패키지 검색, 정보 확인, 의존성 조회 등

apt 주요 명령어

# 1. 패키지 목록 업데이트 (설치 전 항상 실행 권장)
$ sudo apt update

# 2. 패키지 검색
$ apt-cache search net-tools

# 3. 패키지 설치
$ sudo apt install -y net-tools

# 4. 설치된 패키지 정보 확인
$ dpkg -L net-tools

# 5. 패키지 삭제
$ sudo apt remove net-tools

🌐 네트워크 설정 및 원격 접속

1. 네트워크 상태 확인

# IP 주소 및 네트워크 인터페이스 정보 확인 (최신 방식)
$ ip addr

# 네트워크 인터페이스 정보 확인 (구 방식, net-tools 필요)
$ ifconfig

# 네트워크 연결 테스트 (Google DNS 서버로 핑 테스트)
$ ping -c 3 8.8.8.8

2. 원격 접속 및 파일 전송

sshscp는 원격 서버 작업을 위한 필수 도구다.

  • ssh (Secure Shell): 원격 서버에 안전하게 로그인하고 명령을 실행한다.
  • scp (Secure Copy): ssh 프로토콜을 기반으로 원격 서버와 안전하게 파일을 복사한다.
# user01 계정으로 192.168.1.100 서버에 원격 접속
$ ssh user01@192.168.1.100

# [로컬 → 원격] 로컬의 my_file.txt를 원격 서버의 /tmp 디렉토리로 복사
$ scp my_file.txt user01@192.168.1.100:/tmp

# [원격 → 로컬] 원격 서버의 /home/user01/data.log를 현재 로컬 디렉토리로 복사
$ scp user01@192.168.1.100:/home/user01/data.log .

# [로컬 → 원격] 디렉토리 전체를 복사 (-r 옵션)
$ scp -r my_project/ user01@192.168.1.100:/home/user01/

✨ 오늘의 회고

  • 파일 권한의 세 가지 요소(소유자, 그룹, 기타)와 r, w, x의 의미를 이해하고, chmod 명령어로 권한을 변경하는 방법을 익혔다.
  • chownchgrp를 사용하여 파일 및 디렉토리의 소유권을 변경하는 방법을 학습했다.
  • apt를 중심으로 우분투에서 패키지를 검색, 설치, 삭제하는 방법을 마스터했다.
  • ip addr, ping 등 네트워크 상태를 진단하는 기본 명령어를 사용해보았다.
  • ssh 로 원격 서버에 안전하게 접속하고, scp 를 사용하여 로컬과 원격지 간에 파일을 효율적으로 전송하는 방법을 실습했다.