리눅스마스터 1급 2차 내용 정리
2025. 10. 31. 10:57

 

 

기출 풀면서 헷갈렸던 부분/자주 나온 유형 위주로 정리해두었습니다.

기본적인 내용(파일 위치, 개념 등) 은 포함되지 않아, 개념 공부 후 보시면 좋을 것 같습니다.

 

(혹시 틀린 정보 있다면 댓글로 말씀 부탁드립니다.)

 

 

 

기본적인 경로

  • /var/log 하위 --> 로그 관련 폴더들 존재 (wtmp, btmp, syslog(message) 등)
  • 설정(conf) 파일들 --> /etc/{패키지명} 하위

 

 

iptables filter

Filter 설명
INPUT 목적지가 localhost. 유입되는 패킷 필터링
OUTPUT 출발지가 localhost. 나가는 패킷 필터링
FORWARD 라우터

 

`iptables -A INPUT -s 192.168.10.7 -d localhost -j DROP`

: INPUT 체인에서 source 주소가 192.168.10.7이고, 목적지 주소가 localhost 인 패킷 거부

 

`iptables -A INPUT -s 192.168.10.7 -p icmp -j REJECT`

: INPUT 체인에서 소스 주소가 192.168.10.7 인 ICMP(프로토콜) 패킷을 거부하며 대상 호스트에 메시지 전달

 

`iptables -A INPUT -s 192.168.10.0/24 ! -p icmp -j ACCEPT`

: INPUT 체인에서 소스 주소가 192.168.10.0 대역이고, ICMP 패킷이 아닌 경우, 모든 패킷을 허용한다.

 

`iptables -A OUTPUT -p tcp -d www.test.com --dport 80 -o eth0 -j DROP`

: www.test.com 에 접속하는 것을 차단하기 위해  

 

`iptables -L INPUT --line-numbers`

: INPUT 체인에 설정된 정책을 번호와 함께 출력

 

`iptables -D INPUT 3`

: INPUT 체인의 3번째 정책 제거

 

`iptables -P INPUT DROP`
`iptables -A INPUT -s 192.168.10.7 -j ACCEPT`

: 기본 설정으로 들어오는 모든 패킷을 거부하게 하고, 192.168.10.7 에서 오는 패킷만 허용

 

`iptables -A INPUT -p tcp --dport 80 -j ACCEPT`
`iptables -A INPUT -p tcp --dport 10:100 -j DROP`

: 들어오는 패킷 중 TCP 포트번호가 10번 ~ 100번인 것을 거부하나, HTTP 서비스를 위한 80 포트는 허용. 만일, 중복된 정책이 있을 경우, 먼저 등록된 정책이 적용됨.

 

`iptables -A INPUT -p tcp --dport 80 -syn -m limit --limit 100/s -j ACCEPT`

: 초당 허용 접속 개수를 제한하여 TCP flooding 공격에 대응

 

 

 

 

iptables 설정 정책 저장 및 자동 적용

명령어 설명
iptables-save > firewall.sh 현재 설정되어있는 iptables 의 rule을 firewall.sh 파일로 저장
iptables-restore < firewall.sh firewall.sh 파일에 저장되어있는 iptables 의 rule을 불러와 반영
service iptables save /etc/sysconfig/iptables 에 정책 저장

 

 

 

 

 

iptables NAT

-j 옵션 설명
SNAT 공인 IP 주소 하나를 다수의 호스트가 공유하여 인터넷을 사용할 수 있게 됨 (소스 IP 주소 변경)
DNAT 하나의 공인 IP 로 여러 개의 서버에 접속할 수 있도록 구성 가능 (목적지 IP 주소 변경)
-j 옵션 - -A 옵션 패킷 이동경로
SNAT - POSTROUTING 내부 → 외부
DNAT - PREROUTING 외부 → 내부

 

`iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 222.235.10.7`

: 첫 번째 이더넷 카드(eth0)를 통해 외부로 나가는 패킷에 222.235.10.7 IP 주소 부여

 

`iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 222.235.10.7-222.234.10.25`

