문제풀이 1

문제를 풀어보면서 리눅스(Unix)의 개념을 학습해본다.

1. ‘chmod() spool.sh’를 사용하여 spool.sh파일의 권한을 ‘rw-r-x-r-x’로 만들고자 한다. ()안에 알맞은 것은?

chmod는 리눅스 시스템의 권한을 설정을 하는 명령어이다. change mod의 줄임말이다. r,w,x로 구성되어있는데, 각각 다음을 의미한다.

  • r: read, 읽기권한
  • w: write, 쓰기권한
  • x: excute, 실헹권한

뒤에 따라 오는 숫자는 rwx|rwx|rwx로 나누어 이진수로 변환해주면 되므로 655가 된다.

chmod에서 사용할 수 있는 옵션은 다음과 같다.

 -c: 변경된 파일만 자세하게 보여준다.
 -f: 에러메세지를 출력하지 않는다.
 -v: 작업상태를 자세히 보여준다.
 -R: 경로와 그 하위파일들을 모두 변경한다.

2. 다음 파일의 소유자나 파일이 속한 그룹을 변경하는 chown 명령어의 옵션 중 알맞은 것은?

chown은 파일의 소유자나 파일이 속한 그룹을 변경하는 명령어이다. 사용법은 다음의 예시와 같다.

$ chown root /var/run/httpd.pid
$ chown [OPTION]... [OWNER][:[GROUP]] FILE

여기서 사용할 수 있는 옵션은 다음과 같다.

 -c: 파일 소유가 변경된 정보를 출력한다.
 -R: 경로와 그 하위 파일들의 소유권을 모두 바꾼다.
 -f: 에러메세지를 출력하지 않는다.
 -v: 작업 상태를 자세히 보여준다.

3. du 명령어에서 사용하는 옵션에 대한 설명으로 알맞은 것은?

du는 disk usage의 줄임으로 현재 디스크 사용량을 보여주는 명령어이다. 사용법은 아래와 같다.

$ cd /var/log
$ du
72  ./postgresql
4   ./apache2
88  ./mysql
13624   ./installer/cdebconf
14632   ./installer
3412    ./upstart
...
68212   .

du에서 사용가능한 옵션은 다음과 같다.

 -a: 모든 파일들의 기본정보를 보여준다.
 -b: 표시단위를 KB대신 Byte로 한다.
 -k: 표시단위를 KB단위로 한다.
 -h: 사용량을 용량을 붙여 보여준다.
 -c: 모든 파일의 디스크 사용정보를 보여주고 나서 합계를 보여준다.
 -s: 총사용량만 표시한다.
 -x: 경로내 다른 시스템이 있으면 생략한다.

4. 프로세스 중에서 Background로 실행되면서 서버의 역할을 하거나 그 기능을 도와주는 프로세스로 알맞은 것은?

데몬, 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 의미. 보통 데몬은 이름 끝에 d가 붙어있다. 시스템을 시동할 때 데몬을 함께 시작하는 경우가 많으며, 이런 데몬들은 네트워크 요청, 하드웨어 동작, 여타 프로그램에 반응하는 기능을 담당한다.

5. 명령어를 Background에서 실행하기 위하여 명령어 가장 뒤에 붙여 사용하는 문자는 무엇인가?

$ sleep 10 &
[1] 3571

6. 다음 crontab의 설명으로 알맞은 것은?

    9 11 8 10 * echo "Happy Birthday"

크론탭은 예약작업을 실행시켜주는 데몬이다. 등록 형식은 다음과 같다.

*   *   *   *   *  수행할 명령어
┬   ┬   ┬   ┬   ┬
│   │   │   │   │
│   │   │   │   │
│   │   │   │   └───────── 요일 (0 - 6) (0 =일요일)
│   │   │   └────────── 월 (1 - 12)
│   │   └─────────── 일 (1 - 31)
│   └──────────── 시 (0 - 23)
└───────────── 분 (0 - 59)

