기출 풀면서 헷갈렸던 부분/자주 나온 유형 위주로 정리해두었습니다.
기본적인 내용(파일 위치, 개념 등) 은 포함되지 않아, 개념 공부 후 보시면 좋을 것 같습니다.
(혹시 틀린 정보 있다면 댓글로 말씀 부탁드립니다.)
기본적인 경로
- /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 외에는 모두 거부
- ex. `acl local src 192.16810.0/24`
/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: 정보 최소 보관 시간
- serial: Zone 파일이 갱신되면 증가하게 되는 일련번호. 날짜형식
- refresh, retry, expire 는 "데이터 동기화" 가 목적임
- ex. `dig naver.com soa +multi`
레코드 추가 예시
` 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 파일에서 확인)
- LoadModule: DSO(Dynamic Shared Object) 방식으로 로딩할 모듈 지정
# 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 순으로 백업 정도를 나타냄
- `xfsdump -l 0 -f home.xdump /home`: /home 디렉터리 전체를 home.xdump 장치에 백업
- 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: 파일시스템 생성
- blkid: UUID 정보 출력
- 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 그룹에 속한 전체 사용자들의 디스크 용량 및 파일 개수를 제한
- `xfs_quota -x -c "limit bsoft=100m bhard=110m ihduser"`
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 -l kaituser -d /home/kaituser -m ihduser`
- 패스워드 변경 관련 명령어: `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`: 커널 버전정보만 출력
'Linux' 카테고리의 다른 글
| vim 문자열 일괄 변경/규칙적인 문자열도 일괄 변경가능(feat.정규표현식) (0) | 2024.06.14 |
|---|---|
| chmod 특수권한(set-uid, set-gid, sticky-bit) (0) | 2024.05.09 |
| Access, Modify, Change Time 정리 (0) | 2024.03.09 |
| [데이터 통신의 기본 이해] 네트워크 유형, 통신, 교환 방식 (1) | 2023.10.11 |
| [네트워크의 이해] OSI 7계층 & 네트워크 장비 (0) | 2023.10.11 |