본문 바로가기
정리/시스템

Linux configuration file

by 정재희 2017. 10. 6.

리눅스 시스템의 특성

– 첫 바이트

• "d“ : 디렉토리, “-" : 일반 파일, ”l“ : 심볼릭 링크

– 두 번째 바이트

• 소유자, 그룹, 타계정에 대한 권한

• "r“ : 읽기, "w“ : 쓰기, "x“ : 실행

– Ex)"target" 파일

• 소유자 : 읽기 및 쓰기 권한(rw-) ,그룹과 타계정 : 읽기 권한(r--)

drwxr-xr-x 2 root root 4096 2017-10-06 20:05 Directory

-rw-r--r-- 2 root root  519 2017-10-06 20:04 hard.link

-rw-r--r-- 2 root root  519 2017-10-06 20:04 hard.target

lrwxrwxrwx 1 root root    6 2017-10-06 20:02 symbolic.link -> target

-rw-r--r-- 1 root root  977 2017-10-06 20:00 target


리눅스 환경 설정 파일

1. /etc/passwd

#cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

• 시스템의 모든 계정 정의

• 계정명, 그룹, 홈 디렉토리 등의 정보를 저장

• 콜론(:)을 통해 각 항목을 구분

– username:password:uid:gid:gecos:homedir:program

– username : 계정명, 로그인시 사용되는 이름

– password : 패스워드가 암호화되어 저장

• 사용자가 패스워드를 변경시“passwd" 명령 사용

• 쉐도우(shadow) 패스워드 : "x"나 "*"로 표시

– uid : 사용자 ID로 각 사용자에게 시스템이 부여하는 고유한 정수값

• 시스템에서 uid와 username는 1:1 대응

– gid : 사용자가 속해 있는 기본 그룹의 ID

• 그룹의 ID에 따른 이름은 /etc/group에 정의

– gecos : 사용자의 실제 이름이나 사무실, 연락처 등의 부가 정보

• finger 명령이 사용자를 구별하기 위해 이 항목을 이용

– homedir : 각 사용자의 홈 디렉토리

• 홈 디렉토리 : 사용자가 로그인시 최초로 접근하는 디렉토리

– program : 사용자가 로그인한후에 실행되는 프로그램

• 사용자가 지정한 쉘을 실행




2. /etc/shadow

#cat /etc/shadow

root:$6$VyKgjqti$bmyNVaKJWKN4w005.3OM6HaZW5b6irkbCruAY/ktlHfefmEZPEsMcAfMzR.qb07pkX8pX6xTlbFLov6M05Lp5.:17280:0:99999:7:::

bin:*:15980:0:99999:7:::

daemon:*:15980:0:99999:7:::

adm:*:15980:0:99999:7:::

– 암호화된 패스워드를 별도로 보관하는 파일

– ①:②:③:④:⑤:⑥:⑦:⑧:⑨

• ① : 계정명, /etc/passwd 파일의 계정명과 동일

• ② : 암호화된 패스워드, 공란일 경우 로그인시 패스워드 불필요, "*“ 일경우 사용하지 않는 계정

• ③ : 패스워드를 마지막으로 바꾼 날, UTC 기준일부터 며칠 째인지

• ④ : 며칠이 지난 후 패스워드를 변경 가능한지, 0이면 언제든 패스워드의 변경이 가능

• ⑤ : 패스워드를 바꿔야 하는 날부터 며칠이 지났는지

• ⑥ : 패스워드 만료기간이 되었음을 얼마 동안 사용자에게 알릴지

• ⑦ : 패스워드가 만료되어 사용할 수 없게 된 후 며칠이 지났는지

• ⑧ : 계정 사용을 할 수 없게 된 것이 UTC 기준일부터 며칠 째인지

• ⑨ : 사용하지 않는다.


3. /etc/group

# cat /etc/group

root:x:0:

bin:x:1:bin,daemon

daemon:x:2:bin,daemon

sys:x:3:bin,adm

adm:x:4:adm,daemon