: IP 대역(범위)를 지정하여 소스 주소 변경 가능
: 첫 번째 이더넷 카드(eth0)를 통해 외부로 나가는 패킷은 222.235.10.7 ~ 222.234.10.25 사이의 ip 대역으로 부여

 

`iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to MASQUERADE`

: masquerade 는 유동 IP 주소로 소스 주소를 변경할 수 있음

 

`iptables -t nat -A PREROUTING -p tcp -d 222.235.10.7 --dport 80 -j DNAT --to 192.168.10.7:80`

: 222.235.10.7 의 80번 포트로 들어오는 패킷을 192.168.10.7 의 80 포트로 연결

 

`iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080`

: eth1 네트워크 인터페이스로 수신되는 모든 패킷을 대상으로 하며(-i eth1), 웹 브라우저의 프록시 옵션을 설정하지 않고, 네트워크 상에서 투명하게 동작하는 '투명 프록시'를 설정(-j REDIRECT)

 

[참고] 리눅스에서 NAT 사용을 위한 설정 값

 - /proc/sys/net/ipv4/ip_forward 값이 1로 설정되어야 함

 

 

 

DHCP (dhcpd.conf)

  • range: 클라이언트에 할당할 IP 범위를 지정한다.
    • ex. `range 239.252.197.10 239.252.197.250;`
  • range dynamic-bootp: DHCP 클라이언트와 BOOTP 클라이언트를 함께 지원한다.
  • option domain-name: 도메인 이름 지정
    • ex. `option domain-name "kait.or.kr";`
  • option domain-name-servers: 네임 서버 지정
    • ex. `option domain-name-servers 192.168.5.13;`
  • option routers: 게이트웨이 주소 지정
    • ex. `option routers 192.168.12.1;`
  • option broadcast-address: 브로드캐스팅 주소 지정
    • ex. `option broadcast-address 192.168.12.255;`
  • default-lease-time: 초(sec) 단위로 임대요청 만료시간 지정
    • ex. `default-lease-time 7200;`
    • 7200: 2시간, 14400: 4시간
  • max-lease-time: 초 단위로 클라이언트가 사용할 IP 의 최대 시간 지정
    • ex. `max-lease-time 14400;`
  • option subnet-mask: 서브넷 마스크 지정
    • ex. `option subnet-mask 255.255.255.0;`     (하나의 네트워크만 운영 가능)
    • ex. `option subnet-mask 255.255.255.192;`    (4개의 서브넷으로 나누어 운영)
  • fixed-address: 특정 MAC 주소를 갖는 시스템(hardware ethernet) 에 고정적인 IP 주소 할당

[참고] 만일 DHCP의 로그 메시지를 다른 곳으로 전달하고 싶다면 --> log-facility 항목 사용

 - ex. `log-facility local7;`

 

Squid (프록시 서버, squid.conf)

  • cache_dir: 캐시 데이터가 저장된 경로명 저장
    • ex. `cache_dir nfs /var/spool/squid 100 16 256`
    • cache_dir nfs {경로} {캐시데이터 크기, MB} {첫 번째 디렉터리 수} {두 번째 디렉터리 수}
  • http_port [포트번호]: 사용할 포트번호 정하기
  • 아래의 문법은 모두 acl 구문으로 별칭 지정하는 문법
    • acl [별칭] src [IP 주소 대역]
    • acl [별칭] dst [IP 주소 대역]
    • acl [별칭] port [포트번호]
    • acl [별칭] srcdomain [도메인명](도메인명 적을 때 앞에 `.` 까먹지말기)
    • acl [별칭] dstdomain [도메인명](도메인명 적을 때 앞에 `.` 까먹지말기)
  • http_access allow [별칭]: 접근 허가
    http_access deny [별칭]: 접근 거부
    • ex. `acl local src 192.16810.0/24`
      `http_access allow local`
      `http_access deny all`
      --> local 별칭만 접근 허가하고, 나머지는 거부
    • ex. `acl Safe_ports port 80`
      `acl Safe_ports port 21`
      `http_access deny !Safe_ports`
      --> Safe_ports 외에는 모두 거부

 

 

 

