Linux

리눅스 명령어 추가, WEB & DNS 서버 (10/08, 10/15)

리아챌 2025. 2. 20. 16:21

<실습>



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