리눅스 명령어 추가, WEB & DNS 서버 (10/08, 10/15)
<실습>
1. find 명령어
2. find -exec ls 명령어
3. 리다이렉션 2번을 통해 dev/null이라는 쓰레기통으로 보내짐 (1번 + 리다이렉션)
4. 표준 에러는 /dev/null에 저장되고 표준 출력은 findtest/1008에 저장됨(표준 출력 1은 생략 가능) -> / 디렉토리에서 100Mb이상 파일을 찾은 후 cat 명령어를 사용하여 findtest/1008에 복사 (디렉토리 생성, 1번 + 리다이렉션)
5. grep 명령어
6.
※ IP 주소 확인
※ DNS 확인
※ 게이트웨이 확인
7.
8.
g - 주 그룹
b - 홈 디렉토리
9, 10, 11, 12
◇ 사용자 정보 변경
# usermod [옵션] [계정]
-g : 기본 그룹 변경
-G : 보조 그룹 변경
-aG : 보조 그룹 추가
-c : 설명 변경
-u : UID 변경
-d : 홈디렉토리 변경
-m 옵션을 함께 사용하면 다 이동
◇ 그룹 정보 변경
# groupmod [옵션] [그룹명]
-g : GID 변경
-n : 그룹명 변경
◇ 사용자 패스워드 관리
# passwd [옵션] [계정]
| => root만 가능, 일반 계정은 자신의 비밀번호만 변경할 수 있음
-S : 정보 출력
-l : 비번 잠금
-u : 잠금 해제
-d : 비번 삭제
-e : 다음 로그인 시 비번 설정하도록 함.
◇ 그룹 비밀번호 설정
# gpasswd [옵션] [그룹명]
-A : 그룹 관리자 지정 (root가 지정)
-a : 그룹에 사용자 추가
-d : 그룹에서 사용자 제거
-M : 그룹에 사용자 추가 (root)
■ 파일 권한 설정 (허가권과 소유권)
◇ 파일 접근 권한
- 리눅스는 하나의 시스템에 다수의 사용자들이 동시에 접속해서 사용하는 운영체제
- 여러 사용자들이 동일한 저장 공간을 사용하는 구조
- 각각의 사용자들이 생성한 파일이나 디렉토리가 다른 사용자들에게 노출
- 소유권과 허가권이라는 두 권한을 가지고 접근 제어를 함
- 소유권 : 어떤 파일이나 디렉토리를 소유하는 권리 (소유자, 소유 그룹, 그 외 사용자로 나 뉨(u, g, o))
- 허가권 : 어떤 것을 할 수 있는지를 설정. 소유권에 따라 권한이 나뉨
◇ 소유권
- 어떤 파일이나 디렉토리를 소유하는 권리
- 소유자(u), 소유그룹(g), 그 외 사용자(o)로 나뉨 (모두 a)
◇ 소유권 변경
- 파일이나 디렉토리의 소유권을 변경
- 'root'만 변경 가능함
- R 옵션 사용 가능 : 디렉토리 지정 시 안의 파일 및 디렉토리도 같이 변경
▷ 소유자 변경
# chown [소유자] [파일/디렉토리]
▷ 소유 그룹 변경
# chgrp [소유 그룹] [파일/디렉토리]
▷ 소유자 및 소유 그룹 변경
# chown [소유자][소유 그룹] [파일/디렉토리] => 디렉토리 자체를 보려면 -ld로 사용(디렉토리 안의 내용을 보려면 ls -ld가 아닌 ls -l 사용)
◇ 허가권(permission)
- 해당 파일이나 디렉토리에 읽고, 쓰고, 실행할 수 있는 권한
- 소유자, 소유 그룹, 그 외 사용자로 분류해서 적용
- 사용자의 파일을 보호하는 가장 기본적인 기능
▷ 읽기 (r)
- 파일 : 파일의 내용을 읽거나 복사가 가능
- 디렉토리 : ls 명령으로 디렉토리의 내용 확인 가능
(ls 명령의 옵션은 실행권한이 있어야 가능)
▷ 쓰기 (w)
- 파일 : 파일을 수정, 이동, 삭제 가능 (단, 디렉토리에 쓰기 권한 O)
- 디렉토리 : 파일을 생성하거나 삭제할 수 있다.
▷ 실행 (x)
- 파일 : 파일을 실행할 수 있다.
- 디렉토리 : cd 명령 사용 가능. 파일을 디렉토리로 이동하거나 복사할 수 있다.
※ t라는 디렉토리를 만들어 모든 사용자한테 rwx권한을 줌.
※ t의 권한을 얻었다고 해서 root에는 접근할 수 없다. (root는 root와 자신이 속한 그룹만 실행이 가능하기 때문이다.)
◇ 허가권 변경
- 파일이나 디렉토리의 허가권 변경 가능
- 허가권 변경 시 기호나 숫자를 이용하여 변경
- 디렉토리의 경우 R 옵션을 사용하여 안의 파일 및 디렉토리 허가권을 같이 바꿀 수 있다.
# chmod [권한] [파일/디렉토리]
▷ 기호를 사용하여 권한 변경
1. 사용자 표시
u : 소유자, g : 소유 그룹, o : 그 외 사용자. a : 모두
2. 연산자 기호
+ : 권한 부여, - : 권한 제거, = : 권한 설정
3. 권한 문자
r : 읽기, w : 쓰기, x : 실행
※ 권한 여러개를 같이 설정할 때
rw- rw- r-- -> 권한이 있으면 1, 없으면 0
110 110 100
6 6 4
▷ 숫자를 이용하여 권한 변경
- 권한을 한 분류씩 8진수로 표기
-> 권한을 2진수로 변경한 후 8진수로 변환
-> 각 8진수 한자리가 각 소유권의 허가권이 됨
=> 읽기r (4), 쓰기w (2), 실행x (1)
- 숫자로 변경할 경우 권한 추가, 제거가 아닌 '='의 의미로 변경됨
◇ 기본 접근 권한 확인 및 변경
- 파일이나 디렉토리가 생성될 때 적용되는 기본 권한
- umask 명령어로 확인 가능
- umask XXXX로 변경 가능
- /etc/profile(글로벌) 또는 /etc/bashrc(사용자별)에서 영구적 설정 가능
-> 사용자별이 우선 적용
※ umask 값 변경
<실습>
1. mkdir test 2. ls -l
3.
4.
5.
6.
7.
8.
■ 패키지 설치
◇ RPM
- 레드햇에서 만든 패키지 설치 도구
- 현재 디렉토리에 rpm 설치파일이 있어야 설치 가능 (ls)
- 의존성 문제가 있음
▷ 사용법
1. 설치
# rpm [옵션] [패키지파일]
U : 패키지 설치 / 업데이트
i : 패키지 설치
v : 설치 과정 확인
h : 설치 진행을 표시 (####)
2. 제거
# rpm -e [패키지]
3. 질의
# rpm -qa [패키지이름] : 설치한 패키지 확인
# rpm -qi [패키지이름] : 패키지 상세 정보 확인
◇ YUM
- 인터넷을 통해 필요한 패키지를 저장소(Repository)에서
자동으로 '모두' 다운로드'해서 설치
/etc/yum.repos.d/ 리포지터리 주소 저장
- 의존성 문제 해결
1. 설치
# yum install [패키지] -y (-y 옵션은 무엇을 물어보면 다 yes로 할거라는 명령)
2. 삭제
# yum remove [패키지] -y //의존성 관련 패키지도 삭제
# yum erase [패키지] -y //의존성 삭제 안함
3. 패키지 검색
# yum search [패키지 또는 명령어]
4. 정보 확인
# yum info [패키지]
■ WEB-Server
- 서버 중 가장 많이 활용되는 분야
- 오랫동안 안정적으로 많이 사용했던 패키지가 Apache
- lamp (Linux + Apache + PHP + MySQL(MariaDB))
○ 구축하기
1. 서비스에 필요한 패키지 찾기
- ahpache, php, mariadb, php-mysqlnd
2. 패키지 버전 확인
-# yum info
3. 패키지 설치
-# yum install -y httpd php mariadb-server php-mydsqlnd
4. 설정 및 확인 (시작을 해야 가능한 경우도 존재함)
-# vim /etc/httpd/conf/httpd.conf (아파치 기본 설정)
5. 서비스 시작 # systemctl restart
# systemctl enable service - 서비스를 자동으로 계속 시작
# systemctl disable service - 서비스 계속 시작을 취소하는 명령
# systemctl restart httpd
# systemctl restart mariadb
6. 서비스 확인 # systemctl status
# systemctl status httpd
# systemctl status mariadb
※ 해당 서버에서 계속 서비스를 동작시킬 경우 # systemctl enable
# systemctl enable httpd
# systemctl enable mariadb
7. 방화벽 설정
# firewall-cmd --add-port=80/tcp
# firewall-cmd --add-port=80/tcp --permanent
-> 명령어 순서를 지켜야함 (일시적인 것을 먼저하고, 영구적인 것을 나중에)
# firewall-cmd --add-port=3306/tcp
# firewall-cmd --add-port=3306/tcp --permanent
8. 방화벽 설정 확인 # firewall-cmd --list-all
9. 포트 상태 확인 # netstat -nltp | grep
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
■ DNS-Server
- Domain Name System Server
- Domain 이름을 IP로 변환해주는 서버
- 컴퓨터 이름 + IP를 hosts 파일에 기록
◇ 도메인 구조
1. Root Level Domain ( . )
- 도메인 구조에서 최상위를 차지하는 도메인
- 일반적으로 브라우저에 입력하는 경우는 생략
- 도메인 설정 시 반드시 표기
- 전 세계에 Root DNS 서버는 13개가 존재함
2. Top Level Domain
- ccTLD : .kr, .fr, .sp 등등 국가코드최상위 도메인
- gTLD : .com, .net, .org 등의 일반최상위 도메인
- ICANN에 의해 관리
3. Second Level Domain
- 회사나 조직, 기관 등의 목적에 부합되는 단어 및 숫자를 이용해 생성
4. Third Level Domain
- 각 목적에 따라 필요한 경우 생성된 도메인
- 서브 도메인이라고도 함.
ex) http://www.dk.com.
방법 1
- 제일 뒤에 .이 루트레벨 도메인
- .com이 탑레벨 도메인 (gTLD)
- dk가 세컨드레벨 도메인 (회사나 기관 등을 나타내는 단어)
- www가 서드레벨 도메인 (dk에서 필요에 의해 만든 도메인)
방법 2
- dk.com을 도메인 부분, www를 호스트 부분
방법 3
- dk.com을 메인 도메인, www를 서브 도메인
※ FQDN (Full Qualified Domain Name)
- 호스트의 이름과 도메인의 이름을 포함한 전체 도메인 이름
- 호스트와 도메인을 함께 명시하여 전체 경로를 모두 표기하는 것
● DNS 서버의 종류 (DNS port는 TCP 53번 , UDP 53번을 사용(대부분 UDP를 사용, 특별한 경우 TCP 53번을 사용))
▷ 캐시 네임 서버
- 사용자들의 질의를 받아 DNS 정보를 조회하여 응답해주는 네임서버
▷ 권한 네임 서버
- 도메인 존(zone) 데이터를 갖고 있어, 응답하는 네임 서버
- 도메인을 등록할 때 이 서버의 IP를 등록하고 자체 도메인에 대한 정보를 관리.
● DNS 서버 구축
▷ 캐시 DNS 서버 구축
1. 서비스에 필요한 패키지 찾기
- bind, bind-utils
2. 패키지 버전 확인
3. 패키지 설치
# yum install -y bind bind-utils
4. 설정 및 확인 (시작을 해야 가능한 경우도 존재함)
# vim /etc/named.conf
※ listen port로 누가 나한테 listen할건지 설정 (any라고 써주면 누구나 listen할 수있다.)
※ allow-query로 누가 질의를 허용할건지 설정 (any라고 써주면 누구나 질의를 허용할 수 있다.)
※ 나한테 들어온 질의를 다른 IP에게 다시 질문함.
※ named.ca 안에 있는 이 ip들에게 전부다 질의함. (A는 IPv4를 말함.)
※ DNS 서비스 하는 법
※ 도메인 192.168.56.10에게 http://www.busan.go.kr이라는 주소를 물어서 가지고오는 루트를 다 보여달라는 뜻
5. 서비스 시작 # systemctl restart
6. 서비스 확인 # systemctl status
7. 방화벽 설정
8. 방화벽 설정 확인 # firewall-cmd --list-all
9. 포트 상태 확인 # netstat -nltp | grep