/etc/named.conf

  • DNS. 서버 프로그램 이름은 bind, 데몬은 named
  • /etc/named.conf
    • 존(zone) 파일, 리버스 존(Reverse Zone, in-addr.arpa) 파일을 비롯한 DNA 서버의 주요한 환경설정 파일
    • 리버스 존 파일을 이용하여 IP주소에 대한 도메인 정보 조회 제공
  • /var/named
    • 루트(root) 도메인 서버의 정보를 담은 named.ca, 사용자가 설정한 zone 파일 등을 저장하는 디렉터리

 

  • directory: zone 파일의 저장 디렉터리를 설정하며, 반드시 필요한 항목
    • ex. `directory "/var/named";`
  • dump-file: 정보 갱신 시 저장 파일로 사용할 dump file 의 파일명 지정
    • ex. `dump-file "/var/named/data/cache-dump.db";`
  • statistics-file: 통계 정보를 저장할 파일 명을 지정
    • ex. `statistics-file "/var/named/data/named_stats.txt";`
  • memstatistics-file: 메모리 통계 정보를 저장할 파일명 지정
    • ex. `memstatistics-file "/var/named/data/named-mem-stats.txt";`
  • recursing-file: recursing query 정보를 저장하는 파일 명 지정

 

  • forward: forwarders 옵션과 함게 사용. only, first 둘 중 하나 (해당 내용은 yum으로 설치 시 conf에 기본적으로 제공됨)
    • `forward only;`: 도메인 주소에 대한 질의를 다른 서버에 넘김
    • `forward first;`: 다른 서버에서 응답이 없을 경우, 자신이 응답하도록 설정
  • forwarders: forward 를 처리할 서버 지정 (DNS 관련 질의를 다른 서버로 넘김) (해당 내용은 yum으로 설치 시 conf에 기본적으로 제공됨)
    • ex. `forwarders { xxx.xxx.xxx.xxx; yyy.yyy.yyy.yyy; };`
  • allow-query: 네임 서버에 질의할 수 있는 호스트 지정
    • ex. `allow-query { localhost; };`
  • allow-transfer: 존(zone) 파일 내용을 복사(transfer) 할 대상 제한
    • ex. `allow-transfer { 172.3.1.0/24; };`    (zone 파일로 받을 수 있는 호스트는 172.3.1.0/24 로 설정)
  • recurison: 하위 도메인 검색 허용 여부 지정
    • ex. `recursion yes;`
    • yes 로 설정하면 네임서버에 설정하지 않은 도메인을 질의할 경우, 캐싱 네임서버의 역할로 동작하며 DNS 질의 수행
  • acl 구문: 여러 호스트들을 하나의 이름으로 지정하여(별칭 지정) options 구문의 allow-query, allow-transfer 등에 사용 (단, 해당 acl은 allow-* 구문 이전에 작성해야 함)
    • ex. `acl "ihd" {192.168.2.24; 192.168.4/24;}`

 

 

 

/etc/named.rfc1912.zones

zone type 설명
hint 루트 도메인 지정
master 1차 네임서버 지정
slave 2차 네임서버 지정

 

 

# 루트 도메인 예시
zone "." IN {
    type hint;
    file "named.ca";
}
# Zone 예시
zone "linux.or.kr" IN {
    type master;
    file "linux.zone";
}

--> 여기서 `file "linux.zone";` 파일은 /var/named 하위에 있음

# Reverse Zone 예시
zone "3.109.210.in-addr.arpa" IN {
    type master;
    file "linux.rev";
}

--> 원래 ip 주소: 210.109.3.5

 

 

 

 