따라서 정답은 10월 8일 오전 11시 9분에 echo "Happy Birthday"를 실행한다.

7. 다음 중 사용자의 로그인 Shell을 결정하는 파일로 알맞은 것은?

# 사용할 수 있는 쉘들 확인
$ cat /etc/shells
* /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

# 로그인 쉘 변경하기
$ vi /etc/passwd
root:x:0:0:root:/root:/bin/bash # 수정

root는 유저이름

8. 다음 명령어를 실행했을 경우 결과에 대한 설명으로 알맞은 것은?

    cat < ihd.txt | cat

program < file은 program의 stdIn을 파일로부터 가져오는 것
따라서 ind.txt를 출력하고 그것을 다시 cat으로 보내 출력한다.

9. 다음 vi편집기 명령어 중 입력 모드로 전환시키는 명령이 아닌 것은?

vi편집기 입력모드 단축키는 다음과 같다.

i 커서 앞에서부터 입력(insert)
I 라인 앞에서부터 입력
a 커서 뒤에서부터 입력(append)
A 라인 뒤에서부터 입력
o 다음 줄에서부터 입력(open New Line)
r 한 문자를 대체함(replace)
R 여러 문자를 대체함

10. 다음 중 기본 DNS서버를 변경하고자 할 떄 수정해야 하는 파일은 무엇인가?

/etc/resolve.conf를 변경해준다.

11. 메일을 받을 때 사용되는 가장 일반적인 프로토콜은 무엇인가?

  • SMTP: 메일을 전송하는 프로토콜
  • POP3: 메일을 수신하는 프로토콜

12. IP 주소를 직접 입력하지 않고 부팅 시 서버로 받아오는 데 사용하는 프로토콜은?

DHCP(Dynamic Host Configuration Protocol)

13. 다음 중 시스템에서 사용하는 각종 프로그램들의 컴파일 되지 않은 소스파일들이 저장되어있는 디렉터리로 알맞은 것은?

/usr/src => 소스파일을 저장

유닉스 시스템의 주요 디렉토리는 다음과 같다.

디렉토리 목적
/ 루트 디렉토리
/bin(or /sbin) 시스템을 부팅하는 데 필요한 핵심 실행 파일이 저장된 디렉토리
/dev 시스템에 연결된 장치들, 예를들어 터미널, 디스크, 테이프, 모뎀
/etc 패스워드, 네트워크 주소와 이름, 시스템 시작 설정 등을 포함하는 시스템
/home 사용자 디렉토리
/lib 프로그램을 위한 다양한 공용 라이브러리들의 홈
/mnt 다른 시스템으로부터 익스포트 된 파일 시스템들을 임시로 마운트하고 있는 위치
/proc 시스템에서 현재 실행되고 있는 프로세스들의 이미지
/tmp 부팅 중 없어질 임시 파일들, 재부팅되면 여기 있는 모든 파일들은 지워진다.
/usr /usr/bin은 일부 표준 시스템 유틸리티, /usr/man은 맨페이지, /usr/include는 C프로그램 헤더, /usr/sbin은 관리자 실행 프로그램
/var 주로 관리자 용인 다양한 파일들을 저장하는 디렉토리. 특히 log파일은 /var/log에 기록

14. Shell 프로그래밍에 있어서 특별 내장변수 “$?”의 값으로 알맞은 것은?

”$?”는 마지막에 실행한 명령어의 종료값을 반환하여, 실행한 명령어의 에러 및 정상 실행을 파악하기 위해 사용한다.

15. 사용자 추가시 기본적으로 default라는 디렉토리를 제공하려면 어떤 디렉토리에 생성해야 하는가

useradd명령어를 사용하면 다음과 같은 폴터에 변화가 나타난다.

  1. /home 아래에 유저명의 폴더 생성
  2. /etc/passwd 에 정보 추가
  3. /etc/group 에 정보 추가
  4. /etc/skel 에서 기본 파일들 가져온다.

