리눅스 배포판 상관없이 통하는 ‘공통 설정 파일’ 핵심 정리
리눅스는 우분투(Ubuntu), 레드햇(RHEL), 센트OS(CentOS) 등 수많은 배포판이 존재합니다. 배포판마다 패키지 설치 명령어(apt, yum)나 네트워크 설정 방식은 조금씩 다를 수 있습니다.
하지만 다행히도 리눅스에는 **FHS(Filesystem Hierarchy Standard)**라는 표준이 있어, 시스템의 뼈대가 되는 핵심 설정 파일들의 위치와 역할은 99% 동일합니다.
오늘은 리눅스 관리자라면 머릿속에 꼭 넣어두어야 할 리눅스 공통 설정 파일들을 기능별로 분류하여 정리해 드립니다. 이 글을 즐겨찾기 해두고 필요할 때마다 꺼내 보세요.
1. 사용자 및 권한 관리 (User & Auth)
리눅스 서버 보안의 시작이자 끝입니다. 사용자 계정과 관련된 파일들은 모두 /etc 디렉토리에 모여 있습니다.
/etc/passwd
- 기능: 시스템의 모든 계정 정보를 담고 있습니다. (아이디, UID, GID, 홈 디렉토리, 쉘 정보)
- 특징: 누구나 읽을 수(Read) 있습니다. 따라서 보안상 실제 비밀번호는 이곳에 저장되지 않습니다.
/etc/shadow
- 기능: 사용자들의 비밀번호가 **암호화(Hash)**되어 저장된 파일입니다.
- 특징: 오직 관리자(root) 권한으로만 읽을 수 있어 보안을 유지합니다.
/etc/group
- 기능: 사용자 그룹(Group) 정보를 정의합니다.
- 활용: 특정 사용자를
docker그룹이나sudo그룹에 포함되었는지 확인할 때 주로 열어봅니다.
/etc/sudoers
- 기능: 일반 사용자에게 관리자 권한(
sudo)을 어디까지 허용할지 정의합니다. - 주의: 이 파일은 권한 설정이 꼬이면
sudo명령 자체가 먹통이 될 수 있으므로, 반드시visudo명령어를 통해 편집해야 문법 오류를 방지할 수 있습니다.
2. 네트워크 및 호스트 설정 (Network & Host)
네트워크 인터페이스 설정(IP 할당 등)은 배포판마다 차이가 크지만, 아래 파일들은 공통적으로 사용됩니다.
/etc/hosts
- 기능: IP 주소와 도메인 이름을 1:1로 매핑해주는 ‘로컬 전화번호부’입니다.
- 활용: DNS 서버를 거치지 않고 특정 도메인을 테스트 서버 IP로 연결할 때 유용합니다.
Bash
# /etc/hosts 예시
127.0.0.1 localhost
192.168.0.5 my-test-server.com
/etc/resolv.conf
- 기능: 시스템이 사용할 DNS 서버(Nameserver) 주소를 지정합니다.
- 활용: 인터넷은 되는데 도메인 접속이 안 될 때, 이곳에 구글 DNS(
8.8.8.8) 등을 추가하여 해결하곤 합니다.
/etc/hostname
- 기능: 해당 리눅스 시스템의 고유한 이름(호스트명)을 저장합니다. 터미널 프롬프트에 뜨는 이름이 바로 이것입니다.
3. 시스템 부팅 및 하드웨어 (System & Hardware)
/etc/fstab (File System Table)
- 기능: 리눅스 부팅 시 어떤 디스크(파티션)를 어디에 연결(Mount)할지 정의합니다.
- 중요: 이 파일 설정이 잘못되면 부팅 자체가 안 될 수 있는 매우 중요한 파일입니다. (수정 전 백업 필수!)
/etc/sysctl.conf
- 기능: 리눅스 커널(Kernel) 파라미터를 실시간으로 제어하고 영구 적용하는 파일입니다.
- 활용: 서버의 네트워크 성능 튜닝, 보안 설정 강화, 메모리 관리 정책 등을 수정할 때 사용합니다.
4. 작업 예약 및 자동화 (Automation)
/etc/crontab
- 기능: 특정 시간이나 날짜에 반복적으로 명령어를 실행하도록 예약하는 스케줄러 설정 파일입니다.
- 활용: 매일 새벽 3시에 서버 백업하기, 매주 로그 파일 정리하기 등을 자동화할 때 사용합니다.
Bash
# crontab 기본 구조
# 분 시 일 월 요일 사용자 명령어
00 03 * * * root /root/backup.sh
5. 환경 변수 및 쉘 설정 (Shell Environment)
로그인할 때마다 적용되는 환경 설정을 다룹니다.
| 파일 경로 | 적용 범위 | 설명 |
/etc/profile | 전체 사용자 | 시스템에 로그인하는 모든 사용자에게 공통으로 적용되는 환경 변수 설정. |
/etc/bashrc | 전체 사용자 | 쉘(Bash)이 실행될 때마다 적용되는 함수나 별칭(Alias) 설정. (배포판에 따라 /etc/bash.bashrc일 수 있음) |
~/.bashrc | 개인 사용자 | 특정 사용자의 홈 디렉토리에 있으며, 그 사용자에게만 적용되는 개인 설정. |