/var/named 아래 ("도메인명.zone" or "도메인명".rev)

  • 주석: `;`(세미콜론)
  • ⭐ 도메인명 맨 뒤에 무조건 `.` 붙이기
  • `$ TTL 1D`
    • 설정한 정보를 다른 DNS 서버에서 조회하였을 경우, 캐시에 보관할 시간
    • ZONE 파일의 첫 번째 라인에 위치해야 함
    • 기본 단위는 초. W, D, M 단위로 저장 가능
  • SOA 레코드 (Start Of Authority)
    • 도메인 관리자 메일, 일련 번호 등 DNS 핵심 정보 지정
    • `@` 기호는 오리진(origin) 도메인을 의미하며, /etc/named.conf 파일에서 설정한 도메인명임.
      만일, 도메인 이름을 직접 지정할 경우, 마지막에 `.` 을 반드시 추가해야 함
    • ex. `@    IN    SOA    ns.ihd.or.kr.    kait.ihd.or.kr.`
      • `ns.ihd.or.kr.`: mname. 도메인 존의 마스터 네임서버 도메인 이름
      • `kait.ihd.or.kr.`: rname. 도메인 존을 관리하는 담당자의 연락처를 도메인 이름으로 설정
        만일 rname 부분이 `admin@example.com` 이 담당자일 경우, `admin.example.com.` 으로 작성하면 됨.
      • rname 부분은 `.` 만 입력하여 필드 네임 비워두는 것도 가능함
    • 시험 중, 이 레코드 대략적으로 확인해볼 수 있는 명령어
      • ex. `dig naver.com soa +multi`
        • serial: Zone 파일이 갱신되면 증가하게 되는 일련번호. 날짜형식
          갱신된 최신 데이터인지 판단하는 "유일한 기준"
        • refresh: 주 네임서버 접근 주기 지정. 도메인 존의 데이터 변경 여부 체크
        • retry: refresh 실패할 경우 다시 시도하는 주기 (재시도할 주기)
        • expire: retry 수차례 반복 후 실패 시 폐기하여 서비스 중단처리하는 최대 기간
        • minimum: 정보 최소 보관 시간
      • refresh, retry, expire 는 "데이터 동기화" 가 목적임

레코드 추가 예시

`    IN    NS    ns.ihd.or.kr.`    (IN 생략 가능. 첫 번째 필드는 도메인명으로, 필드 공백 반드시 필요)

: 네임서버는 ns.ihd.or.kr 사용

 

`    IN    A    192.168.12.22`    (IN 생략 가능. 첫 번째 필드 공백 반드시 필요)

: IP 주소와 도메인 매핑

 

`    IN    MX    10    ihd.or.kr.`    (IN 생략 가능. 첫 번째 필드 공백 반드시 필요)

: 도메인 이름에 대한 메일 교환서버(ihd.or.kr) 알려줌

 

`15    IN    PTR    ihd.or.kr.`

: IP 주소10.0.2.15 일 때, 해당 IP 주소를 조회하면 ihd.or.kr 이 나타나도록 설정

: 여기서 만약 PTR 레코드 부분이 A 나 AAAA 의 경우, 이는 정방향 DNS

 

`www    IN    A    192.168.5.13`

: www 도메인을 사용하는 호스트의 IP 주소를 192.168.5.13 으로 설정

 

`www1    IN    CNAME    www`

: www1 도메인을 www 와 매핑

 

[참고]

첫 번째 필드가 공백인 경우, @(origin) 도메인을 생략하는 대신인 것 같음.

만약, @ 가 example.com. 이라 할 때,

`@    IN    A   192.168.5.13`  ==  `example.com.    A    192.168.5.13`

`ns   IN    A   192.168.5.13`  ==  `ns.example.com.    A    192.168.5.13`

인 것 같음

 

 

 

