이기적 최신 기출문제 01회 오답노트
1과목
1
- 리눅스는 대부분의 코드가 C언어로 작성되어 있어 다양한 CPU 아키텍처로의 이식성이 높다.
- 리눅스는 플랫폼 종속적인 부분을 최소화하여
어셈블리 언어
로 작성하고, 나머지 대부분을C 언어
로 구현해서 다양한 하드웨어에 쉽게이식
할 수 있다.
- 리눅스는 플랫폼 종속적인 부분을 최소화하여
- 리눅스의 소스 코드 및 프로그램은 자유롭게 사용, 수정, 배포할 수 있는 자유 소프트웨어이다.
2
운영체제의 파일 시스템, 프로세스 관리, 메모리 관리, 입출력 기능 등 핵심 기능을 하나의 커널 공간에서 실행되는 단일 코드 베이스로 통합한 구조
모노리딕 커널
명령어의 입출력을 파일이나 다른 명령어로 전달한다.
리다이렉션
한 명령의 출력을 다른 명령의 입력으로 연결해 데이터 흐름을 처리한다.
파이프
운영체제의 핵심 기능을 최소화하고, 나머지 기능을 사용자 공간에서 실행하는 커널 구조
마이크로커널
3
어떤 계열의 리눅스 배포판인가?
CentOS, Fedora, Rocky Linux
Red Hat 계열
Ubuntu, Raspbian
Debian 계열
하모니카, 구름OS
Ubuntu 기반으로 한국에서 개발됨
openSuse
SUSE 계열
4
LVM(Logical) Volume Manager
물리적 볼륨을 논리적 볼륨으로 결합
하여 저장 공간을 유연하게 관리- 디스크를 추가하지 않고 기존 볼륨의 크기를
동적으로 확장, 축소
가능 - 디스크
스냅샷
기능을 제공하여 특정 시점의 데이터 백업 가능 - 캐싱 기능을 기본적으로 제공하지 않음
- 파일 시스템의 성능 개선보다는 디스크 공간 관리와 관련된 유연성 제공이 주 목적
5
리눅스 부팅 시 가장 먼저 실행되어 다른 모든 프로세스의 부모 역할을 하는 프로세스
init
현대 리눅스 배포판에서 위의 명령어를 대체하며, 병렬 처리를 통해 더 빠른 부팅 속도를 제공하는 시스템 관리 도구
systemd
6
systemd에서 제공하는 Unit 유형
- Service Unit
- [오답] **
Process Unit→ Service Unit에 의해 간접적으로 관리됨
- [오답] **
- Target Unit
- Device Unit
- Mount Unit
- Path Unit
- Socket Unit
- Timer Unit
7
GRUB2 패스워드를 잃어버렸을 때의 대처 방법
- root 비밀번호를 알고 있다면
GRUB 설정을 편집
하여 복구 가능 - 부팅 시 GRUB 메뉴에서
e
키를 눌러 GRUB 설정을 편집한 후, 패스워드를 재설정 - GRUB 메뉴 접근이 불가하다면 (root 비밀번호를 잃어버렸다면)
복구 디스크
를 통해 부팅한 후 GRUB 설정 편집 - [오답]
BIOS 설정을 초기화하고 리눅스 초기화
8
systemd를 사용한 전원 관리
시스템 종료
systemctl halt
시스템 재부팅
systemctl reboot
시스템 절전모드
systemctl hibernate
[오답]
systemctl halt→ 특정 서비스나 시스템의 현재 상태 확인
9
실제 파일과 디렉터리의 데이터 위치를 알고 있는 자료구조로, 파일 권한, 하드링크 수, 소유자 id, 파일 크기, 마지막 접근 시간 등의 정보를 담고 있다.
아이노드
[오답]
대형 파일 시스템을 더 작은 그룹으로 나누어 관리하기 위한 구조
블록 그룹
- 각 그룹은 슈퍼 블록, 그룹 디스크립터 테이블, 데이터 블록, 아이노드 테이블 등을 포함
디스크의 첫 번째 섹터로, 운영체제를 부팅하기 위한 정보를 포함
부트 섹터
파일 시스템의 크기, 빈 블록 수, 사용된 블록 수 등의 블록 그룹의 전체적인 정보를 저장
슈퍼 블록
10
X 윈도우
- 키보드, 마우스, 화면과 같은 실제 장치와
직접 통신을 수행
하고 관리 X 클라이언트
:Xlib
을 사용하여 작성된 응용 프로그램- X 서버와 X 클라이언트가 정보를 주고 받기 위해
X 프로토콜
을 사용 - [오답] 서버 클라이언트 구조를 기반으로 X 프로토콜을 통해
플랫폼 종속적GUI 환경 구현 → 플랫폼 독립적인 GUI 환경 제공
11
[ihd@www ~] ( ) HOME
/home/ihd
정답
printenv : 환경변수 값 확인 **
[오답]
echo
: 환경 변수 내용 조회할 수 있지만,$
를 변수 이름 앞에 붙여야 한다.$ echo $HOME
12
셸의 메타문자
리다이렉션을 통해 출력을 파일에 추가
»
와일드카드로, 파일 이름 패턴에서 모든 문자를 의미
논리 OR 연산자, 첫 번째 명령 실패시 두 번째 명령을 실행
** **
13
kill 명령어
SIGKILL
과 같은 특정 시그널을 다른 프로세스에 전달 가능- root 사용자만이 다른 사용자가 생성한 프로세스를 kill 가능
-l
옵션을 통해 리눅스가 제공하는 시그널 목록 확인- [오답]
root 사용자만 사용자가 직접 생성한 프로세스를 kill 가능→ 사용자는 자신이 생성한 프로세스를 직접 kill 가능
14
좀비 프로세스
- 실행이 완료되었지만, 부모 프로세스가 종료 상태를 수거하지 않아 남아있는 프로세스
- 메모리와 CPU 자원을 계속해서 소모하지 않지만 프로세스 테이블의 엔트리를 차지
- 부모 프로세스가 종료될 때 자동으로 사라지지 않음
kill
명령어로 직접 종료할 수 없음
15
셸 스크립트의 위치 매개변수
$0
: 현재 실행 중인 스크립트의 이름$1
,$2
등 : 스크립트 실행 시 전달된 인자(argument)$#
: 스크립트에 전달된 인자의 총 개수$*
: 인자 전체를 하나의 문자열(String)로 처리, 개별 인자 사이에 구분자를 추가하지 않고 출력$@
: 환경변수 $IFS 설정된 구분자를 통해 인자를 각각 나누어 출력
16
TCP/IP의 4가지 계층
데이터가 물리적으로 네트워크로 전송됨
네트워크 엑세스 계층
네트워크 간 패킷의 라우팅을 담당
인터넷 계층
데이터의 신뢰성 있는 전송을 제공
전송 계층
어플리케이션이 사용자와 상호 작용
응용 계층
17
특수 목적 IP 주소
127.0.0.1
: 루프백 주소로, 자신의 컴퓨터를 가리키며 네트워크 인터페이스를 거치지 않고 내부에서 통신할 때 사용169.254.0.0 ~ 169.254.255.255
: APIPA 범위로, DHCP 서버로부터 IP 주소를 받지 못할 경우 자동으로 할당되는 IP 주소 범위255.255.255.255
: 브로드캐스트 주소, 네트워크의 모든 호스트에게 데이터를 전송할 때 사용192.168.0.0 ~ 192.168.255.255
: 사설 IP 주소 범위, 인터넷에서 직접 사용되지 않고 내부 네트워크 구축 시 사용
18
IP가 192.168.123.132/26
서브넷 마스크
255.255.255.192
네트워크 주소
192.168.123.128
실제 사용 가능한 호스트의 수
62
계산 방법
- 서브넷 마스크 구하기
- CIDR 표기법이 /26이면 앞에서 26비트가 네트워크, 남은 32 - 26 = 6비트가 호스트 부분이다.
- 이진수로 표현 시 11111111.11111111.11111111.11000000
- 10진수로 변환하면 255.255.255.192 (서브넷 마스크)
- 네트워크 주소 구하기
- IP 주소와 서브넷 마스크를 &&(AND) 연산을 적용한다.
- IP 주소의 24비트는 모두 1이므로, 마지막 8비트만 체크하면 된다.
- 10진수로 변환
- 사용 가능한 호스트 수 구하기
- 호스트 부분이 6비트이므로 전체 IP 개수는 2^6 = 64개이다.
- 네트워크 주소(192.168.123.128)와 브로드캐스트 주소(192.168.123.191)는 사용불가이므로, 실제 사용한 호스트 수는 64 - 2 = 62개이다.
19
ip 명령어
ifconfig
대체- 네트워크 인터페이스에 IP를 할당하거나 제거 가능
- 네트워크 인터페이스를 활성화하거나 비활성화 가능
- [오답]
라우팅 정보 출력을 위해 ip 명령어 대신 route 명령어를 사용→ ip route를 사용하여 라우팅 정보를 출력하거나 수정한다.
20
네트워크 장애 분석을 위해
패킷
이 어떤 경로로 전송되는지추적
하기 위한 명령어traceroute
[오답]
네트워크 연결, 라우팅 테이블, 인터페이스 통계 등을 보여주는 명령어
netstat
네트워크 인터페이스의 링크 상태를 확인하고 설정하는 도구
mii-tool
DNS
서버에서호스트 이름을 IP 주소로 변환
하거나,도메인 네임 정보
를 확인하는 명령어dig
2과목
21
리눅스의 루트 계정 관리 방안
- root 권한이 필요할 때, root 사용자로 로그인하는 것보다
sudo
명령어를 통해 임시로 권한을 획득하여 명령어 실행 /etc/passwd
파일을 조사하여UID의 설정이 0
인 복수의 사용자가 있는지 점검- 환경 변수
TMOUT
설정을 하여 자동 로그아웃이 되도록 함
22
다음의 상황에서 사용자 계정 관리 방안
운영팀에 새로 입사한 인턴은 3개월 간 근무를 한다. 인턴은 3개월간 시스템에 로그인하여 백업이 잘되는지 모니터링하는 업무를 수행한다.
- 사용자 계정 추가 시
useradd -e
명령어 사용 - 사용자 그룹은 운영팀으로 지정하고 적절한 권한 부여
passwd -e
명령어를 사용하여 사용자가 다음 로그인시 패스워드를 직접 변경하도록 유도- [오답] 3개월 이후 사용자 계정이 만료되도록
~~chage -e
명령어를 사용~~ → chage -E를 사용해야 함chage - E
: 계정 만료 후 패스워드가 비활성화 될 때까지 유예기간 설정
23
[root@www ~] #
root:$6$D2v/NwzEl6u9nOvL$0NSNUZZPaO
UXGD8Mmx6/6B1bcKuGRM:0:99999:7::
bin:*:19326:0:99999:7::
daemon:*:19326:0:99999:7::
adm:*:19326:0:99999:7::
lp:*:19326:0:99999:7::
sync:*:19326:0:99999:7::
shutdown:*:19326:0:99999:7::
halt:*:19326:0:99999:7::
mail:*:19326:0:99999:7::
(중간 생략)
[root@www ~] #
위의 파일을 출력하는 명령어
cat /etc/shadow
/etc/shadow
: 사용자의 암호화된 비밀번호 및 패스워드 정책 관련 정보를 저장하는 파일
24
사용자가 현재 세션에서 다른 그룹으로 전환하여 해당 그룹의 권한을 일시적으로 적용받도록 하는 명령어
newgrp
25
사용자와 그룹 관리 관련 명령어
그룹 파일의 무결성 검사
grpck
사용자가 시스템에 로그인할 때 사용
login
다른 사용자 계정으로 전환
su
파일 관리 명령어
파일 및 디렉터리의 목록과 정보 조회
ls
26
$ ls -l /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 Oct 1 2022 /usr/sbin/adduser -> useradd
위의 명령어의 실행결과
- root 그룹의 사용자는 adduser 파일에 대한 읽기 권한 존재
- adduser 파일의 소유자는 root
- adduser 파일 실행 시
useradd
명령어가 실행됨 - [오답] 일반 사용자에게 useradd 파일을 실행할 권한 없음 → useradd 파일의 권한은 추가로 확인해야 함
/user/sbin/adduser
는 심볼릭 링크 파일로, 모든 사용자에게 읽기, 쓰기, 실행 권한을 부여하고 있음- 하지만, 해당 명령어가 가리키고 있는 실제 파일
useradd
의 실행 권한은 해당 출력 결과만으로 알 수 없음
실행 결과 분석
- 첫 번째 문자
l
은 심볼릭 링크(symbolic link) 를 의미함
- 즉,
/usr/sbin/adduser
파일은 실제 실행 파일이 아니라 다른 파일을 가리키는 링크- 여기서
useradd
라는 실제 파일을 가리키고 있음 →/usr/sbin/adduser
명령어를 실행하면 실제로는useradd
명령어가 실행됨rwxrwxrwx
(모든 사용자 권한777
부여)
- 소유자 (
root
) →rwx
(읽기, 쓰기, 실행 권한)- 소유 그룹 (
root
) →rwx
(읽기, 쓰기, 실행 권한)- 기타 사용자 (
others
) →rwx
(읽기, 쓰기, 실행 권한)
27
$ umask ( )
$ touch myfile
$ ls -l myfile
-rw-r--r--. 1 francis francis 0 Sep 19 15:39 myfile
빈칸에 들어갈 값
0022
[계산과정]
- 기본 파일 권한
- 일반 파일 :
0666
, 디렉터리 :0777
- 일반 파일 :
- umask값이 적용되는 방식
파일의 실제 권한 = 기본권한 - 실제 파일 권한
rw-r—r—
: 실제 파일 권한으로,0644
- 즉, 0666 - 0644 = 0022
- 기본 파일 권한
28
$ ls -ld /tmp
drwxrwxrwt 18 root root 4096 Sep 19 15:58 /tmp
위의 명령어의 수행과 수행결과
/tmp
: 디렉터리 →drwxrwxrwt
에서d
가 디렉터리를 의미- 디렉터리 자체 정보를 출력하기 위해
-d
옵션 사용 →ls -ld
에서-d
사용 - 누구나
/tmp
디렉터리에 파일을 생성 가능 - [오답] 누구나
/tmp
디렉터리에서다른 사용자가 생성한 파일 삭제 가능→ 자신이 생성한 파일만 삭제 가능drwxrwxrwt
에서t
가 스티키 비트- 스티키 비트가 없는 경우, 디렉터리에 쓰기 권한(
w
)이 있는 경우 다른 사용자의 파일도 삭제 가능 - 스티키 비트가 있는 경우, 사용자는 자신이 생성한 파일만 삭제 가능
- 즉,
/tmp
디렉터리는 스티키 비트(t)가 설정되어 있어서 모든 사용자가 파일을 생성할 수 있지만, 자신이 생성한 파일만 삭제할 수 있음
29
$ ls -lR
total 0
drwxrwxr-x. 3 francis francis 18 Sep 19
16:57 dir1
/dir1:
total 0
drwxrwxr-x. 2 francis francis 6 Sep 19
16:57 dir2
/dir1/dir2:
total 0
디렉터리 dir1을 삭제하는 방법
rmdir -p dir1/dir2
rmdir
: 비어있는 디렉터리만 삭제rmdir -p
: 경로에 있는 비어있는 하위 디렉터리부터 상위 디렉터리까지 순차적으로 삭제
30
스왑(swap)
swapon
: 활성화된 스왑 공간 확인swapoff
: 스왑 공간 비활성화- 스왑 공간은 메모리가 부족할 때 디스크의 일부를 메모리처럼 사용
- [오답] 스왑 공간은 항상
물리적 메모리보다 우선적으로 사용→ 물리적 메모리가 부족할 때 사용되며, 물리적 메모리보다 우선적으로 사용되지 않음
31
현재 실행중인 백그라운드 작업 목록을 표시하는 명령어
jobs
포그라운드에서 중지된 작업을 백그라운드에서 다시 실행하는 명령어
bg
32
nohup 명령어
- 터미널 세션이 종료된 후에도 프로세스를 계속 실행함
- 기본적으로
nohup.out
파일에 출력이 저장 - 시스템이 종료되면 해당 프로세스도 종료됨
- [오답] 프로세스를 백그라운드에서
자동 실행→ 자동 실행되지 않음- 백그라운드에서 실행하려면 명령어 뒤에
&
를 추가해야 함
- 백그라운드에서 실행하려면 명령어 뒤에
33
$ ls -l /etc/at.*
-rw-r--r--. 1 root root 1 Sep 29 2022 /etc/at.deny
$ cat /etc/at.deny
$
실행결과 분석
ls -l /etc/at.*
ls -l
: 지정된 파일의 상세 정보 출력/etc/at.*
: /etc 디렉터리 내에서at.
으로 시작하는 모든 파일을 찾음
-rw-r--r--. 1 root root 1 Sep 29 2022 /etc/at.deny
-
: 일반 파일(디렉터리 X)rw-r—r—
: root만 수정 가능하고, 다른 사용자들은 읽기만 가능.
: SELinux 보안 컨텍스트 존재- 즉,
/etc/at.deny
파일은 root만 수정 가능하고, 다른 사용자는 읽기 가능
cat /etc/at.deny
/etc/at.deny
파일에는at
명령어를 사용할 수 없는 사용자 목록이 저장됨- 아무런 내용이 출력되지 않음 → 파일이 비어있음
문제
/etc/at.allow
와/etc/at.deny
환경 설정 파일을 통해 일반 사용자가at
명령어를 사용하거나 불가하게 설정 가능/etc/at.deny
설정 파일은 root 사용자만 수정 가능/etc/at.deny
설정 파일에 지정된 사용자가 존재하지 않음- [오답]
~~/etc/at.allow
파일이 존재하지 않으므로 일반 사용자는at
명령어를 사용할 수 없음~~ → 모든 사용자는at
명령어 사용 가능/etc/at.allow
파일이 존재하지 않는 경우,etc/at.deny
파일을 참조하여at
명령어 사용이 제한됨/etc/at.deny
파일도 비어있으면, 모든 사용자가at
명령어 사용 가능
34
( ) nano*
pkill
pkill
: 주어진 정규 표현식에 부합하는 프로세스를 찾아 종료nano*
은 nano로 시작하는 모든 프로세스를 뜻함
[오답]
killall
: 프로세스 이름을 기반으로 작동하지만, 정규 표현식은 지원하지 않음kill
: 프로세스 IP(PID)를 대상으로 종료bg
: job ID를 대상으로 함
35
/proc 디렉터리
- 실행 중인 프로세스의 명령줄 인자, 작업 디렉터리, 환경 변수 등 세부 정보를 포함
- 시스템의 CPU, 장치, 파일 시스템 등의 정보도 포함
/proc/self/maps
열람시 현재 프로세스의 메모리 맵 확인- [오답]
디스크에 물리적으로 존재하는 디렉터리 → 가상 파일 시스템으로, 디스크에 물리적으로 저장된 파일이 아닌 메모리 상에서 동적으로 생성된 파일들로 구성됨
36
패키지 관리 도구
고수준 패키지 관리 도구로 패키지 의존성을 자동으로 해결하고, 패키지 저장소를 통해 패키지를 관리
yum, apt, zypper
저수준 패키지 관리 도구로 개별 패키지를 설치, 삭제하거나 정보 확인만을 수행하며 의존성 해결을 자동으로 처리하지 않음
rpm
37
rpm 명령어의 패키지 검증
rpm -V
: 패키지 파일의 무결성 검증- 검증 결과에서 5는
다이제스트(해시값)
에문제가 있음
을 나타냄 - 검증 결과가 아무것도 출력되지 않으면 해당 패키지는 정상
- [오류] 검증 결과에서 S는
파일의 소유권과 관련된 문제가 있음을 나타냄 → 파일 크기가 다름을 의미- U : 파일의 소유권이 문제가 있음을 나타냄
38
yum 명령어
패키지를 레포지토리에서 다운받아 설치
yum install mariadb
패키지 삭제
yum remove mariadb
레포지토리의 패키지 정보를 갱신
yum update mariadb
패키지 캐시 또는 메타데이터를 정리하는 명령어
yum clean all
yum clean metadata
yum clean packages
- 특정 패키지와 관련된 명령어가 아니기 때문에 특정 패키지를 지정할 수 없음
39
tar or tar.gz 파일의 생성 검증
tar -tvf archive.tar
을 통해 tar 파일의 내부 파일 목록 확인함. 간접적으로 파일이 정상적으로 생성되었는 지 확인 가능tar -xvf archive.tar
: tar 파일을 실제로 추출하여 파일들이 정상적으로 해제 되었는 지 확인tar -cvf archive.tar
: tar를 생성- [오답]
gunzip -t archive.tar.gz
:tar.gz 파일을 실제로 추출하여 파일들이 정상적으로 해제되는지 확인→ 직접적으로 무결성을 체크할 수 있는-t
옵션을 통해 gzip 파일의 무결성을 검사함
40
893 libs found in cache '/etc/ld.so.cache'
p11-kit-trust.so (libc6, x86-64) => /lib64/p11-kit-trust.so
libzstd.so.1 (libc6, x86-64) => /lib64/libzstd.so.1
libzhuyin.so.13 (libc6, x86-64) => /lib64/libzhuyin.so.13
libz.so.1 (libc6, x86-64) => /lib64/libz.so.1
libyelp.so.0 (libc6, x86-64) => /lib64/libyelp.so.0
libyaml-0.so.2 (libc6, x86-64) => /lib64/libyaml-0.so.2
libyajl.so.2 (libc6, x86-64) => /lib64/libyajl.so.2
libxtables.so.12 (libc6, x86-64) => /lib64/libxtables.so.12
위의 실행 결과에 해당하는 명령어
ldconfig -p
ldconfig
: 시스템의 공유 라이브러리의 캐시 관리-p
: 현재 캐시에 저장된 모든 공유 라이브러리 목록과 경로 출력
41
실행결과로
5.15.0-60-generic
가 올 수 있는 명령어uname -r
-r
: 커널의 정식 버전 번호 출력-s
: 커널 이름 출력-v
: 커널이 빌드된 날짜 및 빌드 번호 등 커널 컴파일과 관련된 정보 출력-a
: 관련 모든 정보 출력
42
리눅스 커널을 컴파일할 때 필요한 모듈을 선택하고, 필요한 환경 설정을 완료하였다. 그리고 커널 컴파일 또한 이상 없음을 확인하였다. 이제 이러한 설정을 유지한 채 초기 상태에서 커널을 다시 컴파일하려고 한다.
위의 상황에서 가장 먼저 사용할 수 있는 명령어
make clean
make clean
: 커널 환경설정을 제외한 대부분의 파일을 모두 제거make mrproper
: 커널 환경설정을 포함하여 모든 파일 제거make distclean
: mrproper의 동작을 모두 수행하고, 추가로 백업 및 패치 파일도 모두 제거make config
: 커널 설정을 새로 구성하거나 수정 → 관련 없음
43
모듈 간 의존성을 고려하여 모듈을 언로드 할 수 있는 명령어
modprobe
지정한 모듈을 제거할 때, 해당 모듈에 의존하는 다른 모듈도 함께 제거
modprobe -r
모듈을 제거하는 기능은 있지만,
의존성이 있는 모듈
이 있을 경우제거에 실패
rmmod
모듈을
커널에 로드
하는 명령어insmod
현재 커널에 로드된 모듈의
목록과 정보
를 출력lsmod
44
$
kernel/drivers/net/ethernet/e1000e/e1000e.ko: kernel/net/core/libphy.ko
kernel/drivers/net/ethernet/mii.ko
kernel/drivers/scsi/scsi_mod.ko: kernel/drivers/scsi/scsi_common.ko
kernel/fs/nfs/nfs.ko: kernel/fs/lockd/lockd.ko kernel/fs/sunrpc/sunrpc.ko
kernel/net/ipv4/tcp_cubic.ko: kernel/net/ipv4/tcp_cong.ko
kernel/drivers/input/serio/i8042.ko:
위의 파일을 생성할 수 있는 명령어
depmod
depmod
: 모듈 간 의존성 정보를 분석하여modules.dep
파일을 생성하는 명령어
45
커널 컴파일 과정
make menuconfig
: 커널 설정 구성make bzimage
: 부팅 가능한 커널 이미지 생성make modules
: 커널 외부에서 동적으로 로드할 모듈을 컴파일make install
: 최종적으로 생성된 커널 이미지와 모듈을 시스템에 설치
46
하드 디스크를 새로 장착 후, 시스템에 마운트 과정
fdisk -l
: 리눅스 시스템에서 하드디스크를 새로 장착한 후 확인fdisk /dev/sdb
: 파티션 생성mkfs.ext4 /dev/sdb5
: 포맷mount /dev/sd5 /mnt
: 마운트
47
CUPS(Common Unix Printing)
CUPS의 데몬으로,
프린트 요청을 관리하고 처리
하는 핵심 서비스cupsd
CUPS에서
프린터를 관리
하는 명령어로, 프린터 추가, 제거, 속성 설정 가능lpadmin
프린터 모델의
기능과 옵션을 설명
하는 환경설정 파일ppd(PostScript Printer Description)
[오답]
파일 시스템의 마운트 정보를 포함하는 환경설정 파일
fstab
48
프린터 작업의 대기열 상태 조회
프린터와 관련된
상태 정보 및 대기열 상태를 조회
하는 명령어lpstat
LPD
(Linux Printing Daemon)관리
명령어로,대기열의 상태를 관리
할 수 있지만 CUPS에서는 대기열의 상태 정보만 한정적으로 제공lpc
프린터 대기열 상태를 확인하는 명령어로, 현재 대기 중인 프린터 작업 목록 조회
lpq
[오답]
프린터 작업을 전송
하는 명령어 → 대기열 상태 조회와 관련 없음lpr
49
ALSA(Advanced Linux Sound Architecture)의 기능
- 하드웨어 기반 MIDI 합성 기능
- 다중 채널 하드웨어 믹싱
- 사운드 카드 자동 인식
- [오답]
반이중(Half-duplex)입출력 가능 → 전이중(Full-duplex) 오디오 입출력을 지원하며, 동시에 오디오의 입출력을 처리 가능
50
리눅스에서 이미지 스캔을 수행하는 명령어
scanimage
[오답]
스캐너 장치를 탐지
하는 명령어, 스캔을 직접 수행하지 않음sane-find-scanner
ADF(Automatic Document Feeder)를 사용하는 스캐너에서 여러 장의 문서를 자동으로 스캔하는 명령어
scanadf
GUI 기반의 스캔
프로그램으로, 명령어가 아닌 그래픽 프로그램xsane
51
로그인 실패 기록을 보관하는 바이너리 형식의 로그파일로, lastb 명령어로 확인 가능
/var/log/btmp
[오답]
로그인 및 로그아웃 기록
보관/var/log/wtmp
현재 로그인한 사용자 정보
기록/var/log/utmp
52
mail 서비스가 발생하는 로그 중 디버그 메시지 이상의 로그를 기록하고, 커널 관련 로그는 경고 수준 이상의 로그를 기록하는 로그 파일 설정
mail.debug; kern.warning
.
: 지정한 수준 이상의 로그를 기록함=
: 지정한 수준의 로그만 기록mail.=debug; kern.=warnig
53
리눅스 시스템에서 로그 파일을 저장할 수 있는 공간에 제약이 있다. 저장 공간의 한계로 오래된 로그는 삭제되어도 무방할 때 사용하는 명령어
logrotate
[오답]
저널 형식으로 보관된
systemd의 로그를 조회
하는 명령어journalctl
커널 메시지를 출력
하는 명령어dmesg
특정 크기의 파일을 만드는
명령어truncate
54
rsyslog
- 시스템 로그 메시지를 수집하고 저장
- 원격 서버로 로그를 전송
- 로그 메시지에 따라 다양한 처리 규칙 설정 가능
- [오류] 환경설정 파일은
/var/log→ /etc/rsyslog.conf
55
sysctl 명령어를 사용해 커널 매개변수를 동적으로 변경할 수 있지만, 시스템이 재부팅되면 설정이 초기화된다. 이를 영구적으로 적용하려면 어떤 파일의 수정이 필요한가?
/etc/sysctl.conf
[오답]
파일 시스템 마운트
와 관련된 설정파일/etc/fstab
로그 관리
설정 파일/etc/rsyslog.conf
크론 작업
을 관리하는 설정 파일/etc/crontab
56
리눅스 시스템의 보안 강화
- 시스템 내부 보안 강화
- 불필요한 네트워크 서비스 종료
- 방화벽 설정을 통해 외부 접근 제한
- 루트 사용자 계정을 직접 사용하여 원격 접속 제한
- 시스템 외부 접근 제어
- 지문 인식을 통한 출입문 인증 강화
57
리눅스의 기본 허가권은 소유자, 그룹, 다른 사용자에 대하여 지정할 수 있다. 이 한계를 극복하기 위해 파일이나 디렉터리 접근에 대한 세밀한 권한을 부여하는 보안 통제 기능 명령어
setfacl
58
SYN FLOODING 방어
/proc/sys/net/ipv4/tcp_syncookies
를 1로 설정tcp_syncookie
: SYN Flooding 공격을 방어하기 위해 SYN 쿠키를 활성화하는 설정으로 SYN 패킷이 과도하게 발생할 때 시스템 자원을 보호하는 효과가 있음
59
SELinux의 동작모드
- Enforcing : 정책 강제 적용
- Permissive : 정책을 적용하지 않고 경고만 기록
- Disabled : SELinux가 비활성화된 상태
- [오답]
Restrictive
60
백업
네트워크
로 연결된 리모트 컴퓨터의 파일들을동기화
하는 도구로 속도가 빠름rsync
아카이브로 파일을 복사
하거나아카이브에서 파일을 추출
할 때 사용cpio
dump
명령으로 생성한 백업 파일을복원
할 때 사용restore
[오답]
미리 정한 시간에 명령어, 프로그램, 작업 등을 실행
cron
- 주기적으로 백업 작업을 스케줄링하는데 사용할 수 있으나 백업을 직접 수행하는 명령어는 아님
3과목
61
아파치 웹 서버
- 아파치 재단에서 주도하는 대표적인 오픈소스 웹 서버
- 사용자 요청에 따라
별도의 프로세스나 스레드를 생성
하여 처리 Loadable Module
기능을 제공하여 서버 동작 확장- [오답] 비동기 이벤트 방식으로 동작하며, 로드밸런스와 리버스 프록시 등의 기능을 기본으로 제공 → Nginx 웹 서버
62
아파치 웹 서버의 설치 여부 확인
telnet [localhost](http://localhost) 80
: 아파치 웹 서버가 80 포트로 실행된 경우 정상적으로 응답, 웹 서버가 설치되어 있어도 실행되지 않는다면 정상 응답하지 않음sudo dnf list installed | grep httpd
: 최근 리눅스는 yum과 함께 dnf를 지원하여 패키지(서비스)를 설치하고 관리할 수 있음sudo systemctl status http
: 아파치 서비스의 상태 확인- [오답]
httpd -v
: 아파치의 버전 확인
63
아파치 웹 서버를 소스코드를 통해 설치하는 순서
/configure
: 소스코드가 저장된 폴더에서 환경 설정 및 의존성 확인make
: 소스코드 컴파일make install
: 컴파일된 파일을 시스템에 설치
64
httpd의 실행 옵션
httpd -t
: 환경 설정 파일인httpd.conf
의 문법적 오류 점검httpd -l
: 아파치 웹 서버와 함께 컴파일된 모듈 목록 출력httpd -M
: 아파치 웹 서버에 로딩된 모듈 목록 출력httpd -S
: [오류]서버의 실행중인 상태를 상세하게 표시→ 현재 설정된 가상 호스트 목록 출력
65
아파치 웹 서버의 기본 설정 항목 중 웹 디렉터리를 방문할 경우 처음 열릴 파일 목록을 지정하는 명령어
DirectoryIndex
[오답]
DSO
(Dynamic Shared Object) 방식으로로딩할 모듈
지정LoadModule
웹 문서가 저장되는 기본 디렉터리 경로 지정
DocumentRoot
기본
MIME
타입 지정DefaultType
67
PHP의 주요 설정 파일인 php.ini의 항목
HTTP, FTP 등 URL을 이용하여
파일을 오픈
할 수 있도록 구성allow_url_open
<? ~ > 형식의 이전 소스코드 방식에 대한
지원 여부
설정short_open_tag
요청을 처리할
최대 시간
설정max_execution_time
한 번의 요청으로 업로드할 수 있는
파일의 최대 개수
지정max_file_uploads
68
MySQL의 root 패스워드를 변경하기 위해 사용할 명령어
mysqladmin
69
LDAP
- TCP 기반 프로토콜
- LDAP 서버에는 여러 엔트리가 트리 구조로 구성됨
- LDAP의 엔트리는 다수의 속성으로 구성되며 속성은
이름, 값
의 형식임 - [오답] RDBMS에 비해
느린 응답 속도를 가지나,자주 변경되는 정보 관리에 유리→ RDBMS에 비해 빠른 검색 속도를 제공하지만, 자주 변경되는 정보의 관리에는 다소 불리
70
NIS 서버의 구성(맵 파일)의 내용을 확인하는 명령어
ypcat
[오답]
NIS를 이용하여 로그인한 후
인증에 사용한 NIS 서버 조회
ypwhich
NIS 서버에 등록된
사용자의 셸(shell)을 변경
ypchsh
NIS
도메인 이름을 설정
하거나 설정된 이름 표시nisdomainname
71
삼바(SAMBA)
- TCP/IP를 기반으로 한 SMB(Server Message Block) 프로토콜 이용
- WINS(Windows Internet Name Service)를 이용하여 IP 대신 컴퓨터 이름 이용 가능
- CIFS(Common Internet File System)은 SMB를 인터넷까지 확장한 표준 프로토콜
- [오답] 삼바는 GPL 기반의 자유 소프트웨어로 리눅스와 윈도우 간 디렉터리와 파일을 공유한다. 단,
USB와 같은 장치는 지원하지 않음→ USB 등을 공유하는데 사용 가능
72
삼바(SAMBA) 관련 구성요소 및 패키지
UDP 137, 138 포트
를 이용하여호스트를 검색
하고,TCP 139번 포트
를 이용하여호스트에 접속
nmbd
TCP 445
포트를 이용하며,삼바 프로토콜의 주요 기능
담당smbd
삼바 관련 라이브러리 및 스크립트 등을 포함하는 핵심 패키지
samba
삼바 서버 및 클라이언트에서 공통으로 사용하는 설정 및 명령어를 포함하여 제공
samba-common
73
삼바 서비스가 사용하는 설정 파일인 smb.conf의 security 옵션 항목 중 삼바 서버에 접속 시 OS에 로그온한 사용자명으로 패스워드를 확인하는 것
user
[오답]
인증 없이
삼바 서버에 접근share
윈도우 서버와 같은
다른 삼바 서버에 사용자명과 패스워드를 전달
하여 확인server
윈도우 서버의
도메인 컨트롤러에 사용자명과 패스워드를 전달
하여 확인domain
75
NIS의 설정 파일인 /etc/export의 항목
root 권한의 접근 허용
no_root_squash
root 요청을 nobody(또는 nfsnobody)로 매핑
root_squash
모든 사용자(root 포함)의 권한을 nobody(또는 nfsnobody)로 매핑
all_squash
특정 계정의 권한(uid)을 할당
anonuid
76
vsftpd 서버 관련 설정 파일
vsftpd 서버의 기본 설정 파일
/etc/vsftpd/sftpd.conf
vsftpd 서버에 접근할 수 없는 사용자 지정
/etc/vsftpd/ftuser
user_list deny=NO
로 설정되면, user_list에 등록된 사용자는 FTP 서비스 사용 가능/etc/vsftpd/user_list
vspftd의 PAM(Pluggable Authentication Module) 설정 파일
/etc/pam.d/vsftpd
77
메일 관련 프로토콜
TCP 25번 포트를 이용하며, 이메일을 전송하기 위한 프로토콜
SMTP
TCP 143번 포트를 이용하며 메일 서버에 도착한 메일을 수신하는 프로토콜
IMAP
메일 박스에 도착한 메일을 가져오거나 전달하는 역할을 수행하는 프로그램으로 대표적으로 procmail이 있음
MDA
사용자가 메일을 수신 혹은 발신할 때 사용하는 프로그램으로 대표적으로 kmail(KDE 기반), evolution(X 윈도우 기반), mutt(텍스트 기반) 등이 있음
MUA
78
sendmail의 주요 설정 파일 중 /etc/aliases
- 메일의 별칭 또는 특정 계정으로 수신한 이메일을 다른 계정으로 전달하도록 설정
webmaster
: ihduser.kaituser와 같은 형식을 따름admin: :include:/etc/mail_admin
와 같은 형식으로 사용자 이름이 지정된 파일을 지정- [오답]
sendmail —reload**명령으로 적용 → **newaliases나 sendmail -bi 명령으로 적용
79
/etc/mail/access의 내용 수정 후 적용
( ) hash /etc/mail/access < /etc/mail/access
makemap
/etc/mail/access
: 메일 서버에 접속하는 호스트의 접근을 제어하는 설정 파일
80
sendmail의 /etc/amil/sendmail.cf 설정 파일 항목
메일 수신 호스트 이름 설정
Cw
메일 발송 시 발신 도메인 이름을 강제로 지정
Dj
sendmail이 회신(return) 메일을 보낼 때 사용하는 사용자 이름 지정
Dn
relay 허용 도메인 설정
FR-o
81
sendmail 관련 명령어 중 메일 큐의 내용을 표시하는 명령
mailq
82
DNS 및 리눅스 DNS 서비스
- DNS는 TCP 53번 포트와 UDP 53번 포트를 모두 이용
- [오답]
~~/etc/host~~
파일을 이용하여 로컬 호스트에서만 사용할 수 있는 항목 설정 → /etc/hosts 파일 - [오답] DNS 서버 종류 중
secondary Name Server는 도메인 관리 없이 리졸빙(resolving) 역할만 수행 → caching name server - [오답] 도메인 이름에 대한 IP를 관리하며, I
P를 이용하여 도메인명을 역으로 확인할 수 없음→ IP에 대한 도메인명을 확인하기 위해 사용
83
DNS 관련 프로그램인 bind의 보안성을 향상하기 위해 사용, bind 관련 기본 디렉터리를 가상의 디렉터리로 변환하는 패키지
bind-chroot
84
/etc/named.conf 설정 파일
- 주석은
/ * ~ *, //, #
등을 모두 사용 - 주요 구문의 마지막에는 세미콜론을 붙임
- 별도의 파일에 설정을 정의한 후 include 지시자로 포함
- [오답] options.acl, logging, zone 등의 주요 구문이 있고, 각 구문은 **
대괄호로 둘러쌈 → **중괄호
85
/etc/named.conf의 options 구문
zone 파일의 저장 디렉터리를 설정하며, 반드시 필요한 항목임
directory
forwarders와 함께 사용하며 도메인 주소에 대한 질의를 다른 서버에 넘김
forward only
네임 서버에 질의할 수 있는 호스트 지정
allow-query
존(zone) 파일 내용을 복사(transfer)할 대상 제한
allow-transfer
하위 도메인 검색 허용 여부 지정
recursion
86
SOA(Start Of Authority) 레코드 속성
Zone 파일이 갱신되면 증가하게 되는 일종의 일련번호
Serial_number
보조 네임 서버가 정보 업데이트를 위해 주 네임서버에 얼마나 자주 접근, 점검할 지 지정
Refresh_number
네임 서버(Name Server)의 호스트명과 도메인명을 지정하며,
세미콜론(;
).
으로 끝남Nameserver
보조 네임 서버가 주 네임 서버로 접근 실패한 경우 재시도할 주기 지정
Retry_number
87
반가상화
- 게스트 OS는 하이퍼바이저에 하드웨어의 제어를 요청하여 동작
- 하이퍼바이저가 하드웨어 사용을 통제하므로 상대적으로 높은 성능 제공
- XEN은 CPU 전가상화, 반가상화를 모두 지원하는 하이퍼바이저 기반의 가상화 기술
- [오답] 윈도우, 리눅스 등 다양한 게스트 OS를
수정없이사용 → 게스트 OS의 수정이 필요하며 리눅스 등 오픈소스가 주로 지원함
88
가상화 기술, 가상화를 지원하는 프로그램
게스트 운영체제의 설치가 필요 없는 경량화된 가상 기술
Docker
오라클이 주도하여 개발 및 배포하고 있는 가상화 소프트웨어
VirtualBox
[오답]
SaaSIaaS 형태의 클라우드 컴퓨팅을 구축할 수 있는 상용 프로그램OpenStack
인텔 CPU가 지원하는 VT-x 및 AMD-V를 기반으로 CPU 전가상화를 지원하는 기술
KVM
89
가상화 관련 명령어 & 도구
가상화 현황을 top(CPU 자원 상태 등 표시)와 유사한 형식으로 출력
virt-top
텍스트 기반의 콘솔 환경에서 가상머신을 관리해주는 도구
virsh
가상 머신을 손쉽게 시작 및 종료할 수 있고, 가상 머신의 CPU 사용량, 호스트 CPU 사용량 등을 모니터링 할 수 있는 GUI 기반의 도구
virt-manager
Linux에서 가상화 지원을 위한 API, 데몬, 라이브러리 관리 툴들의 모음
libvirt
가상화 관리 도구와 통신하여 원격 도메인의 명령을 전달
[오답]
virtlib→ libvirtd
90
가상화 지원 소프트웨어의 디스크 이미지 형식
버추얼박스에서만 사용할 수 있는 고유의 이미지 형식
VDI(Virtual Disk Image)
버추얼박스, Hyper-V, Xen에서 사용할 수 있는 디스크 이미지 형식
VHD(Virtual Hard Disk)
버추얼박스, VMWare Player에서 사용할 수 있는 디스크 이미지 형식
VMDK(Virtual Machine Disk)
제품 및 플랫폼 간의 가상 장치 교환을 지원하기 위한 파일 형식 즉, 가상머신을 배포하고 이동할 수 있도록 설계된 패키지 형식
OVA(Open Virtualization Appliance)
91
프록시 서버의 사용 분야
- 데이터 캐시 - 컨텐츠 요청에 대한 응답 속도 향상
- 요청 전달 - 다수의 서버로 서버 팜(Server Farm)을 구성한 후 규칙에 따라 요청을 전달하여 부하분산을 지원
- 컨텐츠 점검 : 전송 컨텐츠를 분석 혹은 점검하여 악성 코드 전달 방지
- [오답] 구성 비용 절감 -
웹 서버와 응용 서버를 하나로 통합 및 대체하여 운영 비용 절감→ 프록시는 웹 서버와 응용 서버를 하나로 통합 및 대체하는 역할을 하지 않는다. 오히려 기존 서버 시스템에 추가적으로 도입되는 인프라임. 또한, 직접적인 비용 절감 효과도 없음
92
리눅스에서 사용할 수 있는 대표적인 프록시 서버의 명칭
squid
[오답]
DNS 서비스 명칭
named
DHCP 서비스 명칭 (IP 주소 할당 관련)
dhcpd
SAMBA 관련 서비스 명칭 (파일 및 프린터 공유 관련)
smbd
93
DHCP 설정 파일인 dhcpd.conf의 항목
클라이언트에 할당할 IP 범위를 지정
range
네임 서버 지정
option domain-name-servers
게이트웨이 주소 지정
option routers
[오답]
임대 요청 만료 기간 없이 할당된 주소를 계속 유지하도록 지정→ 특정 MAC 주소를 갖는 시스템에 고정적인 IP주소를 할당fixed-address
94
리눅스 원격 접속 및 제어 서비스
비트맵 기반 RFB(Remote Frame Buffer) 프로토콜을 이용하여 원격 접속
VNC(Virtual Network Computing)
VNC 서버에 접근할 때 사용할 패스워드를 설정하는 명령어
vncpasswd
대표적인 VNC Client 프로그램
tigervnc
TCP [오답]
21번→ 22번 포트를 이용하며 암호화를 이용한 안전한 명령어 전달 및 제어를 지원ssh
- TCP 21번 포트는 FTP를 위한 기본 제어 포트임
95
NTP 서비스 및 관련 명령어
/etc/ntp.conf
를 기본 설정 파일로 이용하며, server 항목에 NTP 서버를 지정- 계급(Stratum)을 이용하며, 숫자가 낮은 계급(단계)이 더 품질이 우수
NTP(Network Time Protocol)을 구현한 프로그램
chrony
[오답]
NTP 질의 명령어→ 원격 서버와 시간을 동기화ntpdate
96
ifconfig 명령 실행 결과
[root@localhost ~]# ifconfig
enp0s3: flags=4419(UP,BROADCAST,RUNNING,PROMISC,MULTICAST)
mtu 1500
inet 10.0.2.54 netmask 255.255.255.0
broadcast 10.0.2.255
inet6 fe80::a00:27ff:fe5b:e837
prefixlen 64 scopeid 0x20(link)
ether 08:00:27:5b:e8:37 txqueuelen
1000 (Ethernet)
RX packets 444 bytes 67236 (65.6 KiB)
RX errors 0 dropped 0 overruns 0
frame 0
TX packets 465 bytes 51027 (49.8 KiB)
TX errors 0 dropped 0 overruns 0
carrier 0 collisions 0
네트워크 기반 공격 중 어떤 공격을 의심할 수 있는가
스니핑(Sniffing)
- ifconfig 출력 시 네트워크 정보에 PROMISC(Promiscuous Mode)가 설정되어 있다.
- PROMISC : 일반적으로 네트워크 인터페이스는 자신에게 향하는 패킷만 수신하지만, PROMISC이 활성화되면 해당 네트워크를 지나가는 모든 패킷을 수신함
네트워크 트래픽을 도청하여 민감한 정보를 가로채는 공격 방식
스니핑(Sniffing)
[오답]
네트워크 서비스 혹은 패킷 정보를 임의로 변경하여 공격에 사용하는 기법
스푸핑(Spoofing)
공격 대상의 시스템 및 네트워크 취약점 등을 공격하여 과도한 부하를 발생시키고 정상적인 서비스를 불가능하게 하는 가용성 침해 공격
DoS(Denial of Service)
DDoS의 에이전트 역할을 하는 악성코드
malware
97
DoS(Denial of Service)
ICMP Echo 패킷을 정상적인 크기(64k)보다 매우 크게 전송하여 시스템에 문제를 일으키는 공격 기법
Ping of Death
발신 IP 주소를 공격 대상의 IP 주소로 위장한 후 공격대상에게 전송하는 공격 기법
Land Attack
대량의 UDP 패킷을 전송하여 공격 대상의 자원을 소모시키는 공격 기법
UDP Flooding
다양한 포트번호를 이용한 접속 시도로 공격 대상 서버에서 동작하는 서비스를 발견하는 공격 기법
Port Scanning
IP fragmentation에 따라 패킷을 재조립할 때 오프셋(offset)을 임의 변조하여 문제를 일으키는 공격 기법
Teardrop Attack
98
리눅스를 대상으로 한 해킹 또는 악성 프로그램
데이터를 암호화하여 사용할 수 없도록 만든 후 금전을 요구하는 악성 프로그램
랜섬웨어(Ransomware)
정상적인 프로그램으로 가장하였으나 내부에 악성코드를 담고 있는 프로그램
트로이목마(Trojan Horse)
스스로 실행되는 악성 소프트웨어로 자기 복제와 다른 시스템으로 전파되는 특징을 가짐
웜바이러스(Warm Virus)
해커와 같이 일반적으로 권한이 없는 사용자가 접근할 수 없는 영역에 접근하여 시스템을 제어하도록 설계된 악성 소프트웨어 모음
루트킷(rootkit)
99
리눅스 시스템에서 사용할 수 있는 대표적인 공개형 IDS 프로그램
Snort
[오답]
리눅스의 방화벽이라고도 하며 패킷 필터링 정책을 사용하여 특정 패킷을 분석하고 허용 또는 차단할 수 있음
iptables
최근 리눅스에서 방화벽 규칙을 관리하는 데몬
firewalld
네트워크 설정을 확인하고 제어하는 명령어
ifconfig
100
iptables rule
iptables -A INPUT -s 192.168.10.7 -d localhost -j DROP
- Source IP가 192.168.10.7인 패킷에 대해 동작
- 목적지 주소가 설정 시스템(localhost)인 경우 동작
- 룰에 해당하는 패킷을 대상으로 함
- [오답] 192.168.10.7에
거부가 되었음을 전달→ 전달하지 않음- DROP : 패킷을 거부하고 버림
- REJECT : 패킷을 거부하고 상대방에게 응답 메시지 전송