따라서 /etc/skel에 폴더를 생성하면 유저를 새로 생성할 때 default라는 폴더를 함께 제공할 수 있다.

16. 다음 중 jooseho 사용자의 아이디를 sehojoo로 변경하는 명령어는?

# 사용법은 다음과 같다.
$ usermod -l ID userID

#따라서 정답은
$ usermod -l sehojoo jooseho

17. symlink.txt파일의 심볼릭 링크 파일로 j를 생성할 때 알맞은 것은?

# 사용법은 다음과 같다.
$ ln -s 원본 링크파일

# 따라서 정답은
$ ln -s symlink.txt j

18. 다음 중 디스크의 사용가능한 용량을 확인할 때 사용하는 명령어는?

$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev             1011268       4   1011264   1% /dev
tmpfs             204864     532    204332   1% /run
/dev/dm-0       18180876 3358064  13876228  20% /
...

다음과 같은 명령어들과 혼동할 수 있다.

 - df: disk free (파일시스템의 용량 확인 )
 - free: 메모리 사용률
 - du: disk usage (디렉토리의 용량 확인)
 - w: 누가 로그인중?

19. 다음 중 cat명령으로 텍스트 파일에 존재하는 개행문자나 탭 문자 등을 확인할 때 사용하는 옵션은?

$ cat -A test

# cat 의 옵션들
cat -b test     #각 행에 번호를 붙여서 출력
cat -n test     #빈 행에도 번호를 붙여서 출력
cat -s test     #연속되는 2개 이상의 빈 행을 한 행으로 출력

20. 다음 중 top명령으로 확인할 수 없는 항목은?

TOP은 시스템 사용량을 확인하는 명령어로, Windows의 작업관리자를 떠올리면 된다.

$ top
top - 15:50:02 up  6:54,  3 users,  load average: 0.02, 0.01, 0.00
Tasks: 190 total,   1 running, 189 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   2048612 total,   409288 used,  1639324 free,    20092 buffers
KiB Swap:  2093052 total,        0 used,  2093052 free.   109268 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
    7 root      20   0       0      0      0 S  0.3  0.0   0:12.48 rcu_sched
 1356 nobody    20   0  589740  14128   3528 S  0.3  0.7   0:18.50 msp-rqwatcher:
 1646 snmp      20   0   45632   6436   3708 S  0.3  0.3   0:10.95 snmpd
 3814 root      20   0       0      0      0 S  0.3  0.0   0:00.18 kworker/u2:0
    1 root      20   0   33828   4192   2672 S  0.0  0.2   0:00.92 init
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.72 ksoftirqd/0

top - 15:50:02 up 6:54, 3 users, load average: 0.02, 0.01, 0.00
현재 시간, 업타임, 현재 로그인유저 수, 로드애버리지(시스템 부하량)

Tasks: 190 total, 1 running, 189 sleeping, 0 stopped, 0 zombie
전체 프로세스 수, 현재 실행중, 휴식중, 정지, 좀비

%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
CPU의 사용량

KiB Mem: 2048612 total, 409288 used, 1639324 free, 20092 buffers
물리적인 메모리 사용량

KiB Swap: 2093052 total, 0 used, 2093052 free. 109268 cached Mem
스왑 메모리의 사용량

(* 네트워크 부하량은 알 수 없다.)

21. 다음 중 logrotate에 대한 설명으로 틀린 것은?

logrodate를 이용해 로그파일을 순환, 압축, 메일링 할 수 있다. cron을 사용해서 한다.
하루, 일주일, 한달 등 시간단위로 로테이트 하는 것이 가능하며, 용량을 제한해 로테이트하는 것 역시 가능하다. 압축 및 메일링도 가능함.

22. 다음 중 메일과 관련된 프로토콜이 아닌 것은?