메일관련 / sendmail

  • /etc/aliases  -->  `newaliases` or `sendmail -bi`
    • 별칭, 특정 계정으로 수신한 메일을 다른 계정으로 전달하도록 설정
  • /etc/mail/local-host-names
    • 메일 서버에서 사용하는 도메인(ex. ihd.or.kr) 등록. sendmail 재시작 필요
    • cf. domaintable: 도메인 별칭 등록
  • /etc/mail/sendmail.cf  -->  `m4 sendmail.mc > sendmail.cf`
    • sendmail 의 기본(main) 설정 파일
    • > 방향 잘 기억해두기
  • /etc/mail/access --> `makemap hash /etc/mail/access < /etc/mail/access`
    • 메일 서버에 접속하는 호스트의 접근을 제어하는 설정파일
    • `From: spam.com    REJECT`: spam.com 으로부터 오는 메일은 거부 후 메시지 전송
    • `From: spam.com    DISCARD`: spam.com 으로부터 오는 메일은 그냥 거절
    • `From: spam.com    OK`: spam.com 으로부터 오는 메일은 DNS 조회 실패 시에도 허용 (조건 없음)
    • `                               RELAY`: host 에 지정된 메일의 수신/발신을 허용
    • `To: vip@yourdomain.com    REJECT`: 외부에서 vip@yourdomain.com 으로 오는 메일 거부
  • /etc/mail/virtusertable --> `makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable`
    • 특정 도메인의 특정 계정으로 들어온 메일을 어디로 전달할지 지정
    • ex. `webmaster@linux.com    ihduser`: webmaster@linux.com 으로 들어온 걸 ihduser에게 전달(webmaster@ --> ihduser)

/etc/mail/sendmail.cf

  • Cwlocalhost: 메일 수신 호스트의 이름 설정(주로 도메인명 이용), 도메인 여러 개일 경우 Fw 사용
  • Fw/etc/mail/local-host-names
  • Djyoungjin-mail.com
    • 메일 발송 시 발신 도메인 이름을 강제 지정 (발신 도메인을 무조건 youngjin-mail.com 으로 설정)
    • 발신 도메인의 이름은 일반적으로 sendmail 이 자동적으로 결정하므로, 특별한 경우에만 사용함
  • ~/.forward: 사용자 개인이 수신한 메일을 다른 메일로 포워딩(forwarding) 할 때 설정하는 파일로, 원하는 메일 주소를 한 줄씩 추가

 

 

 

httpd/apache (httpd.conf)

  • httpd 옵션
    • `httpd -t`: httpd.conf 의 문법적 오류 점검
    • `httpd -M`: 로딩된 모든 모듈의 목록 출력
    • `httpd -L`: 설정 가능한 지시자 확인
  •  /etc/httpd/conf/httpd.conf
    • LoadModule: DSO(Dynamic Shared Object) 방식으로 로딩할 모듈 지정
      • ex. `LoadModule    php5_module modules/libphp5.so`
    • ServerAdmin: 아파치 웹 서버 관리자의 이메일 주소 지정, 서버에 문제 발생 시 에러메시지 함께 표시
      • default) `ServerAdmin    root@localhost`
    • ServerName: 서버의 호스트이름 지정
      • default) `ServerName    www.example.com:80`
    • DocumentRoot: 웹 문서가 저장되는 기본 디렉토리 경로
      • default) `DocumentRoot    "/var/www/html"`
    • DirectoryIndex: 웹 디렉터리를 방문할 경우 처음으로 열릴(Open) 파일 목록 정리
      • ex) `DirectoryIndex      index.html   index.htm   index.php   index.jsp`
    • AccessFilename: 각 디렉터리 별 추가 설정을 위해 각각 저장하는 설정 파일 지정(ex. 접근제어(Access Control))
      • default) `AccessFilename    .htaccess`
    • AddType: 파일 확장자에 대한 MIME 등록. 해당 파일에 대한 처리방식 지정
    • Include: 별도의 설정 파일을  포함하며, 기본값은 `Include conf.d/*.conf`
      • ex) `Include    conf.d/http-mpm.conf`
    • <Directory /var/www/html></Directory>
      • AllowOverride `ALL`: AccessFileName으로 설정한 파일 이용
      • AllowOverride `AuthConfig`: AccessFileNmae에 저장된 파일에 대하여 사용자 인증지시자 사용 허락
        • AuthDBFroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require 등과 같은 지시자가 있음 (.htaccess 파일에서 확인)
