시험종목 : 제1702회 리눅스마스터 1급 2차
시험일자 : 2017. 11. 11(토) 14:00 ~ 15:40(100분)
바로가기 >> 리눅스마스터 기출문제 목록
단답식 (1~10)
정답
1777
소유권(Ownership)과 허가권(Permission)
리눅스는 하나의 시스템이 다수의 사용자들이 동시에 접속하여 사용하도록 설계된 운영체제이다. 여러 사용자가 동일한 저장공간인 하드디스크를 공유해서 사용하는데 이러한 구조는 각각의 사용자들이 생성한 파일이나 디렉터리가 다른 사용자에게 노출될 수 았다. 이러한 문제를 해결하기위해 리눅스에서는 소유권과 허가권이라는 두가지 권한을 가지고 접근 제어를 하도록 설계되어 있다. 소유권은 어떠한 파일이나 디렉터리를 소유하여 지배하는 권리를 말하고, 허가권은 파일이나 디렉터리에 접근 권한을 설정하는 권리로 일반적으로 소유권을 가진 사용자가 허가권을 설정한다. 소유권은 사용자 소유권과 그룹 소유권으로 나누고, 허가권은 사용자(user), 그룹(group), 다른사용자(other)로 나누어 설정할 수 있다
특수 권한
리눅스의 권한 체계는 3계층(사용자, 그룹, 기타 사용자)에 3가지 권한(읽기, 쓰기, 실행)을 부여하는 형태로 이루어져 있다. 그러나 이러한 권한 체계로 원할한 시스템 운영을 할 수가 없다. 일반 사용자가 작업을 하다보면 간혹 root 권한이 필요한 경우가 있는데, 그렇다고 root 의 암호를 알려줄 수도 없고 root 권한을 부여할 수도 없는 상황이 있다. 이처럼 일부 권한 허용 등을 위한 특별한 권한이 있는데, 이것이 Set-UID, Set-GID, Sticky-Bit 이다. 이 3가지 권한 모두 시스템 운영에 필요한 권한들이지만 보안상의 위험을 초래할 수 있으므로 정확한 이해가 필요하다.
Set-UID : 보통 실행 파일에 사용되며 Set-UID 가 부여된 파일을 실행 시, 해당 파일을 실행하는 동안 해당 파일의 소유자 권한으로 인식힌다. 설정하면 소유자 권한 부분의 x 자리에 s 로 표기된다. 실행권한이 없는 파일에 부여하면 대문자 S 로 나타난다.
Set-GID : 파일에 설정되어 있을 경우 소유한 그룹 권한으로 인식힌다. 보통 Set-GID 는 주로 디렉터리에 설정되는데, 이 권한이 설정된 디렉터리에 사용자들이 파일이나 디렉터리를 생성하면 사용자가 속한 그룹에 상관없이 디렉터리 소유 그룹 권한이 만들어진다. 그룹 소유권 부분에서 x 자리에 s 로 나타나며, 실행 권한이 없을 경우 대문자 S 로 표시된다.
Sticky-Bit : 디렉터리에 설정되는 특수 권한으로 일종의 공유 디렉터리로 사용된다. /tmp 디렉터리에 설정되어 있다. Sticky-Bit를 설정하면 사용자들이 생성에는 제한이 없지만, 삭제할 경우 본인이 생성한 파일 이외에는 불가능하다. 설정하면 other 계층 권한 부분의 x 자리에 t 로 표기되며 실행권한이 없는 경우 대문자 T 로 표기된다.
특수 권한의 설정
Set-UID, Set-GID, Sticky-bit 도 허가권 설정 명령인 chmod 를 사용한다.
문자모드인 경우에는 Set-UID 와 Set-GID 는 s 를 사용하고, Sticky-bit 는 t 를 사용한다.
숫자모드인 경우에는 천의 자리가 사용되고 Set-UID 는 4, Set-GID 는 2, Sticky-bit 는 1 의 값을 갖는다.
chmod(change mode)
파일이나 디렉터리에 접근할 수 있는 허가권을 설정하는 명령이다. 알파벳 기호를 사용하는 문자모드와 8진수의 값을 사용하는 숫자모드로 지정한다.
r ⇒ 4 읽기
w ⇒ 2 쓰기
x ⇒ 1 실행
u ⇒ user 소유자
g ⇒ group 소유그룹
o ⇒ order 다른 사용자
a ⇒ all 모든 사용자
u g o a 는 + – = 기호를 사용하여 설정
+ 설정
– 해제
= 특정 권한만 설정
파일
r : 파일의 내용을 볼 수 있는 권한
w : 파일의 내용을 수정할 수 있는 권한
x : 실행 파일을 실행시킬 수 있는 권한
디렉터리
r : 디렉터리 내부의 내용을 볼 수 있는 권한
w : 디렉터리 내부에 파일을 생성 또는 삭제할 수 있는 권한
x : 디렉터리 내부로 접근할 수 있는 권한
정답
① -t 또는 -T
② -b
③ dumpe2fs 또는 blockdev report 또는 dumpe2fs -h
mke2fs
ext2, ext3, ext4 파일 시스템을 만드는 명령으로 최근 리눅스 배포판에서 mkfs 명령 실행시 실제 사용되는 명령어이다. 파일 시스템의 유형을 지정하지 않으면 ext2 로 생성된다.
사용법
# mke2fs [option] 장치명
주요 옵션
-j : 저널링 파일 시스템인 ext3 로 만든다.
-t fs_type : 파일시스템의 유형을 지정하는 옵션으로 ext3, ext4 등으로 지정하면 된다.
-b block_size : 블롯 사이즈를 지정하는 옵션으로 1024, 2048, 4096 으로 지정할 수 있다.
dumpe2fs
지정된 파일시스템의 슈퍼블록(superblock ), 블록그룹(block group) 정보를 보여주는 명령어
정답
① -9 또는 -S SIGKILL 또는 -S 9 또는 -SIGKILL
② 3318
kill
프로세스에 특정한 시그널(signal) 을 보내는 명령으로 옵션 없이 실행하면 프로세스에 종료 신호(15, TERM, SIGTERM) 를 보낸다. 보통 중지시킬 수 없는 프로세스를 종료시킬때 많이 사용한다.
사용법
# kill [option] [signal] [PID 또는 %lob_number]
주요 옵션
-l : 시즈널의 종류를 출력한다.
-s signal : 시그널의 이름을 지정하는 옵션이다.
SIGKILL(9) : 강제 종료 시그널
정답
① -e
② nodeps
rpm 제거(erase) 모드
설치된 패키지를 제거한다. 패키지를 제거할 때는 -e 옵션을 사용하는데, 다른 패키지에 대한 의존성이 발생한 경우에는 제거되지 않는다. 의존성이 발생한 패키지를 제거하기 위해서는 먼저 의존성 관련 패키지를 제거하거나, 추가로 nodeps 옵션을 지정해야 한다.
주요 옵션
-e : 설치된 패키지를 삭제한다. 의존성을 갖는 패키지가 있는 경우에는 삭제되지 않는다.( erase)
nodeps : 의존성을 갖는 패키지가 존재하는 경우에도 삭제한다.
test : 실제로 제거하지 않고, 테스트를 한다. 보통 vv 옵션과 함께 사용한다.
allmatches : 동일한 이름을 갖는 패키지가 중복 설치되어 있는 경우에 모두 제거한다.
사용예
$ rpm -e eog
eog 라는 패키지를 제거한다. 의존성이 있는 패키지가 존재할 경우에는 제거되지 않는다.
$ rpm -e httpd nodeps
httpd 라는 패키지를 제거하는데, 의존성이 있는 패키지가 존재할 경우에도 제거한다.
정답
① /dev/sdb1
② /data
③ 0
④ 1 또는 2
/etc/fstab
이 파일은 파일 시스템에 대한 다양한 정보를 담고 있는 파일로 부팅 시에 마운트할 파티션 정보가 기록되어 있는 파일이기도 하다. 파티션 정보를 변경하였거나 디스크를 추가한 경우 이 파일에 등록해야만 부팅 시에 자동으로 마운트할 수 있다. mount, umount, fsck 등의 명령어가 수행될때 이 파일의 정보를 참조한다. /etc/fstab 파일은 총 6개의 필드로 구성되어 있다.
fstab 의 필드 구성
첫 번째 : 장치명이 기록되는 영역이었으나 최근 리눅스 배포판에서는 볼률 라벨(Volume Lable)이나 UUID 가 대신 사용되고 있다.
ex) /dev/sdb1, LABEL=/, UUID=fs853197-a750-9739-0bd243cb8caa 등
두 번째 : 마운트될 디렉터리(Mount point)를 나타낸다.
세 번째 : 파일 시스템의 유형을 나타낸다. ex) ext3, ext4, swap, nfs 등
네 번째 : 마운트될 때의 옵션을 나타낸다ㅣ ex) defaults, usrquota, grpquota, acl 등
다섯 번째 : dump 명령을 통한 백업 시 레벨 덤프 사용주기를 결정하는 부분으로 0 이면 dump 를 사용하지 않고, 1 이면 매일 수행, 2 이면 이틀에 한번 수행한다.
여섯 번째 : 부팅 시 파일 시스템을 점검하는 fsck 명령의 순서를 정한다. 보통 루트 파일 시스템을 1 로 설정하여 가장 먼저 점검하고, 다른 파일 시스템은 2 로 설정하여 두 번째로 점검한다. 0 으로 설정하면 부팅 시에 해당 파일 시스템은 검사하지 않는다.
정답
① blkid
② -i 또는 -is
UUID(Universally Unique Identifier)
UUID 는 범용 고유 식별자라고 부르는데, 보통 여러 개체들을 존재하는 환경에서 식별하고 구별하기 위해서 사용되는 고유한 이름을 통칭한다. 최근 리눅스에서 파티션을 생성하면 이러한 고유한 UUID 를 부여하고, blkid 라는 명령을 사용하면 관련 정보를 확인할 수 잇다.
옵션
-s <tag> : show specified tag(s) (default show all tags)
-i : gather information about I/O limits
정답
① btmp
② lastb
로그 관련 주요 파일
(1) /var/log/messages
시스템에서 발생하는 표준 메시지가 기록되는 파일로 대부분의 로그가 이 파일에 쌓이고, root 만이 읽을 수 있도록 설정되어 있다. 이 로그는 날짜 및 시간, 메시지가 발생한 호스트명, 메시지를 방생한 내부 시스템이나 응용 프로그램의 이름, 발생된 메시지(:으로 구분) 순으로 기록된다.
(2) /var/log/secure
인증에 기반한 접속과 관련된 로그가 기록되는 파일로 보통 login, tcp_wrappers, xinetd 관련 로그가 쌓인다.
(3) /var/log/dmesg
시스템이 부팅할 때 출력되었던 로그가 기록되는데, 보통 커널 부트 메시지 로그라고 한다.
(4) /var/log/maillog
sendmail, dovecot 등 메일 관련 작업이 기록되는 로그 파일이다.
(5) /var/log/xferlog
FTP 접속과 관련된 작업이 기록되는 파일로 로그 포맷은 총 14개의 영역으로 구성되어 있다.
(6) /var/log/cron
cron 관련 정보가 기록되는 파일이다.
(7) /var/log/boot.log
부팅 시 발생되는 메시지가 기록되는 파일로 보통 부팅 시 동작하는 데몬 관련 정보가 기록된다.
(8) /var/log/lastlog
telnet 이나 ssh 를 이용해서 접속한 각 사용자의 마지막 정보가 기록되는 파일이다. 바이너리 파일로 lastlog 라는 명령으로 확인한다.
(9) /var/log/wtmp
콘솔, telnet, ftp 등을 이용하여 접속한 사용자 기록, 시스템을 재부팅한 기록 등의 로그가 쌓이는 파일이다. 이 파일도 바이너리 파일로 last 라는 명령으로 확인한다.
(10) /var/log/btmp
wtmp 와 반대되는 로그로 접속이 실패한 경우를 기록한다. 바이너리 파일로 lastb 라는 명령으로 확인한다.
lastb
last 와 반대되는 개념의 명령으로 로그인에 실패 정보를 /var/log/btmp 에 기록하는데 이 파일의 내용을 출력하는 명령이다. 기본적인 사용법은 last 명령과 동일하지만, root 만 사용 가능하다.
주요 옵션
-f 파일명 : 로그 로테이션 설정이 되어 있는 경우, 기본 로그 파일 이외에 다른 로그 파일의 기록을 볼 경우에 사용한다.
-n 숫자 : 가장 최근부터 해당 숫자값 만큼만 출력한다. (‘-숫자’와 같다.)
사용 예
$ lastb
로그인에 실패한 정보를 출력한다.
$ lastb ihduser
ihduser 사용자의 로그인 실패 기록을 출력한다.
정답
① logger
② -i
logger
/var/log/message 파일에 원하는 메시지(로그)를 기록할 수 있는 명령어
옵션
-i : 각각의 라인마다 logger의 프로세스 ID를 기록
-s : 시스템 로그뿐만 아니라 표준 출력으로도 메시지를 기록
-f 파일명 : 지정한 파일에 로그를 기록
정답
① chattr
② +a
chattr
파일의 속성을 변경하는 명령으로 root 사용자만 사용 가능한다.
사용법
# chattr [option] mode 파일명
주요 옵션
-R : 하위 디렉터리까지 한 번에 속성을 변경할 때 사용한다.
mode
mode 는 기호와 속성으로 이루어지는데, 기호는 +, -, = 을 사용한다. + 는 해당 속성을 부여, – 는 해당 속성 해제, = 는 해당 속성만 부여하고 해제한다. 주요 속성은 다음과 같다.
A : 파일 수정 시에 atime 은 수정하지 않는다.
a : 해당 파일에 추가만 가능하도록 설정한다.
d : dump 로 백업되지 않도록 설정한다.
i : 해당 파일의 변경, 삭제, 이름 변경, 파일 추가, 링크 파일 생성 등을 불가능하게 한다.
S : 파일이 변경될 경우에 디스크 동기화가 일어나도록 할 때 사용한다.
e : 디스크 블록에 매핑하기 위해 확장된 파일임을 표시하는 것으로 chattr 속성으로 없앨 수 없는 속성이다.
사용예
# chattr +a /var/log/messages
/var/log/messages 파일을 삭제 불가능하고, 추가만 가능하도록 설정한다.
# chattr +i /etc/services
/etc/services 파일이 삭제나 변경 등이 불가능하도록 설정한다.
# chattr -i +a /etc/services
i 속성을 제거하고 a 속성을 부여한다.
정답
① -o 또는 create 또는 -ov 또는 -oc
② > 또는 -F 또는 file
③ -i 또는 extract 또는 -iv 또는 -ic 또는 -idv 또는 -id
④ < 또는 -F 또는 file
cpio(copy input to output)
tar 와 비슷한 유틸리티로 많은 양의 데이터에 대해서는 tar 보다 빠르다. 장치 파일이나 네트워크 파일 등의 특수 파일도 백업이 가능하고 백업본의 크기도 작고 백업본의 손상된 부분이 있더라도 손상된 부분을 제외하고 나머지 부분을 복구한다. 증분 백업 기능은 지원하지 않는다.
사용법
$ [셸명령어] cpio option > 파일명
$ cpio option < 파일명
주요 옵션
-o : 표준 출력으로 보내어 사용한다.( exfract)
-i : 표준 입력으로 받을 때 사용한다. 백업한 자료를 불러올 때 사용한다.
-v : 과정을 상세히 출력한다.
-c : 데이터 형식을 ASCII 형태로 지정한다.
-d : 필요한 경우 디렉터리를 생성한다.( make-directories)
-t : 내용만 확인할 때 사용한다.
-F : 표준 입출력 전환 기호 대신에 파일명을 지정할 때 사용한다.
작업식 (11~16)
정답
① Order
② Deny
③ All
④ 192.168.22.0/255.255.255.0 또는 192.168.22.0/24 또는 192.168.22.
Apache 웹 접근 통제
아파치 웹 서버의 기본적인 설정은 모든 클라이언트의 접근이 허락되어 있다. 그러나 접근 통제가 필요한 경우에는 클라이언트의 IP 주소나 도메인에 대해 Order, Allow, Deny 지시자를 이용해서 제어할 수 있다. Order 는 Allow 및 Deny 지시자의 순서를 정하는데 콤마(,)로만 분리해야 하고 중간에 공백이 들어가서는 안된다.
사용법
1) Deny 지시자가 Allow 지시자보다 먼저 검사된다. 보통 대부분의 접근을 막고, Allow 지시자에 지정한 사용자만 접속을 허용할 때 사용한다.
Order Deny,Allow
Deny from 주소
Allow from 주소
2) Allow 지시자가 Deny 지시자보다 먼저 검사된다. 보통 대부분의 접근을 허가하고, Deny 지시자에 지정한 사용자만 접속을 거부할 때 사용한다.
Order Allow,Deny
Allow from 주소
Deny from 주소
3) Allow 지시자에 있고, Deny 지시자에 없는 호스트만 접근을 허용한다.
Order Mutual-failure
Allow from 주소
Deny from 주소
허용되는 주소 표기
All, all : 모든 클라이언트를 의미한다.
도메인명 : 특정 호스트명이 포함된 도메인명 또는 해당 도메인 전체를 지정할 수 있다.
IP 주소 : 특정 호스트의 IP 주소를 사용할 수 있다.
네트워크 대역 : 특정 네트워크 대역에 속한 전체 호스트를 지정할 수 있다.
정답
① 192.168.5.0/255.255.255.0 또는 192.168.5.0/24
② no_root_squash
NFS 환경 설정 파일 : /etc/exports
/etc/eports 설정할 때에는 줄 단위로 외부에 공유할 디렉터리를 입력하고 공백([TAB])으로 구분한 뒤에 허가할 호스트를 지정 및 옵션을 기입하면 된다. 허가할 호스트는 IP 주소, 도메인, /etc/hosts 에 설정한 호스트명, NI S 에서 설정한 그룹명 등을 입력하면 되고, 와일드 카드로 ‘모두’ 라는 의미의 * 를 사용한다.
설정법
공유할_디렉터리 허가할_호스트(옵션) [허가할_호스트(옵션)…]
주요 옵션
ro : 읽기 전용으로 지정하는 옵션으로 기본값이다.
rw : 읽기 및 쓰기가 가능하도록 지정하는 옵션이다.
root_squash : NFS 클라이언트에서 접근하는 root 사용자를 무시하고 서버상의 nobody(또는 nfsnobody)로 매핑시키는 옵션으로 기본값이다. 일반 사용자의 권한은 그대로 인정된다.
no_root_squash : NFS 클라이언트에서 접근하는 root 사용자를 무시하지 않고, root 로 인정한다.
no_subtree_check : 하위 디렉터리를 접근하지 못하도록 할 때 설정한다.
all_squash : root 를 포함하여 모든 사용자의 권한을 nobody(또는 nfsnobody)로 매핑시킨다.
secure : 포트 번호가 1024 이하의 요청에만 허가할 때 사용한다. 기본값으로 설정되어 있고, 반대의 설정의 insecure 이다.
async : 쓰기가 설정된 디스크 스토리지에 사용하면 유용한 옵션으로 데이터 변경(data corruption)에 대비해 비동기적 처리를 할 때 사용한다.
anonuid : 접근하는 사용자 권한을 지정하는 uid 로 매핑시킬 때 사용한다.
anongid : 접근하는 그룹 권한을 지정하는 gid 로 매핑시킬 때 사용한다.
정답
① @ihd.or.kr
② ihdadmin 또는 ihdadmin@ihd.or.kr
/etc/mail/virtusertable
하나의 메일 서버에 여러 도메인을 사용하는 환경에서 메일 계정을 요구할 때 각각의 도메인으로 도착하는 메일을 포워딩할 때 사용하는 파일이다. 예를 들면 windows.com 과 linux.com 이라는 도메인을 사용중이고 각 회사에서 ceo 라는 동일한 이메일 계정을 요구하는 경우가 있는데, 이 경우에 설정하는 파일이다. 센드메일이 참고하는 파일은 /etc/mail/virtusertable.db 이므로 변경 시에는 ‘makemap hash’ 명령을 사용해야 한다.
설정 예
# vi /etc/mail/virtusertable
ceo@linux.com posein
ceo@windows.com yuloje
@posein.org posein@naver.com
ceo@lonux.com 으로 들어오는 메일은 posein 에게 전달하고, ceo@windows.com 으로 들어오는 메일은 yuloje 에게 전달한다. 마지막으로 posein.org 로 들어오는 모든 메일은 posein@naver.com 으로 전달한다.
적용 명령
# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
정답
① acl
② 10.20.17.0/255.255.255.0 또는 10.20.17.0/24
③ allow
④ kait
⑤ deny
⑥ all
프록시 서버의 접근 제어
squid.conf 파일에서 acl(access control list) 항목을 이용해서 접근 제어를 할 수 있다. acl 을 이용하여 특정 IP 주소, 네트워크 대역, 도메인 등을 별칭(alias) 형태로 지정하고, http_access allow 나 http_access deny 를 이용하여 접근을 제어한다. 적용되는 룰은 방화벽 설정과 비슷하게 중복 정책인 경우에는 먼저 설정된 정책이 반영된다.
사용법
1) acl 설정
acl 별칭 src IP 주소/넷마스크값
acl 별칭 dst IP 주소/넷마스크값
acl 별칭 srcdomain .foo.com
acl 별칭 dstdomain .foo.com
2) acl 에 대한 접근 제어
http_access allow 별칭
http_access deny 별칭
사용 예
1) 특정 대역만 사용 허가 설정
acl kait src 192.168.4.0/255.255.255.0
http_access allow kait
http_access deny all
2) 특정 대역만 사용 거부 설정
acl kait src 192.168.4.0/255.255.255.0
ttp_access deny kait
http_access allow all
정답
① range 또는 range dynamic-bootp
② domain-name-servers
③ domain-name
④ routers
항목 설명
range : 클라이언트에게 할당할 IP 주소를 기입한다. 시작 주소와 마지막 주소를 기입한다.
range dynamic-bootp : DHCP 틀라이언트뿐만 아니라 BOOTP 클라이언트도 함께 할당할 경우에 사용한다.
option domain-name : 도메인명을 지정할 때 사용한다.
option domain-name-servers : 네임서버를 지정할 때 사용하는 항목으로 도메인 또는 IP 주소를 기입한다.
option routers : 게이트웨이 주소를 지정할 때 사용한다.
option broadcast-address : 브로드캐스트 주소를 지정할 때 사용한다.
default-lease-time : 임대를 요청하는 클라이언트가 특정한 만료 시간을 요청하지 않았을 경우에 할당되는 시간으로 단위는 초(second)이다.
max-lease-time : 임대를 요청한 클라이언트가 IP 주소를 가지고 있을 수 있는 최대 시간으로 단위는 초이다.
정답
① wait
② nice
③ access_times
④ per_source
⑤ no_access
⑥ FILE /var/log/telnetd.log
disable
해당 서비스의 실행 유무를 지정하는 항목으로 값은 ‘yes’ 또는 ‘no’ 로 설정한다. no 로 설정되면 서비스를 사용하는 것이고, yes 이면 서비스를 사용하지 않는다.
flags
서비스 운영과 관련된 설정으로 REUSE 는 계속적으로 재사용한다는 의미아다. 대부분의 서비스의 기본값으로 적용되어 있다.
socket_type
네트워크 소켓 타입을 지정하는 항목으로 속성값은 다음과 같다.
[속성값]
stream : stream 기반의 서비스
dgram : datagram 기반의 서비스
raw : IP 로 직접 접근이 필요한 서비스
seqpacker : 신뢰성 있는 연속적인 데이터그램 전송을 요구하는 서비스
wait
서비스가 단일 스레드(thread)인지 다중 스레드를 결정하는 항목으로 설정값은 yes 또는 no 이다. yes 인 경우에는 오직 하나의 서비스만 작동하게 되며, no 인 경우에는 다중 스레드로 동작하여 새로운 서비스 요청을 받아들이게 된다.
nice
서버의 우선순위를 지정하는 항목으로 -20 ~ 19 까지 지정할 수 있다.
access_times
지정된 시간에만 서비스를 이용할 수 있게 설정하는 항목이다.
per_source
특정 IP 주소에서 접속할 수 있는 최대 개수를 지정한다.
no_access
서비스를 이용할 수 없는 원격 호스트의 주소를 지정한다. only_from 과 주소 지정법은 동일하고 중복 설정된 경우에는 차단된다.
log_type
어떠한 형태로 로그를 저장할 것인지를 지정하는데, SYSLOG 와 FILE 두 가지 설정이 가능하다.
SYSLOG 는 syslog 에 로그를 위임하는 것이고, FILE 은 직접 별도의 파일로 지정하는 것이다.
server = /usr/sbin/in.telnetd
해당 서비스를 실행하는 데몬 파일의 경로를 지정하는 항목이다.