메일과 관련된 프로토콜

  • IMAP(Internet Message Access Protocol)
  • SMTP(Simple Mail Transfer Protocol)
  • POP3(Post Office Protocol Version 3)

23. 다음 중 메일관련 프로그램이 아닌 것은?

메일과 관련된 리눅스 프로그램

  • postfix
  • qmail
  • sendmail
  • evolution

24. XEN, KVM 등으로 나누어서 운영되는 가상화 환경을 통합 관리 할 때 유용한 프로그램은?

VirtualBox
가상화 환경

25. 들어오는 패킷을 버리는 것과 동시에 적당한 응답 패킷이나 메세지를 전달하려 한다. 괄호 안에 들어갈 내용으로 알맞은 것은?

$ iptables -INPUT -192.168.12.22 -j(REJECT)

iptables는 시스템 관리자가 리눅스 커널 방화벽이 제공하는 테이블과 그것을 저장하는 체인, 규칙들을 구성할 수 있게 해주는 사용자 공간 응용프로그램이다.

체인

iptables에는 filter 테이블에 미리 정의된 세가지의 체인이 존재하는데, 이는 INPUT, OUTPUT, FORWARD이다. 이 체인들을 네트워크 트래픽에 대하여 정해진 규칙들을 수행한다.

  • INPUT: 호스트 컴퓨터를 향한 모든 패킷
  • OUTPUT: 호스트 컴퓨터에서 발생하는 모든 패킷
  • FORWARD: 호스트 컴퓨터가 목적지가 아닌 모든 패킷, 즉 라우터로 사용되는 호스트 컴퓨터를 통과하는 패킷

매치

iptables에서 패킷을 처리할 때 만족해야 하는 조건을 가리킨다. 즉 이 조건을 만족시키는 패킷들만 규칙을 적용한다.

  • --source(-s): 출발지 IP주소나 네트워크와의 매칭
  • --destination(-d): 목적지 IP주소나 네트워크와의 매칭
  • --protocol(-p): 특정 프로토콜과의 매칭
  • --table(-t): 처리될 테이블
  • --jump(-j): 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시한다.

타겟

iptables는 패킷이 규칙과 일치할 때 동작을 취하는 타겟을 지원한다.

  • ACCEPT: 패킷을 받아들인다.
  • DROP: 패킷을 버린다(패킷이 전송된 적 없던 것 처럼)
  • REJECT: 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.
  • LOG: 패킷을 syslog에 기록한다.
  • RETURN: 호출 체인 내에서 패킷 처리를 계속한다.

26. crontab 명령을 사용하여 스케쥴링 작업을 수정 또는 등록할 떄 사용하는 옵션은?

$ crontab -e

crontab 명령어는 다음과 같다.

$ crontab -l        # 현재 사용자의 cron을 확인
$ crontab -l -u username # 다른 사용자의 cron을 확인
$ crontab -e        # vi편집기로 현재 사용자에 대한 cron을 직접 확인 수정
$ crontab -r        # 현재 사용자의 예약작업을 모두 삭제

27. 명령어 nice -10 bash에 대한 결과로 알맞은 것은?

nice는 CPU 스케쥴링 우선순위를 지정하는 리눅스 명령어이다. 커널 스케쥴러 내에 해당 프로세스의 우선순위를 지정한다.
위 명령어는 bash의 niceness를 10 올리라는 명령어이다. (낮추려면 --10)

28. 다음은 시스템에 설치된 모든 패키지 중 mail이라는 문자열이 들어있는 패키지를 검색 하는 과정이다. 괄호 안에 들어갈 내용은 무엇인가?

$ rpm ()| grep mail

rpm은 레드햇 계열에서 주로 사용하는 패키지 관리 도구이다.

$ rpm -ivh 패키지명         # 설치
$ rpm -qa | grep 패키지명   # 확인
$ rpm -ev 패키지명          # 제거 (-e)
$ rpm -Uvh 패키지명         # 업그레이드 or 설치

30. FTP의 기본 포트번호는 몇 번인가?