# httpd.conf 예시
LoadModule	userdir_module	modules/mod_userdir.so		# 아파치 시작 시 해당 모듈 실행
Include	conf/extra/httpd-userdir.conf					# 설정파일 포함

 

  • /usr/local/apache/conf/extra/httpd-userdir.conf
    • `Userdir    public_html`
    • `Userdir    enabled(disabled)    john`    (john --> 사용자 이름)
  • 재시작: `/user/local/apache/bin/apachectl restart`
  • .htaccess
    • AllowOverride AuthConfig 로 설정해줘야 함
    • AuthName: 웹 브라우저의 인증창에 표시될 이름(메시지)을 설정
      • ex. `AuthName "Master Login"`
    • AuthUserFile: 사용자 계정 파일
      • ex. `AuthUserFile /etc/password`
    • Require: 접속을 허가할 사용자 지정
      • ex. `Require valid-user`: 사용자 계정 파일에 등록된 사용자 모두를 허가함
      • `Require [사용자명, 사용자명, ...]`: 특정 사용자 계정만 허가
      • AuthType: Basic, Digest 방식의 인증 방식 지정

 

 

 

Samba

  • samba.conf.example 에서 기본 제공되는 항목들이 있으나, 없는 것도 있음
[www]  # 윈도우에서 접근할 때 표시되는 폴더 이름을 www로 설정한다
# 간단한 설명
comment = Web Directory

# 공유 디렉토리 경로는 /usr/local/apache/htdocs
path = /usr/local/apache/htdocs

# 접근 가능한 사용자는 ihduser, kaituser 만 가능하며, 두 사용자 모두 파일 생성 및 삭제 권한 부여
valid users = ihduser kaituser
writable = yes
# (or) write list = ihduser kaituser
# 그룹으로 지정 시 @ 사용. ex) @manager

# 접속 시 사용할 이름 지정. 윈도우 운영체제에서 이름으로 접근할 때의 명칭
netbios name = ihd_com

# 공유 그룹명
workgroup = IHD

# 서버에 대한 설명
server string = IHD Server

# 접근할 수 있는 호스트는 192.168.5.0 네트워크 대역에 속한 모든 호스트들과, 로컬시스템 으로 제한
hosts allow = 127. 192.168.5

 

[참고] 127.0.0.0/8 대역은 호스트 내부 사용 용도로 예약되어 있음. "로컬시스템"

 

 

NFS (/etc/exports)

  • /etc/exports
    • `/home/share    172.30.1.0/24 (rw, no_root_square)`
    • `ro`: 읽기 전용으로 지정(기본값)
    • `rw`: 읽기 및 쓰기로 지정
    • `async`: 데이터 변경을 기록할 때 비동기적으로 처리
    • `sync`: 데이터 변경을 기록할 때 동기적으로 처리. 변경사항이 기록된 후 응답(기본값)
    • `secure`: 포트번호 1024 이하의 요청만 허가(기본값)
    • `no_root_squash`: root 접근을 허용
    • `root_squash`: root 접근을 거부하기 위하여 클라이언트의 root 요청을 nobody로 맵핑(기본값)
    • `all_squash`: NFS에서 접근하는 모든 사용자(root 포함)의 권한을 nobodyfh aovld
  • exportfs
    • ex) `exportfs -v`: nfs 서버에서 외부에 공유된 내용을 세부적인 설정 정보를 포함하여 자세히 출력
  • showmount
    • ex) `showmount -e 192.168.12.22`: nfs 클라이언트에서 nfs 서버인 192.168.12.22 의 공유된 정보 확인
  • nfsstat: nfs 서버 or nfs 클라이언트에서 nfs 관련 상태정보 출력

 

 

 