– 그룹과 그룹에 속해있는 사용자에 대해 저장

– 모든 사용자는 최소한 하나의 그룹에 속해 있음

– groupname:password:gid:member1,member2, member3 ···

• groupname : 그룹의 이름

• password : 그룹에 지정된 패스워드,

– 패스워드가 지정된 경우, 그룹의 멤버가 아니어도, 패스워드를 알고 있는 사용자는 그룹의 권한을 획득 가능

• gid : 그룹의 ID로 groupname과 대응

• member1, member2 ··· : 그룹에 속해있는 사용자 목록


4. 파일시스템 설정

– 설정파일 : /etc/fstab, /etc/mtab에 저장

– 파일시스템이 로컬 시스템에 한정되지 않음

– NFS(Network File System)과 같이 원격지 시스템에 대한 마운트 정보 역시 파일 시스템 설정에 기록 가능

– 로컬 파일 시스템에 대한 분석을 수행하기 전에 분석 대상 시스템에 설정되어 있는 파일 시스템 설정을 확인


– /etc/fstab

UUID=bba12670-b26e-41f5-877c-8d02d32bc421             /            ext4     defaults        1 1

UUID=97706ac6-40e8-4120-b12c-700dbaa1a1cc     /home     ext4     defaults        1 2

UUID=786e9ad2-079b-44f0-8039-d1c52c28a1fb             swap       swap    defaults        0 0

tmpfs        /dev/shm              tmpfs       defaults                0 0

devpts       /dev/pts               devpts      gid=5,mode=620    0 0

sysfs          /sys                    sysfs         defaults                0 0

proc          /proc                  proc          defaults                0 0

• 시스템을 부팅하면서 각 장치를 자동으로 마운트할 때 사용

• "mount“ 명령에서 ”-a" 옵션을 사용할 경우 사용

FileSystem MountPoint Type Option1,Option2··· Dump Pass

– FileSystem : 마운트되는 장치의 이름

• NFS를 마운트하는 경우에는 원격지의 경로

– MountPoint : 마운트 지점

– Type : 파일시스템의 타입

– Option

• ro/rw : 읽기 전용/읽기 쓰기 가능

• suid/nosuid : SUID 사용 가능/불가

• sgid/nosgid : SGID 사용 가능/불가

• exec/noexec : 실행 권한을 가진 파일의 실행 가능/불가

• quota/noquota : 사용자별 사용 용량 제한/제한하지 않음

• auto/noauto : 부팅할 때 자동 마운트 수행/수행하지 않음

• user/nouser : 일반 사용자도 마운트 가능/불가

– Dump : “dump“라는 도구를 이용하여 파일 시스템 백업 가능 여부

– Pass : 마운트시 파일 시스템 검사 여부

• 0 : 검사하지 않음, 1,2 : 파일 시스템 검사. Pass가 1 부터 검사


5. 네임 서버 설정

– 도메인 주소 또는 "WebServer“와 같이 특정 이름을 사용하는 경우 IP 주소로 바꾸는 역할

• 로컬의 네임 서비스 정보를 이용하는 호스트 설정

• 원격의 DNS 서버를 통해 IP 주소를 알아내는 DNS 서비스

– 호스트 설정

• 호스트 설정 파일은 로컬에서 운용되는 네임 서비스

• DNS 서버를 거치지 않고 지정된 IP 주소를 사용

• IP 스푸핑(spoofing) 방지, 특정 호스트에 대한 접근 제어

• 설정 파일 : /etc/hosts.conf, /etc/hosts, /etc/hosts.allow, /etc/hosts.deny

• 잘못된 호스트 파일의 설정은 시스템 사용자가 인식하지 못하는 상태에서 공격자의 사이트로 유도될 수 있다.


/etc/hosts.conf

# cat /etc/host.conf

multi on

• 네임 서비스를 어떻게 동작시킬 것인지를 결정

• order : 네임 서비스가 동작하는 순서를 결정, hosts는 로컬에 저장된 /etc/hosts 파일 참조를, 