일반적으로 20, 21번 두개의 포트를 사용한다.
처음 ftp클라이언트가 21번을 통해 접속을 하고, 서버에서 클라이언트에게 전송할 경우 20번 포트를 사용한다.

31. IP주소가 192.168.10.10 인 서버로 ssh 접속시 서비스 포트 번호가 180번이다. 명령어는?

$ ssh -p 180 192.168.10.10

32. netstat명령어의 모든 소켓의 PID및 프로그램명을 출력하고, 호스트명 및 포트명은 숫자 값으로 출력하려고 한다. 맞는 옵션은 무엇인가?

$ netstat -anp

netstat 명령어의 옵션은 다음과 같다.

-a (--all) 모든 소캣을 보기, 이 옵션을 안넣으면 Established 소켓만 출력된다.
-c (--continuous) 현재 실행 명령을 매초마다 실행
-e (--extend) 확장정보 추가 User와 Inode 가 추가됨
-l (--listening) 대기중인 소켓 리스트만 보여준다.
-n (--numeric) 도메인 주소를 읽어들이지 않고 숫자로 출력한다.
-p (--program) PID와 사용중인 프로그램명이 표시된다.
-r (--route) 라우팅 테이블 보기
-s (--statistics) 프로토콜 요약정보
-t (--tcp) TCP프로토콜 보기
-u (--udp) UDP프로토콜 보기

33. 시스템에서 구동되고 있는 프로세스들의 연관성들을 트리로 볼 수 있는 명령어는?

$ pstree
  • pstree: 실행중인 프로세스를 트리형태로 보여주는 유닉스 명령어
  • ps: 시스템에서 실행중인 프로세스를 확인하는 기초 명령어

34. 다음 중 현재 실행되고 있는 SHELL의 갯수를 저장하는 환경변수는 무엇인가.

$ echo $SHLVL
5

정확히 말하면 쉘의 깊이를 저장하고 있다.

$ echo $SHLVL ←로그인 직후
1
$ bash ←아들 쉘을 가동
$ echo $SHLVL
2
$ bash ←손자 쉘을 가동
$ echo $SHLVL
3
$ exit ←손자 쉘을 종료
$ echo $SHLVL
2
$ exit ←아들 쉘을 종료
$ echo $SHLVL
1

35. 명령어 rm으로 모든 폴더와 파일을 강제로 삭제하기 위한 옵션은 무엇인가.

$ rm -rf test/

rm의 옵션은 아래와 같다.

-f 강제로 삭제
-i 삭제전에 물어봄
-I 세 개 이상의 파일을 삭제할 때 물어봄
-r 에러메세지를 출력하지 않고 바로 삭제
-d 빈 폴더를 삭제
-v 수행과정을 출력

36. test-1.1.tar.gz라는 압축파일을 해제하고 묶음을 푸는 명령어는 무엇인가?

$ tar -zxvf test-1.1.tar.gz

tar의 옵션은 다음과 같다.

-x 묶음을 해제
-c 묶음을 생성
-v 묶음/해제 과정을 출력
-z gunzip을 사용
-f 파일명을 지정
-p 권한을 원본과 동일하게 유지
-r 기존의 tar에 파일 추가

37. IPv6의 주소 체계는 몇 bit 인가?

  • IPv6: 128bit를 16비트씩 16진수로 표현하여 8자리로 나타냄
  • IPv4: 32bit를 8비트씩 10진수로 표현하여 4자리로 나타냄

38. 명령어 cd-의 용도로 알맞은 것은?

사용자가 이전에 있었던 디렉토리로 이동된다.

39. 다음 top명령어에 대한 설명으로 틀린 것은?

$ top -d 1 -p 4056

PID가 4056인 프로세스를 1초 단위로 업데이트하여 표시한다.

top의 옵션은 다음과 같다.

