<커널 컴파일 명령어 >
1. 커널 소스 파일 압축 해제
2. 커널 소스이 설정 값 초기화(make mrproper)
3. 커널 컴파일 옵션 설정 작업(make menuconfig)
4. 커널 이미지 파일 생성 작업(make bzImage)
5. 커널 모듈 생성을 위한 컴파일 작업(make modules)
6. 커널 모듈 설치 작업(make modules_install)
7. 커널 모듈 파일 복사, grub.conf 파일 수정(make install)
8. 새로운 커널 사용을 위한 시스템 재부팅시
● make help
=> 지원되는 다양한 target을 확인 가능
● make mrproper
=> configure 작업을 통해 생성된 오브젝트 파일뿐만 아니라 config 파일 , 다양한 백업
파일 등도 제거한다.
● make distclean
=> mrproper 작업과 더불어 편집된 백업 및 패치 파일도 모두 제거한다.
● make_modules_install
=> /lib/modules/커널버전 디렉터리 안에 복사하는 과정
● make bzImage
=> 커널 이미지 생성. 확장자명은 bzip2
● make menuconfig
=> 텍스트 기반의 컬러메뉴를 제공하고 커서를 이용해서 이동이 가능하다.
● make xconfig
=> X 윈도 환경의 Qt 기반의 설정 도구이다.
● make gconifg
=> X 윈도 환경의 Gtk+ 기반의 설정 도구이다.
<디스크 확장 절차 >
디스크 인식 여부 확인 (fdisl -l)
파티션 작업 fdisk 하드웨어 장치이름 (예 /dev/sdb1)
fdisk /dev/sdb1
n
p
+256
등 .. 메뉴얼에 따라 파티션 분할하거나 생성하는 작업 함
시스템 재부팅
파일 시스템 생성 (mkfs.ext4 /dev/sdb1)
디렉터리 생성
마운트 mount -t ext4 /dev/sdb1 /backup
마운트 및 용량 확인 df -h
부팅시에 자도 마운트 등록 /etc/ftab
<프린트 >
LPRng, CUPS
LPRng
=> 버클리 프린팅 시스템
BSD 계열 lpr, lpq, lprm , lpc
System v lp, lpstat, cancel
● lpr
옵션
# 인쇄할 매수
-m
-r 출력한 뒤에 파일 삭제
-l 필터링 없이 직접 보낸다.
● lp
-d 다른 프린터 지정
-n 인쇄할 매수를 지정
초기에는 printtool, printconf , /etc/printcap 환경설정 파일
● CUPS
=> 애플이 개발한 오픈 소스 프린팅 시스템
lpadmin
redhat-config-printer , system-config-printer
● /dev/lp0
=> 병렬 포트
● /dev/usb/lp0
=> USB 포트
CUPS인 경우 http://localhost:631로 접속가능
alsactl
ALSA 사운드카드를 제어하는 명령어
옵션
-d 디버그 모드를 사용한다.(--debug)
-f 환경설정 파일을 선택한다. 기본 파일은 /etc/asount.state
command
store 사운드카드에 대한 정보를 환경 설정 파일에 저장한다.
restore 환경 설정 파일로부터 선택된 사운드카드 정보를 다시 읽어 들인다.
init 사운드 장치 초기화
● alsactl init
=> 사운드 장치를 초기화
● alsamixer
=> 커서(ncurese) 라이브러리 기반의 ALSA 사운드카드 오디오 믹서 프로그램
● cdparanoia
=> 오디오 CD에서 음악 파일을 추출할 때 사용하는 명령어
옵션
-w wav 파일로 추출한다.(기본 옵션)
-a Apple AIFF-C 포맷으로 추출한다.
-B 모든 트랙의 음악을 Cdda2wav 스타일로 추출한다. 'track#.' 형태로 파일 이름이 생성된다.
● cdparanoia -- "-3"
=> 트랙 3번부터 추출한다.
<스캐너 SANE>
sane-backend, sane-frontends
XSANE(X based interfce for the SANE)
=> X-window 기반으로 프로그램
xsane이라고 입력하면 실행
http://www.xsane.org
● sane-find-scanner
=> USB 및 SCSI 스캐너와 관련 장치 파일을 찾아주는 명령.
/dev/sg0, /dev/scanner, /dev/usb/scanner, /dev/usb/usbscanner
옵션
-q 스캐너 장치만 출력한다.
-v 자세한 정보를 출력한다.
-p 병렬(parallel)포트에 연결된 스캐너만 찾는다.
● scanimage
=> 이미지를 스캔하는 명령이다.
옵션
-h 도움말 옵션으로 사용 가능한 옵션 목록을 출력한다.
-d SANE의 장치 파일명를 적는 옵션(--device-name)
--format 이미지 형식을 지정하는 옵션으로 pnm과 tiff를 지정할 수 있다.
-L 사용 가능한 스캐너 장치 목록을 출력한다.(--list-devices)
● scanadf
=> 자동 문서 공급 장치(ADF: Automatic Document Feeder)가 장착된 스캐너에서 여러 개의
사진을 스캔할 때 사용하는 명령이다.
● xcam
=> GUI기반으로 평판 스캐너나 카메라부터 이미지를 스캔해 주는 명령이다.
< rsyslog >
● /etc/rc.d/init.d/rsyslog
=> rsyslogd 데몬을동작시크는 스크립트
● /etc/rsyslog.conf
=> rsyslogd 환경설정 파일
● /etc/sysconfig/rsyslog
=> rsyslogd 데몽니 실행과 관련되 옵션 설정되어 있는 파일
● /etc/sbin/rsyslogd
=> 실제 rsyslogd 데몬 실행
● *.=crit;kern.none
=> 모든 facility가 발생하는 메시지 중에 crit 수준의 메시지만 /var/log/critical 파일에
기록하는데 커널이 발생하는 메시지는 제외한다.
● logroate
=> 로그 파일을 여러 개로 분할해 주는 프로그램. 파일의 자동 로테이션 기능, 압축 기능, 제거 등을 지원
옵션
-f 강제로 환경 설정 파일을 읽어 들여서 실행한다. (--force \)
● /etc/logrotate.conf 주요 설정
weekly 로그 파일을 일주일마다 하는 설정.
rotate 4 최대 4번까지 rotate를 하는 설정
create 로테이트를 한 후에 비어 있는 로그 파일을 생성하도록 설정하는 항목
dateext 로테이션으로 생성되는 로그 파일에 해당 날짜를 덧붙여서 생성하는 항목
nomissingok 로그 파일이 존재하지 않느 경우에 에러 메시지를 출력한다.
기본값으로 설정
missngok 로그 파일이 존재하지 않는 경우에 에러 메시지를 출력하지 않고 다음 파일로 이동한다.
/var/log/wtmp{
monthly
create 0644 root utmp
minisize 1M
rotate 1
}
/var/log/wtmp는 한 달마다 로테이트 하지만, 파일 크기가 1MB가 되면 그 이전이라도 로테이트
권한은 644 소유자는 umtp로 지정. 로테이션은 1번만 한다.
● /var/lib/logrotate.status
=> 파일은 각 로그 파일별로 로테이션된 날짜가 기록된 파일이다.
● /var/log/message
=> 시스템에서 발생하는 표준 메시지가 기록되는 파일로 대부분의 로그가 이 파일에 쌓이고
root만이 읽을 수 있도록 설정되어 있다.
● /var/log/secure
=> 인증에 기반한 접속과 관련된 로그가 기록되는 파일로 보통 login(telnet 및 ssh), tcp_wrappers,
xinetd
● /var/log/dmesg
=> 시스템이 부팅할 때 출력되었던 로그가 기록되는데, 보통 커널 부트 메시지 로그라고 한다.
● /var/log/mailog
=> sendmail, dovecot 등 메일 관련 작업이 기록되는 로그 파일이다.
● /var/log/xferlog
=> FTP 접속과 관련된 작업이 기록되는 파일로 로그 포맷은 총 14개의 영역으로 구성되어 있다.
주요 항목
● transfer-type
=> 전송 형태를 나태면 하나의 문자로 표기
a는 ascii
b는 binary
● special-action-flag
action 이 발생
특수한 문자로 표기
C 파일이 압축되어진 경우
U file이 압축되어 있지 않은 경우
T tar로 묶여진 경우
_ 어떠한 action이 발생되는 않은 경우
● direction
=> 전송된 지시를 나타내는 것으로 o는 outgoing의 약자로 다운로드된 경우이고,
i는 incoming의 약자로 업로드된 경우를 나타낸다.
● access-mode
=> 사용자가 어떤 형태로 로그인 하였는지 나타냄
a anonymous
g guest
r real
● authentication-method
=> 인증에 사용되는 방법
0은 none
1은 RFC931 인증을 나타낸다.
● authentication-user-id
=> 인증 방법에 의해 되돌려지는 사용자 계정이 기록.
authentication-method와 연계되어 0이면 보통 *로 표시된다.
● completion-status
=> 전송 상태를 하나의 문자로 나타내는데, c는 complete의 약자로 완전한 전송
i는 incomplete의 약자로 불완전한 전송을 나타내다.
● /var/log/cron
=> cron 정보가 기록되는 파일이다.
● /var/log/boot.log
=> 부팅 시 발생되는 메시지가 기록되는 파일로 보통 부팅 시 동작하는 데몬 관련 정보
● /var/log/lastlog
=> telnet이나 ssh을 이용해서 접속한 각 사용자의 마지막 정보가 기록되는 파일
● /var/log/wtmp
=> 콘솔, telnet , ftp등 이용하여 접속한 사용자 기록, 시스템을 재부팅한 기록등의 로그가 쌓이는 파일
● /var/log/btmp
=> wtmp와는 반대되는 로그로 접속이 실패한 경우를 기록한다.
● last
=> 사용자의 로그인 정보, 재부팅한 정보를 파일이 생성되는데, 이것을 출력하는 명령어
● sysctl
=> 커널 변수의 값을 제어하여 시스템을 최적화할 수 있는 명령어. 리눅스 커널 제어를 위한 매겨 변수
/proc/sys 디렉터리. 하위 디렉터리 구분은 .으로 대체하여 명령을 수행한다.
보통 echo > 로 값을 변경한다.
옵션
-a, -A 커널 매개 변수와 값을 모두 출력
-p 환경 변수 파일에 설정된값을 출력.
파일명 지정하지 않을 시 /etc/sysclt.conf
-n 특정 매개 변수에 대한 값을 출력할 때 사용한다.
-w 변수=값 매개 변수에 값을 설정한다.
● sysctl -w net.ipv4.icmp_echo_ignore_all=0
=> icmp_echo_ignore_all값을 0으로 바로 적용
ping과 같은 ICMP 패킷에 대한 응답 여부를 결정한느 매개 변수로 값이 0이면
응답을 하고, 1이면 응답을 하지 않는다.
● /proc/sys/net/ipv4/tcp_syncookies
=> tcp SYN Flooding 공격을 막을때 유용한 항목으로 SYN패킷의 도착빈도가 일정한 횟수보다
많을 때 해당 요청을 허용하지 않을 때 사용한다.
● /proc/sys/net/ipv4/icmp_echo_ignore_broadcast
=> 브로드캐스트 주소에 ping을 전달하여 공격하는 형태인 smurf공격을 막을 때 사용
● /proc/sys/net/ipv4/conf/all/accept_source_route
=> 해커가 소스 라우팅 패킷을 보낼 수 있다면 돌아오는 반응을 가로채서 상대방의 호스트와
신뢰받은 호스트처럼 속일 수 있게 된다. 0으로 설정하면 이 기능을 사용하지 못하게 된다.
● /proc/sys/net/ipv4/conf/all/rp_filter
=> Source IP Address를 조작할 수 있다. 패킷이 들어오는 인터페이스와 나가는 인터페이스가 같으지
검사하려면 값을 1로 설정한다.
● /proc/sys/net/ipv4/conf/all/log_martians
● /proc/sys/net/ipv4/ip_forward
● /proc/sys/net/ipv4/conf/all/accept_redirects
=> redirect 관련 패킷을 허가할 것인지를 결정하는 파일로 기본값은 '1'로 허가하도록 되어 있다.
ICMP redirect는 서버의 routing 경로를 확인하는 역할을 하는데 이것을 차단.
● SSH(Secure Shell)
패키지
● openssh
=> openssh-server , openssh-clients 모두 필요한 핵심적인 파일들이 들어 있는 패키지로
ssh-keygen 명령이 들어 있다.
● openssh-server
=> 서버 관련 패키지 데몬인 sshd, sftp 서버 등이 들어 있다.
● openssh-clients
=> 클라이언트 관련 패키지 ssh,scp,sftp등의 명령어가 있다.
● /etc/ssh/sshd_config
=> 환경 설정 파일
● /etc/rc.d/init.d/sshd
=> 데몬 스크립트
<서버 주요 설정 >
● ListenAddrss
=> ListenAddrss "192.168.1.1:22" 형태로 지정하면 되고, 콜론(:),은 IPv6 주소체계에서 사용
● HostKey /etc/ssh/ssh_host_rsa_key
=> SSH2의 RSA 암호화 방식의 호스트키 위치를 지정한다.
● KeyregenerationInterval 1h
=> 서버의 키는 한번 접속이 이루어진 뒤에 자동적으로 다시 만들어진다.
● PermitRootLogin yes
=> root 로그인 허용 여부를 결정하는 것이다. 보안 강화하기 위해서는
no로 설정한다.
● MaxAuthTries
=> 접속 시 재시도 최대 횟수
● Maxsession
=> 네트워크 줏호당 최대 연결 수
● AuthorizedKeysFile .ssh/authorized_keys
=> 클라이언트에서 생성한 공개키를 저장할 파일명을 설정한다.
● TCPKeepAlive yes
=> 클라이언트의 접속이 끊어져쓴지를 체크하기 위해 일정 시간 메시지를 전달하도록 하는 설정
< ssh 클라이언트 ssh >
● ssh [option] 호스트명 or IP 주소
=> ssh는 서버로 접속할 때에 같은 계정으로 접속을 시도하므로 클라이언트와 서버의 계정이
같으면 생략해도 된다.
● ssh 계정 이름@호스트네임
=> -l 옵션 대신에 사용하는 방법으로 클라이언트 계정과 서버의 계정이 다르면 계정 이름을
명기해야 한다.
● ssh 호스트네임 명령
=> rsh와 같이 원격 셸을 사용할 수 있는데, 접속 없이 명령만 내릴 때 유용하다.
옵션
-l 다른 계정으로 접속할 때 사용한다. 이 옵션 대신 서버 주소 앞에 @를 붙여 사용할 수도 있다.
-p ssh 서버의 포트 번호가 22번이 아닌 경우 -p 옵션을 사용해서 바뀐 포트르 지정할 때 사용한다.
● ssh-keygen
=> ssh 클라이언트에서 ssh-keygen 명령을 이용해서 비밀키와 공개키를 생성하고, ssh 서버에 공캐키를
복사하면 된다.
옵션 -t
사용할 암호화 알고리즘을 지정하는 옵션으로 rsa, dsa등을 사용할 수 있다.
ssh2버넌에서는 지정하지 않으면 rsa를 사용한다.
● scp
=> 원격 셸 및 scp를 이용해서 작업하기
scp .ssh/id_rsa.pub 203.247.40.246:.ssh/authorized_keys
원격지에 .ssh 디렉터리를 생성하고scp를 이용해서 공개키를 복사한다.
PAM (Plugable Authentication Module)
PAM은 사용자를 인증하고 그 사용자의 서비스에 대한 접근을 제어하는 모듈화된 방법
/lib/security
=> PAM에서 제공하는 라이브러리에 위치하고 동적으로 로드 가능한 오브젝트
파일(.so)
/etc/pam.d
=> pam관련된 서비스 디렉터리
/etc/pam.d/other
=> 특별히 지정되지 않은 서비스
pam 파일 구성
account 사용자가 해당 서비스에 접근이 허용된느지 여부, 패스워드 기간 만료 여부를 검사한다.
auth 기본적으로 패스워드를 통해 인증하지만, 생체인증과 같이 다른 인증을 통해 사신임을 주장하는
사용자가 맞는지를 검사한다.
password 사용자가 그들의 인증 방법을 변경하도록 할 때 제공하는 방법을 기본적인 것은 패스워드를 사용한다.
session 사용자가 인증받기 전후에 해야 할 것을 나타낸다.
control 항목
=> 통제를 담당하는 부분으로 PAM에 무엇을 해야 할 지를 알려준다.
requisite
=>이 모듈을 이용하는 인증이 실해할 경우데 즉시 거부한다.
requried
=> 인증이 거부되기 전에 비록 PAM이 이 서비스에 등록된 다른 모든 모듈들을 요구함에서
불구하고 실패할 경우에 인증을 거부한다.
sufficient
=> 비록 이전에 요청되어진 모듈이 실해하더라도 이 모듈에 의해서 인증이 성공할 경우에
인증을 승인한다.
optional
=> 서비스에 대한 응용 프로그램의 성공/실패가 중요하지 않다는 것을 의미하는 것으로
성공/실패 판단 시에는 무시된다.
include
=> 해당 서비스 인증을 통과해야 가능하도록 설정할 때 사용한다.
● module_name
=> 사용하는 모듈명을 명기하는 부분으로 /lib/security에 있는 모듈명을 기입한다.
● module_arguments
=> 지정한 모듈이 사용하는 인수를 기입한다.
PAM의 주요 모듈
● pam_security.so
=> 접속하는 계정이 root인 경우 /etc/security 파일에 기록된 터미널을 통하는 경우에만 허가하도록 한다.
/etc/pam.d/login 및 /etc/pam.d/remote 파일에 설정되어 있고, 적용받는 관련 서비스는 텔넷이 있다.
● pam_lisfile.so
=> 임의의 파일에 대해 서비스를 허가하거나 거부하는 방법을 제공한다.
● pam_nologin.so
=> /etc/pam.d/vsftpd 파일에 설정되어 ftp 사용자 거부 목록 파일로 이용되고 있다.
● pam_wheel.so
=> root가 암호 입력 없이 해당 서비스에 대한 접근을 허용할 때 사용되는 모듈로, su, chsh 등에 사용된다.
● songsi ALL=/usr/sbin/useradd, /usr/bin/passwd
songsi에게 useradd, passwd 명령을 부여하는데, 접속한 곳에 상관없이 사용 가능도록 설정한다.
● lsattr
=> 파일에 설정된 속성을 확인할 때 사용
-R 하위 디렉터리까지 한 번에 속성을 확인할 때 사용한다.
-a .으로 시작되는 숨김 파일과 디렉터리까지 확인할 때 사용한다.
● chattr [option][mode] 파일명
-R 하위 디렉터리까지 한 번에 속성을 변경할 때 사용한다.
[mode]
A 파일 수정 시에 atime은 수정하지 않는다.
a 해당 파일에 추가만 가능하도록 설정한다.
d dump로 백업되지 않도록 설정한다.
i 해당 파일의 변경, 삭제, 이름 변경, 파일 추가, 링크 파일 생성 등을 불가능하게 한다.
S 파일이 변경될 경우에 디스크 동기화가 일어나도록 할 때 사용한다.
e 디스크 블록에 매핑하기 위해 확장된 파일임을 표시하는 것으로 chattr 속성으로 없앨 수는 없는 속성이다.
● getfacl
=> 파일이나 디렉터리에 설정된 접근 리스트를 확인하는 명령어
옵션
-d 접근 권한 리스트의 기본값을 출력한다.
● sefacl
=> 파일이나 디렉터리에 접근 권한 리스트를 설정하는 명령으로 root만 사용 가능하다.
옵션
-m 권한을 지정하거나 수정할 때 사용한다.(--modify)
-x 권한을 삭제할 때 사용한다.(--remove)
-R 하위 디렉터리와 파일까지 권한을 변경할 때 사용한다.(--recursive)
-b 권한 및 mask 증 지정한 권한을 전부 제거한다.(--remove-all)
● SELinux
=> 데몬의 버그를 통해 root 권한을 획득하더라도, 해당 데몬에만 행사할 뿐, 다른 데몬이나
다른 데몬이나 시스템에는 접근이 불가능하도록 하여 시스템의 보안을 강화하는데 있다.
● /etc/selinux/config
=> 적용 및 확인 변경
getenforce ,setenforce
X 윈도우에서는 system-config-selinux라는 도구를 이용해서 설정 가능하다.
증분 백업
● tar -g list -cvfp songsi.tar /songsi
=> -g는 증분 백업에 사용하는 옵션으로 list라는 파일의 내용을 토대로 증분 백업을 시도하는데,
처음 사용하는 경우에는 전체 백업을 한다.
list라는 파일의 내용과 비교하여 증가된것만 songsi.tar로 백업
분할 및 압축 백업
● tar zcvf - /home | splite -b 10m -home.tar.gz
=> /home 디렉터리를 압축하여 10MB 단위로 백업한다. split 명령은 지정한 파일명 뒤에
aa, ab 등의 형태로 파일이 생성되므로 home.tar.gzaa, home.tar.gzab 등으로 생성된다.
● cat home.tar.gza* | tar zxvf -
=> split 명령은 텍스트 파일 관련 명령어이므로 복원할 때 cat명령을 사용한다.
● cpio(copy input to output)
=> 많은 양의 데이터에대해서는 tar보다 빠르다.
단점으로는 증분 백업 기능은 지원하지 않는다.
옵션
-o 표준출력으로 보내어 사용한다. (--create)
-i 표준 입력으로 받을 때 사용한다. 백업한 자료를 불러올 때 사용한다.(--extract)
-c 아카이브 포새 형식은 new SVR4 portable format with no CRC으로 지정한다. -H newc 옵션과 동일하다.
-t 내용만 확인할 때 사용한다.(--list)
-F 표준 입출ㄹ겨 전환 기호 대신에 파일명을 지정할 때 사용한다.
-B 입출력 블록 사이즈를 조절할 때 사용한다. 기본 512byte이고 최대 2120byte까지 가능하다.
-H 아카이브 포맷 형식을 지정하는 옵션. bin, newc, crc등의 값을 사용할 수 있다.
(-- format 포맷)
● find /home | cpio -ocv > home.cpio
=> /home을 home.cpio 파일로 백업한다.
● dump
0~9 압축 레벨 0이면 전체 백업
-f 백업할 매체나 파일명을 적는다.
-u dump 작업 후에 /etc/dumpdates라는 파일에 관련 정보를 기록한다.
● restore
-i 대화식으로 복구할 파일을 선택한 후에 복원할 때 사용한다.
-f 백업할 매체나 파일명을 적는다.
-r 전체 복원시에 사용한다. 이 옵션 사용 시에는 파일 시스템이 미리 생성되어 있어야 하고,
마운트도 되어 있어야 한다.
● dd
=> 파티션이나 디스크 단위로 백업할 때 사용하는 유틸리티로 사용하기는 쉬우나 많은 시간이 소요된다.
● rsync(remote synchronous)
네트워크로 연결된 원격지의 파일들을 동기화하는 유틸리티로 예전에 사용하던 rcp(remote copy)
에 비해 처리속도도 빠르고 다음과 같은 기능을 제공한다.
옵션
-l 심볼릭 링크를 그대로 보존한다.(--links)
-L 심볼릭 링크가 참고하고 있는 파일을 복사한다.(--copy--links)
-H 하드 링크를 그대로 보존한다.(--hard-links)
-z 전송할 때 압축한다.(--compress)
-b 백업할 때 동일한 파일이 존재하는 경우에 ~를 붙여서 백업 파일을 생성한다.(--backup)
-e 원격지에 접속 시, 사용할 프로토콜을 지정하는 옵션이다. 일반적으로ssh를 사용해서 최근에는 명기하지 않아도 된 다.
--progress 명령이 실행되는 동안의 전송 상황 정보를 출력한다.