bind는 DNS 서버를 통한 네임 서비스를, nis는 네트워크 정보 서비스(NIS) 프로토콜

• alert : on/off로 설정, IP 스푸핑이 발생하면 syslog에 기록

• multi : on/off로 설정, 동일한 호스트에 여러 IP 주소를 부여

• nospoof : on/off로 설정

– 주소를 이용하여 IP를 얻어내는 것과 IP를 통해 주소를 얻는 두가지 방법을 모두 수행하여 두 개가 일치할 경우에만 IP 주소를 전달한다.

• trim : 도메인 주소를 파라메터로 설정, hosts 파일을 참조할 때, 도메인을 입력하지 않아도 자동으로 찾을 수 있게 한다.


/etc/hosts

127.0.0.1 localhost

127.0.1.1 ubuntu

# The following lines are desirable for IPv6 capable hosts

::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

• 호스트의 이름과 IP 주소의 쌍으로 구성


/etc/hosts.allow, /etc/hosts.deny

ALL: 192.168.0.

ALL: 192.168.1.

ALL: 192.168.3. EXCEPT 192.168.3.100

ALL: .korea.ac.kr EXCEPT malware.korea.ac.kr

• 외부의 접근을 허용 또는 차단하기 위해 사용


DNS 설정

/etc/resolv.conf

nameserver 192.168.80.2

nameserver 192.168.80.3


네트워크 인터페이스 카드(NIC) 설정

# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

USERCTL=yes

BOOTPROTO=dhcp

• auto는 부팅시 자동으로 인터페이스를 활성화

• 고정 IP 주소 : "static"로 선언, IP 주소, 넷마스크, 네크워크 주소, 브로드

캐스트 주소, 게이트 웨이 등의 항목을 설정

• 동적 IP 주소 : "static" 대신에 “dhcp"로 지정


자동실행 프로그램

- /etc/initab

# Default runlevel. The runlevels used are:

#   0 - halt (Do NOT set initdefault to this)

#   1 - Single user mode

#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

#   3 - Full multiuser mode

#   4 - unused

#   5 - X11

#   6 - reboot (Do NOT set initdefault to this)

id:3:initdefault:

– 0 - 시스템 중지(halt), 임의로 지정하면 안됨

– 1 - 단일 사용자 모드

– 2 - NFS를 제외한 다중 사용자 모드(네트워크와 연결되어 있지 않으

면 3과 동일)

– 3 - 모든 기능이 동작하는 다중 사용자 모드(default)

– 4 - 사용안함

– 5 - X 윈도우 이용

– 6 - 재부팅, 임의로 지정하면 안됨

/etc 디렉토리

• 실행레벨에 따라 실행할 파일을 정의한 파일

• 실행파일(또는 실행파일에 대한 심볼릭 링크)

• 각 실행파일의 환경설정 파일이 정의

• Redhat 스크립트 파일 저장위치 : /etc/rc.d/rc0~/etc/rc.d/rc6

• Debian 스크립트 파일 저장위치 : /etc/rc0.d~/etc/rc6.d

/etc/rc.d/rc0.d# ll

lrwxrwxrwx. 1 root root 17 2015-03-03 22:46 K99sysstat -> ../init.d/sysstat

lrwxrwxrwx. 1 root root 22 2014-06-16 19:59 K99vmware-tools -> ../init.d/vmware-tools

lrwxrwxrwx  1 root root 17 2017-07-03 10:18 S00killall -> ../init.d/killall

lrwxrwxrwx  1 root root 14 2017-07-03 10:18 S01halt -> ../init.d/halt

자동 실행 스크립트의 이름

• SnnName, KnnName(nn은 00~99의 숫자)로 지정

• S로 시작하는 스크립트는 시스템이 시작할 때 자동으로 실행

• K로 시작하는 스크립트는 시스템이 종료할 때 자동으로 실행

• nn은 디렉토리 내 스크립트의 실행 순서, 숫자가 작은 것부터 먼저 실행


".bashrc", ".bash_profile", “.bash_logout"