-a 메모리 사용에 따라 정렬
-b batch모드에서 시작
-d 업데이트 간격을 조절
-i idle 상태는 무시
-n 최대 반복수를 지정
-s 보안모드로 시작
-P 지정된 프로세스 ID만 보여줌

40. gzip 패키지에 같이 들어있는 명령으로 압축되어 있는 텍스트 파일의 내용을 확인할 때 사용하는 명령어는?

$ zcat 1.txt.gz
$ gzip -d -c 1.txt.gz

41. gzip 옵션 중 가장 빠른 압축 옵션은 무엇인가?

gzip뒤에 -숫자 로 옵션을 줄 수 있다.
-1은 가장 빠르지만 압축률이 가장 낮다.

42. 다음 중 포트번호가 잘못 짝찌어져 있는 것은?

주요 포트

20, 21 FTP
22 SSH
25 SMTP
53 DNS
80 HTTP
109 POP2
110 POP3
143 IMAP4
443 HTTPS

44. 이미 tar로 압축된 test.tar파일에 jsh.txt파일을 추가하는 명령어는?

$ tar -rvf test.tar jsh.txt

-r 옵션은 append이다.

45. 다음 중 yum에 대한 설명으로 틀린 것은?

yum 명령어는 다음과 같다.

install 설치
update 업데이트
list 검색어 검색
remove 삭제
check-update 업데이트가 가능한 목록 체크
info 검색어 패키지 정보 확인

46. 하위 디렉토리 개수를 표시해주는 명령은?

$ ls -F | grep / |wc -l

현재 디렉토리의 모든 파일 및 디렉토리 출력
/가 포함된 라인 검색
출력물의 라인 수를 카운트

47. 리눅스 시스템의 보안 정책 중 /etc/passwd 파일의 취약점을 보완하기 위해 사용되는 파일은?

섀도우 패스워드 형식을 같이 사용하여 보완이 가능하다. 이 방식은 전통적인 방식과 결합하여 /etc/passwd 파일은 호환성있는 형식으로 정보를 저장한다. 단, 패스워드는 (실제로 /etc/passwd 파일에 저장하지 않고) 대신 “x” 한글자만 넣어둔다. 두번째 파일인 ``/etc/shadow’’ 파일이 암호화된 패스워드와 그 외의 정보, 즉 패스워드 유효기간 등을 저장한다. /etc/shadow 파일은 루트 계정에 의하여만 읽을 수 있기 때문에 보안상의 위험은 줄어들게 된다.

48. 운영체제에서 보내주는 실시간 로그가 기록되는 message파일이 기본적으로 저장되는 위치는?

/var/log

49. syslog 데몬에 대한 설명으로 틀린 것은?

시스로그 데몬은 /var/log/message를 기록하는 데몬이다. 각종 커널과 시스템 프로그램이 출력하는 메세지들을 기록한다. 커널, 크론, 데몬, 메일, 뉴스, 프로세스 … 메일에 대한 로그를 ‘관리’할 수는 없다.

50. awk 명령어에서 구분자를 정하는 옵션은 무엇인가?

awk는 일종의 프로그래밍 언어이지만 주로 패턴 검색과 조작시에 주로 사용된다. 단독으로 사용되기 보다는 주로 다른 프로그램들과 연계해서 이용한다.

$ awk [options] 'pattern{action}' filename

# options
-F 필드구분자: 필드구분자를 지정할 떄 사용한다. 기본 필드구분자는 공백이다.
-f 파일명: 스크립트 파일을 줄러온다.

# 사용 예
$ cat result.dat
영어 + 85점
국어 + 70점
컴퓨터 + 100점

$ awk 'print{$1}' result.dat
영어
국어
컴퓨터

$  awk 'print{$2}' result.dat
+
+
+

$ awk -F+ 'print{$2}' result.dat
85점
70점
100점

-F옵션을 이용해 구분자를 정해줄 수 있다.

through.kim's profile image

through.kim

2017-01-03 14:16

Read more posts by this author