FTP (/var/vsftpd/vsftpd.conf)

  • /etc/vsftpd/vsftpd.conf: vsftpd 의 주 설정파일 (man 으로 항목 조회 가능)
    • `anonymous_enable=YES`: 익명(anonymous) 사용자의 접속 허용
    • `allow_writeable_chroot=YES`: 자신의 홈 디렉터리(chroot jail) 내에서 쓰기 작업을 할 수 있도록 허용
    • `chroot_local_user=YES`: 접속한 사용자의 홈 디렉터리를 최상위 디렉터리가 되도록 규정
  • /etc/pam.d/vsftpd: vsftpd 의 PAM(Pluggable Authentication Module) 설정 파일
  • /etc/vsftpd/ftpusers: PAM 과 연관된 설정파일로, FTP 서비스에 접근할 수 없는 사용자(계정) 지정
  • /etc/vsftpd/user_list: ftpusers 랑 기능은 유사하나, 주 설정파일인 vsftpd.conf 의 내용에 따라 다르게 동작함
    • `userlist_enable=YES` : user_list 사용(기본값)
    • `userlist_deny=NO`: user_list 에 있는 사용자 FTP 서비스 사용 가능
    • `userlist_deny=YES`: user_list 에 있는 사용자 FTP 서비스 사용 불가능(기본값)

 

 

 

백업 (backup)

  • dump
    • `xfsdump -l 0 -f home.xdump /home`: /home 디렉터리 전체를 home.xdump 장치에 백업
      • `-l 0`: 0은 백업 전체, 1 ~9 순으로 백업 정도를 나타냄
  • dd
    • `dd if=/dev/sdb1 of=/dev/sdc1 bs=1k`: /dev/sdb1 장치를 /dev/sdc1 장치로 백업. 블록 크기는 1KB 로 설정
    • `dd if=/dev/zero of=/swap_file count=1024000`: 스왑 파일명은 /swap_file, 스왑 파일 크기 1G
  • restore
    • `xfsrestore -rf home.xdump /home`: home.xdump 파일 복원
  • cpio
  • async

 

 

 

디스크 쿼터(quota)

  • /etc/fstab: 파일시스템 info. 아래는 해당 파일 기반의 정보를 볼 수 있는 명령어들
    • blkid: UUID 정보 출력
      • ex) `blkid /dev/vda1`
    • dumpe2fs: 블록사이즈 출력
      • ex) `dump2fs /dev/vda1`
    • mount
    • mke2fs: 파일시스템 생성
  • mkswap
  • swapon/swapoff
  • quota: 파일 시스템의 디스크 공간 또는 파일 개수에 대한 사용량 제한 --> `/etc/fstab`
  • /etc/fstab 파일에서 /home 관련된 영역의 4번째 필드에 추가로 기재해야 할 옵션값: `usrquota`
  • `mount -o remount /home`: /home 영역 다시 마운트
  • `quotacheck /home`: 파일시스템 체크하여 quota 기록 파일 생성
  • `edquota kaituser`: kaituser 사용자에 대한 쿼터 설정
  • xfs_quota
    • `xfs_quota -x -c "limit bsoft=100m bhard=110m ihduser"`
      : ihduser 사용자의 소프트 용량 제한 100MB, 하드 용량 제한 11MB 로 설정
    • `xfs_quota -x -c "limit -g bsoft=10g bhard=11g isoft=10000 ihard=11000 user_group"`
      : user_group 그룹에 속한 전체 사용자들의 디스크 용량 및 파일 개수를 제한

 

 

 

HTTP 상태코드

코드 설명
401 인증실패 (Unauthorized)
403 권한 없음 (Forbidden)
404 존재하지 않는 페이지 (Not Found)
405 지정된 방식으로 요청 불가능 (Method Not Allowed)
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout

 

  • 아파치 설정(httpd.conf) 할 때 ErrorDocument 관련하여 설정해야할 수 있음

 

 

 

logrotate

  • /etc/logrotate.conf
/var/log/wtmp {
	# wtmp 로그파일의 정보를 일반 사용자들이 볼 수 없도록 허가권 및 소유권 지정
	create 0600 root utmp
}

 

 

 

파일 관련 명령어

  • `chattr` : 파일 속성 변경
    • `chattr +a 파일`: 삭제는 불가능, 내용 추가만 가능
    • `chattr +i 파일`: 삭제, 변경 불가능
    • `lsattr`: 파일 속성 설정된 내용 확인
  • `getfacl`: 파일 접근 통제 리스트 get
  • `setfacl`: 파일 접근 통제 리스트 set
  • `chmod`: 파일 권한 변경
  • `chown`: 파일 소유권 변경

 

 

 