– bash 쉘은 동작할 때 자동으로 실행되는 스크립트

– ".bashrc” bash 쉘이 실행할 때 마다 실행

– ".bash_profile” bash 쉘이 로그인 쉘로 이용되었을 때만 동작

“.bash_logout” bash 로그인 쉘이 종료

– /etc/profile, /etc/bash.bashrc 등

– /etc 디렉토리의 파일 : 사용자의 홈 디렉토리에 있는 스크립트가 동작할 때 해당 파일의 유ㆍ무를 검사하여 있으면 실행

• “.kshrc"

– 콘(Korn) 쉘이 실행할 때 자동으로 실행되는 스크립트 파일

• ".vimrc"

– 텍스트 편집기인 vi, vim 에디터를 이용할 경우에 자동으로 실행

• ".xinitrc"

– X 윈도우가 구동될 때 자동으로 실행된다.



작업 스케줄링(crontab)

– crontab은 리눅스 시스템에서 사용하는 작업 스케줄링 데몬

– 작업 스케줄링 정보는 /etc/crontab 파일 내에 정의

• Min : 0~59분

• Hour : 0~23시

• Day : 1~31일

• Month : 1~12 혹은 Jan~Dec

• DayOfWeek : 0 또는 7은 일요일, 1=월요일, 2=화요일··· 혹은 Sun~Sat

• Command : 실행하고자 하는 명령어 또는 스크립트



• syslog 데몬 : 시스템의 로그를 기록

– 운영체제의 동작과정에서 발생하는 로그를 기록

– 다른 데몬 프로그램이 발생시키는 로그 역시 기록

– /var/log 디렉토리에 기록

• bash 쉘에 의해 기록되는 명령어 히스토리가 존재

• utm p 파일, wtmp 파일 : 사용자 접속 기록

• 시스템에서 발생된 사건에 대해 많은 정보를 제공

– 사용자가 입력한 명령어의 히스토리는 각 사용자의 홈 디렉토리에 저장

– bash 쉘 : “.bash_history" 파일에 입력한 명령어를 기록

– $HISTSIZE : 명령어 히스토리 파일에 기록되는 명령어의 수 지정



/var/log/wtmp와 /var/run/utmp, /var/log/lastlog

– /var/log/wtmp 파일

• 로그인 시간과 사용자가 시스템에 연결한 기간과 재부팅할 때의 부팅 기록을 바이너리 파일로 저장

• last 명령이 /var/log/wtmp 파일을 사용

– last : 사용자의 로그인 목록을 생성

• 파일을 보기 위해서 별도의 뷰어 또는 파서가 필요

/var/run/utmp 파일

• 시스템에 현재 로그인되어 있는 사용자의 정보를 저장

• who, w, finger 등의 명령어 사용

– /var/log/lastlog 파일

• 각 계정이 마지막으로 로그인한 시간을 저장

• lastlog 명령어를 사용

– /var/log/dmesg

• 시스템이 부팅할 때 출력하는 메시지를 기록하는 로그 파일

• 시스템의 하드웨어 설정 및 로드된 디바이스 드라이버 등을 확인

– /var/log/messages

• 시스템에서 발생하는 각종 로그를 기록한 파일

• 운영체제가 동작하며 발생하는 하드웨어 및 소프트웨어의 이벤트와 에러를 기록

– /var/log/auth.log

• 관리자 권한으로 실행된 명령에 대해 시간, 계정명, 시도한 작업, 실패 여부 등을 저장

• sudo 명령을 통해 관리자 권한으로 동작한 것 뿐만 아니라 passwd와 같이 SUID, SGID가 설정되어 관리자 권한으로 실행된 명령어도 기록


'정리 > 시스템' 카테고리의 다른 글

Linux 파일 시스템 디렉토리 구조 개요  (0) 2017.10.06
MBR vs GPT  (0) 2017.10.06
BIOS 대 UEFI  (0) 2017.10.06
오픈소스SW 라이선스  (0) 2017.10.06
리눅스의 개요  (2) 2017.10.05

댓글