시험종목 : 제1601회 리눅스마스터 1급 2차
시험일자 : 2016. 5. 21.(토) 14:00 ~ 15:40(100분)
바로가기 >> 리눅스마스터 기출문제 목록
답 : ① whoami
② who am I (who ARG1 ARG2 모두 정답), who m, who a, who -u
③ id
whoami : 자신의 사용자 아이디 조회
who am i : 자신의 정보 조회
who : 시스템에 로그인 되어 있는 사용자를 출력해 주는 명령어
w : 시스템에 로그인 되어 있는 사용자와 사용자가 수행중인 작업을 출력해 주는 명령이다.
id : 시스템에 등록된 아이디에 대한 정보를 출력하느 명령으로 UID, GID, 속한 그룹 정보를 보여준다.
users : 시스템에 로그인 되어 있는 사용자의 아이디를 출력해 주는 명령어
답 : ① chown -R super:users exam_dir
② chmod -R 770 exam_dir
chown (change owner)
파일이나 디렉터리의 소유권 및 그룹 소유권을 변경하는 명령이다.
사용법
# chown [option] owner[:group] file(s)
-R : 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 접근 권한을 변경한다.
-c : 변경된 정보를 출력
-f : 주요한 오류 메시지가 아니면 출력하지 않는다.
chmod (change mode)
파일이나 디렉터리에 접근할 수 있는 허가권을 설정하는 명령
사용법
# chmod [option] mode file(s)
-R : 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 접근 권한을 변경한다.
-c : 변경된 정보를 출력
-f : 주요한 오류 메시지가 아니면 출력하지 않는다.
chmod 명령에서 권한 지정방법 1번째
r w x 읽기 쓰기 실행 4 2 1
ex) chmod 755 test
chmod 명령에서 권한 지정방법 2번째
u g o a 각각 사용자, 그룹, order, all 을 의미한다. 생략하면 all
+ – = 각각 권한 추가, 삭제, 지정을 의미한다.
ex) chmod go-rx test : 그룹과 order에게 r(읽기) 과 x(실행) 를 제거
답 : */5 9-18 * * 1-5 /services/health_check.sh
또는 */5 9-18 * * 1-5 root /services/health_check.sh
또는 0-59/5 9-18 * * 1-5 /services/health_check.sh
또는 0,5,10,15,20,25,30,35,40,45,50,55 9-18 * * 1-5 /services/health_check.sh
cron 을 이용하여 주기적으로 실행하는 작업은 시스템 운영에 필요한 작업과 사용자의 필요에 의한 작업으로 나눌 수 있다.
실행에 필요한 작읍은 root 권한으로 /etc/crontab에 등록하여 주기적으로 수행할 수 있고 사용자는 crontab라는 명령을 수행해서 등록할 수 있다.
crontab 파일은 다음과 같이 총 7개의 필드로 구성되어 있다.
<minute> <hour> <day_of_month> <month> <day_of_week> <user-name> <command>
ex)
10 1 1 1-12/2 * /etc/joon.sh
1월부터 12월까지 2개월마다 1일날 오전 1시 10 분에 실행
실행파일 경로는 /etc/joon.sh
0 0-23 * * * * /usr/bin/rdate -s time.bora.net
매 시간 정각에 시간을 동기화하는 작업을 crontab에 등록하는 명령
‘*’는 모든(all) 을 의미하고, ‘-‘는 연결된 설정 값을 지정할 때 ‘,’은 연결되지 않은 값을 나열할 때 ‘/’는 연결된 설정 값 범위에서 특정 주기로 나눌 때 사용한다.
5 4 * * 1,3,5 /etc/log.sh
로그를 점검하는 스크립트인 /etc/log.sh 를 매주 월, 수, 금요일 새벽 4시 5분에 실행
0 12 * * 1-5 /home/posein/work.sh
월요일부터 금요일까지 오후 12시에 /home/posein/work.sh 스크립트를 실행한다.
22 4 ** 0 /root/backup.sh
매주 일요일 4시 22분에 /root/backup.sh 스크립트를 실행
crontab
사용자가 주기적인 작업을 등록하기 위해 사용하는 명령으로 실행하면 vi 편접기가 실행된다.
/etc/cron.allow 파일과 /etc/cron.deny 파일로 cron 사용자를 제한할 수 있다.
/etc/cron.allow 파일이 존재하는 경우에는 /etc/cron.deny 파일 존재 유무에 상관없이 /etc/cron.allow 파일에 등록된 사용자만 가능하다.
/etc/cron.allow 파일이 존재하지 않고 /etc/cron.deny 파일만 존재하는 경우에는 /etc/cron.deny 파일에 등록된 사용자만 사용이 불가능하다.
/etc/cron.allow 파일과 /etc/cron.deny 파일이 모두 존재하지 않는 경우에는 root만 사용 가능하다.
gcc
gcc는 GNU 프로젝트에 의해 만들어진 일종의 컴파일러 모음으로 C, C++, Objective-C, Fortran, Java, Ada Go 등 다양한 프로그래밍 언어를 지원한다. 리눅스 기반에서 가장 손쉽게 이용할 수 있는 C 컴파일러 도구.
사용법
$ gcc [option] 파일명
옵션
-o : 컴파일할 때 실행 파일의 이름을 지정하는 옵션
-c : 링크는 하지 않고 목적 파일만을 만들어 낼 때 사용하는 옵션으로 .o 파일을 생성한다.
ex)
$ gcc sum.c
sum.c 를 컴파일하여 생행파일을 생성. 기본적으로 a.out 로 생성된다.
$ gcc -o sum sum.c
sum.c 를 컴파일하여 sum 이라는 생행파일을 생성.
$ gcc -c sum.c
sum.c 를 컴파일하여 오브젝트 파일을 생성. 기본적으로 sum.o 로 생성된다.
$ gcc -o LinkedList LinkedList.c Test_LinkedList.c
LinkedList.c 와 Test_LinkedList.c 를 컴파일하여 LinkedList 라는 실행파일을 생성
$ gcc -o LinkedList LinkedList.o Test_LinkedList.o
두개의 오브젝트 파일을 이용하여 LinkedList 라는 실행파일을 생성
답 : ① 플래터 또는 flatter
② 헤드 또는 head
③ 섹터 또는 sector
답 : ① /etc/fstab ② /dev/sdb1
③ /home2 ④ ext4
⑤ defaults,usrquota
usrquota : 사용자 할당량 사용
/etc/fstab
이 파일은 파일 시스템에 대한 다양한 정보를 담고 있는 파일로 부팅 시에 마운트할 파티션 정보가 기록되어 있는 파일이다.
파티션 정보를 변경하거나 디스크를 추가한 경우 이파일에 등록해야만 부팅 시에 자동으로 마운트할 수 있다.
fstab 의 필드 구성
첫 번째 장치명이 기록되는 영역이었으나 최근 배포판 리눅스에서는 볼륨 라벨(Volume Lable) 이나 UUID 가 대신 사용되고 있다.
두 번째 마운트될 디렉터리(Mount point) 를 나타낸다.
세 번째 파일 시스템 유형을 나타낸다.
네 번째 마운트될 때의 옵션을 나타낸다.
다섯 번째 dump 명령을 통한 백업 시 레벨 덤프 사용 주기를 결정하는 부분으로 0 이면 dump 를 사용하지 않고 1 이면 매일 수행, 2 이면 이틀에 한번 수행한다.
여섯 번째 부팅 시 파일 시스템을 점검하는 fsck 명령의 순서를 정한다.
<file system> <mount point> <type> <options> <dump> <pass>
답 : ① /var/log/wtmp ② last
③ /var/log/btmp ④ lastb
답 : ① /etc/logrotate.conf ② monthly
③ dateext ④ rotate 5
logrotate
로그 파일은 계속적으로 덧붙여지면서 쌓이는 형태라 파일의 크기도 계속 커지게 된다.
이를 방지하기 위해서 로그 파일을 여러개로 분할해 주는 프로그램이 logrotate 이다.
로그파일의 자동 로테이션 기능, 압축 기능, 제거 등을 지원한다.
각각의 로그파일은 하루, 일주일, 한달 단위로 로테이션을 할 수 있다.
현재 리눅스에서는 cron 에 의해 스케줄링 되어 실행되고 있다.
/etc/logrotate.conf 의 주요 설정
weekly : 로그 파일을 일주일마다 rotate 한다.
monthly : 로그 파일을 한달마다 rotate 한다.
rotate 4 : 최대 4번까지 rotate 를 하는 설정으로 기본 logfile.1, logfile.2, logfile.3, logfile.4 형태로 생성된다.
create : 로테이트를 한 후에 비어 있는 로그 파일을 생성하도록 설정하는 항목
dateext : 로테이션으로 생성되는 로그파일에 해달 날짜를 덧붙여서 생성하는 항목
compress : 로테이트한 후 생성된 로그파일을 압축할 때 사용하는 항목
lsattr – 파일에 설정된 속성을 확인할 때 사용하는 명령
사용법
$ lsattr [option] 파일명
옵션
-R : 하위 디렉터리까지 한번에 속성을 확인할 때 사용
-a : .으로 시작되는 숨김 파일과 디렉터리까지 확인할 때 사용
ex)
$ lsattr /etc/passwd
/etc/passwd 파일의 속성 정보를 출력한다.
chattr 파일의 속성을 변경하는 명령으로 root 사용자만 사용가능하다.
-R : 하위 디렉터리까지 한번에 속성을 변경할 때 사용
[mode] mode는 기호와 속성으로 이루어지는데 기호는 +, -, = 을 사용한다.
+ 는 속성 부여
는 속성 해제
= 는 해당 속성만 부여하고 해제
A : 파일 수정시에 atime 은 수정하지 않는다.
a : 해당 파일에 추가만 가능하도록 설정
d: dump 로 백업되지 않도록 설정한다.
i : 해당 파일의 변경, 삭제, 이름변경, 파일 추가, 링크 파일 생성 등을 불가능하게 한다.
S : 파일이 변경될 경우에 디스크 동기화가 일어나도록 할 때 사용한다.
ex)
# chattr +i /etc/service
/etc/service 파일의 변경, 삭제, 이름변경, 파일추가, 링크 파일생성 등을 불가능하게 설정한다.
답 : ① dd ② of ③ if ④ bs
# dd of=/dev/sdb1 if=/dev/sda1 bs=1024
dd(data dumper)
파티션이나 디스크 단위로 백업할 때 사용하는 유틸리티로 사용하기는 쉬우나 많은 시간이 소요된다.
디스크를 이미지 형태로 백업하거나 파일의 포맷 등 형식을 바꾸는 명령어로 스왑파일을 만들거나 디바이스 초기화 등을 시킬때 사용
ex)
# dd if=/dev/sda of=/dev/sdb bs=1M
블록 사이즈 1MB 단위로 하여 /deb/sda 을 /dev/sdb 로 백업한다.
답 : ① data.example.com:/shared
② /remote_data
③ nfs
data.example.com:/shard /remote_data nfs timeo=20,soft,retrans=5 0 0
NFS 클라이언트 사용하기
NFS 클라이언트에서는 mount 명령을 이용하여 NFS 서버의 파일 시스템을 이용할 수 있고, 부팅할 때 마운트하여 사용하려면 /etc/fstab 파일에 등록하면 된다.
(1) mount 와 moutn.nfs 명령 이용하기
ex)
mount -t nfs 192.168.5.13:/nfsdata /mnt
192.168.5.13 의 /nfsdata 를 /mnt 디렉터리로 마운트 한다.
mount.nfs 192.168.5.13:/nfsdata /mnt
192.168.5.13 의 /nfsdata 를 /mnt 디렉터리로 마운트 한다.
(2) /etc/fstab 등록하기
ex)
# vi /etc/fstab
192.168.5.13:/nfsdata /mnt nfs timeo=10,soft,retrans=5 0 0
답 : ① local_umask ② listen_port
③ xferlog_enable
/etc/vsftpd/vsftpd.conf : vsftpd 의 환경 설정 파일.
LISTEN_PORT (정수, TCP 포트 번호) : 인바운드 SMPP 클라이언트 연결을 수락하기 위해 바인드할 TCP 포트
local_umask=022 : 디렉터리나 파일 생성 시 퍼미션 값을 지정한다.
xferlog_enable=YES : 파일 업로드 및 다운로드 관련 로그를 기록할 것인지를 지정한다.
max_client : 최대 접속자를 지정하는 항목.
chroot_local_user=YES : 접속한 사용자의 홈 디렉터리를 최상위 디렉터리로 지정한다. 모든 접속자에게 적용된다.
ls_recurse_enable=YES : FTP 서버 접속 상태에서 ls -R 명령 사용시 하위 디렉터리까지 검색 가능 여부를 지정한다.
ftp_data_Port : 기본 20 port / tcp (FTP 데이터 송수신)
답 : ① Listen
② ServerName
③ DocumentRoot
④ ServerAdmin
⑤ DirectoryIndex
httpd.conf
아파치 웹 서버의 기본적인 설정을 담다앟는 파일로 항목을 살펴보면 다음과 같다.
ServerRoot “/usr/local/apache” : 웹서버가 설치된 디렉터리를 나타낸다.
Listen 80 : 아파치 웹 서버의 포트를 나타내는 항목
ServerAdmin : 서버의 문제가 발생했을 경우 보낼 관리자의 이메일 주소를 적는다.
ServerName : 서버의 도메인 이름을 적는다.
DocumentRoot : 웹 문서가 위치하는 디렉터리를 나타낸다.
DirectoryIndex : 클라이언트가 디렉토리를 요청할때 찾아볼 자원 목록
답 : ① ns.linux.or.kr.
② posein.linux.or.kr.
③ MX 0 (0대신에 양의 정수값 모두 가능)
④ linux.or.kr.
⑤ CNAME
존 설정파일 주요 타입
A : IPv4의 주소를 기입할 때 사용
AAAA : IPv6의 주소를 기입할 때 사용
NS : 도메인의 네임 서버를 지정할 때 사용
MX : 메일 서버를 지정할 때 사용한다.
CNAME : Canonical Name 레코드의 일종으로 alias를 지정할 때 사용
PTR : 리버스 존에서만 사용하는 레코드로 IP주소를 도메인으로 변환하기 위해 지정한다.
MX : 메일 서버를 지정할 때 사용한다. MX 다음에 0 또는 양의 정수값을 기입해서 우선순위를 지정해야 한다.
IN MX 10 mail.coraje.com.
www IN A 192.168.12.22
SOA record
존 파일을 시작하는 레코드로 시작은 도메인명 또는 도메인명을 나타내는 기호인 @ 를 사용한다.
답 : ① in.telnetd
② vsftpd
③ 192.168.12. 또는 192.168.12.0/255.255.255.0
TCP Wrapper
TCP Wrapper 는 tcpd 라는 데몬이 슈퍼데몬인 xinetd에 의하여 수행되는 서비스들의 접근을 제어하도록 하는 프로그램이다.
TCP Wrapper 는 접근이 허가된 호스트의 목록 파일인 /etc/hosts.allow 파일과 접근이 금지된 호스트의 목록 파일인 /etc/hosts.deny 파일을 이용한다.
이 두파일의 검색순서는 /etc/hosts.allow 를 먼저 읽어 들여서 등록된 호스트를 허가하고,
/etc.hosts.deny 에 설정된 호스트를 금지시킨다.
/etc/hosts.allow 에 등록되면 /etc.hosts.deny 파일에 상관없이 허가된다.
/etc/hosts.allow, /etc.hosts.deny 설정
형식
daemon_list : client_list [: shell_command]
daemon_list
한개 이상의 데몬 프로세스 혹은 예약어를 쓸 수 있다.
예약어
ALL : 모든 서비스 또는 모든 호스트를 나타냄
LOCAL : 같은 도메인에 있는 모든 호스트로 “. 문자를 포함하지 않는 모든 호스트
KNOWN : 이름이 KNOWN 인 호스트 또는 이름(주소)을 알고 있는 호스트
UNKNOWN : 이름이 UNKNOWN 인 호스트 또는 이름(주소)을 알고 있는 호스트
PARANOID : 호스트명과 주소가 일치되지 않는 호스트
가 EXCEPT 나 : 리스트 “가” 에서 “나” 를 제외한 모든 호스트
ex)
# vi /etc/hosts.deny
ALL : ALL
client_list
한개 이상의 호스트 이름, 주소, 패턴 혹은 예약어를 쓸 수 있다. 일반적으로 IP 주소나 도메인을 기입
ex)
192.168.1.
192.168.1.0/255.255.255.0
.example.com
답 : ① iptables-save
② iptables-restore
③ save
④ /etc/sysconfig/iptables
iptables 설정 규칙 저장
명령행에서 iptables로 설정한 정책들은 시스템을 재부팅하면 초기화된다.
따라서 해당 정책을 지속적으로 반영하려면 설정 규칙을 저장해야 한다.
설정 규칙을 저장하는 방법에는 관련 명령어를 사용한 저장, 스크립트를 사용한 저장, 사용자가 직접 셸 스크립트를 작성한 저장으로 나눌 수 있다.
1.관련 명령어 사용
iptables-save : iptables 로 설정된 정책을 파일로 저장하는 명려잉다.
사용법
# iptables-save > 파일명
iptables-restore : iptables-save 로 저장된 파일을 불러들여서 정책 설정에 반영한다.
사용법
iptables-restore < 파일명
2.iptables 스크립트 사용
레드햇 계열 리눅스는 /etc/rc.d/init.d/iptables 라는 스크립트를 제공한다.
이 스크립트는 iptables-save 명령을 사용해서 관련 정책을 저장한다.
이 스크립트를 사용해서 저장명령을 수행하면 /etc/sysconfig/iptables 라는 파일에 관련 정책이 저장되어 시스템 재부팅 시에도 규칙이 적용된다.
사용법
# /etc/rc.d/init.d/iptables 인자값
# service iptables 인자값
주요 인자값
save : 설정된 정책들을 /etc/sysconfig/iptables 에 저장한다.
start : /etc/sysconfig/iptables에 저장된 정책을 불러들여서 적용한다.
stop : 설정된 정책들을 전부 지워서 초기화 한다.
restart : 설정된 정책을 초기화한 후에 다시 적용한다.
3. 셸 스크립트 사용
사용자가 직접 셸 스크립트로 만들어 저장한 후에 반영하는 방법이다.