make

  • `make`: Makefile 을 이용해 바이너리 생성
  • `make install`: make 파일로 만들어진 파일을 타깃 디렉터리로 이동
  • `make distclean`: 소스코드 압축해제 및 관련정보 초기화, 파일 삭제
    • 완전 초기 상태로 바꿔주기 위해 압축파일 등을 삭제
    • 제거 명령어 중 가장 강력함
  • `make clean`: 이전에 컴파일한 내용을 삭제
  • `make mrproper`: 컴파일에 영향을 주는 정보들 삭제 (이전 컴파일하며 저장된 설정정보 삭제)
  • `make menuconfig`: 텍스트 기반의 메뉴옵션 설정 (커널 컴파일 관련 옵션 설정임)
  • `make xconfig`: X 윈도우 환경의 Qt 기반 설정도구 (옵션설정)
  • `make nconfig`: 색상키 지원 (옵션설정)

 

 

 

ssh

  • 외부 --> 내부: `sshd_config`
  • 내부 --> 외부: `ssh_config`
  • sshd_config 파일에서 `PermitRootLogin no`: root 접근 차단

 

 

 

사용자 관련

  • /etc/login.defs
    • 사용자에게 부여되는(useradd, groupadd) UID 의 최소/최대값 변경 (번외. mask 설정 가능)
    • 패스워드 암호화 기법 지정
  • /etc/skel
    • 사용자 추가 시 기본 제공되는 디렉터리
  • /etc/default/useradd
    • 사용자 추가 시 생성되는 홈 디렉터리의 기본 위치를 /users 디렉터리 내에 생성되도록 변경할 수 있음
  • usermod
    • `usermod -l kaituser -d /home/kaituser -m ihduser`
      • `-l kaituser`: ihduser 사용자명을 kaituser로 변경
      • `-d /home/kaituser`: 홈 디렉터리를 /home/ihduser 에서 /home/kaituser 로 변경
      • `-m`: 기존에 소유했던 파일이나 디렉터리를 그대로 이용 가능
  • 패스워드 변경 관련 명령어: `usermod`, `passwd`, `chage`

 

 

 

 

ipc(inter-process communication, 프로세스 간 통신)

  • 프로세스는 독립되어 있기 때문에, 내부적으로 통신하기 위해서는 별도의 조치(IPC) 가 필요
  • `ipcs -l` : 세마포어 max value 조회 가능
  • (+) 연관된지는 모르겠으나, 시험문제에 묶여서 나온 것 같아서.. 
    `/proc/sys/fs/file-max`: 최대 열 수 있는 파일 개수
    • cf) `/proc/sys/fs/file-nr`: 할당된파일 /t 할당되지 않은 파일 /t 최대 오픈 파일

 

 

 

 

외부장치, mount

  • 문제 표현 예시: "백업 정보가 담긴 usb 메모리"
  • `fdisk`: 디스크 상에서 파티션을 생성/삭제/수정할 수 있는 명령어
    • `fdisk -l`: 장착된 디스크 정보 확인 가능 (== `df -h`)
  • `/proc/mounts`: 마운트된 장비 정보 조회 가능 (cat으로)
  • `/proc/partitions`: 장치의 파티션 정보 확인 가능 (cat)
  • `/etc/mtab`: 마운트 되어있는 파일 시스템의 정보 확인 가능
  • `mount`: 하드디스크 전체나 특정 파티션을 현재 존재하는 파일시스템의 디렉터리 구조에 붙여 접근 가능하게 만듦
  • 문제에서 rw 나 /proc/~ 관련해서 나오면 마운트랑 관련되어있을 수 있음

 

 

 

 

rpm

  • 자주 쓰는 옵션
    • -gf (find 설치한 패키지명)
    • -gfi (info, 패키지 기본정보 출력)
    • -gfl (설치한 패키지 목록)

의존성 관련

  • modinfo
  • depmod
  • /lib/modules/커널버전/modules.dep

 

 

 

커널(kernel)

  • `uname -r`: 커널 버전정보만 출력