728x90
반응형
728x90
반응형

25. 인터넷, 네트워크 그리고 서버

25.1 Internet

프로그램을 설치하고 명령어를 실행하는 것도 중요하지만 인터넷, 네트워크, 서버의 기초를 이해하는 것이 더 중요하다고 합니다. 내 컴퓨터에서 url주소를 google.com을 입력하고 enter를 치면 서버에서는 내 컴퓨터에 구글 화면을 전송하여 뜨게 해줍니다. 인터넷은 request와 response를 주고 받는 것이라고 할 수 있는데요.

예를 들어 클라이언트 컴퓨터에 게임 프로그램을 설치해 게임의 내용이 게임 회사의 서버로 전송하게 됩니다. 게임 회사의 서버를 게임 서버라고 부르며 채팅 프로그램이 깔려있다면 채팅 서버라고 부릅니다.

인터넷에 google.com을 입력하면 구글 홈페이지가 나옵니다. 이를 Domain name이라고 부릅니다. 

IP주소를 입력해봅시다.

ping google.com 리눅스에 ip주소를 검색하는 명령어입니다. 결과는 172.21.25.78이 나오는데 이를 IP(Internet Protocol) adress라고 부릅니다. 구글에 접속하는 방법은 2가지가 되겠네요. 도메인에 google.com을 입력하는 것과 172.21.25.78을 입력하는 방법이 있습니다. 2가지 방법이 있는 이유는 예를 들어 설명해보겠습니다. 친구와 통화를 하기 위해서는 전화를 걸어야합니다. 전화를 거는 방법에도 2가지가 있는데요. 번호를 입력하는 것을(IP address)과 전화번호부에 이름을 검색하여 전화하는 방법(domain name)이 있습니다. 친구가 1명이라면 번호를 외우기 쉽겠지만 모든 번호를 외우는 것은 불가능하죠. 

여기서 또 문제가 있습니다. 내가 IP주소를 저장한 적이 없음에도 불구하고 172.21.25.78주소가 구글 홈페이지라는 것을 알 수 있는 이유는 무엇일까요?

바로 DNS(Domain Name System)때문입니다. DNS는 이 세상의 모든 도메인이 각각 어떤 IP주소를 갖는 지 알 수 있는 거대한 전화번호부와 같습니다.

IP주소를 입력하게 되면 컴퓨터가 DNS서버에 접속하여 자신의 데이터를 찾아서 내 컴퓨터에 구글 IP주소를 알려줍니다.

친구를 자신의 집으로 초대할 때 자신의 주소를 알아야만 다른 사람이 찾아올 수 있는 것과 같은 개념입니다.



25.2 Internet2

서버 운영하는 법에 대해 구체적으로 알아보겠습니다.

ip addr : 자신의 ip주소를 알 수 있는 명령어입니다.

 컴퓨터에 누군가 접속하기 위해  10.0.2.15주소로 접속하면 방문할 수 있다는 의미죠.

 GUI방식에서는 도메인에 ipinfo.io/ip를 입력하면 자신의 IP주소가 뜹니다.

curl ipinfo.io/ip : 역시 IP주소를 알려주는 명령어입니다.

두 개의 명령어 결과가 다른 이유는 ip addr은 컴퓨터의 실제 IP주소이고 

curl은 온라인 서비스 입장에서 자신에게 접속한 IP주소이기 때문입니다.



집은 장비마다 통신사가 별도의 계약을 체결을 하여 인터넷을 사용합니다. 

각각의 장비마다 다른 IP주소를 부여하게 되면 편리하지만 비용이 비싸다고 합니다.



비용 절감을 위해 통신사와 집은 하나의 회선만 계약을 하고 공유기(router)라는 장치를 통해 연결합니다.

통신사가 갖는 IP주소는 router가 갖게 됩니다. 각각의 장비들은 통신을 위해서는 IP주소가 반드시 필요하죠.

대표 router의 대표IP주소(Public Address)를 통해 각각의 장비(lap top, TV, Desktop, smart phone)가 IP주소(Private Address)를 갖게 됩니다.

서버 컴퓨터로 사용하기 위해서는 public address와 private address의 주소가 같아야 합니다. 대부분의 사용자들의 컴퓨터들은 같지 않기 때문에 서버 컴퓨터로 사용할 수 가 없습니다. 하지만 방법은 있다고 합니다.

예를 들어 설명을 해보겠습니다. 회사에는 대표 번호가 있어 대표 번호를 통해 각 부서에 연결을 시켜줍니다.

부서의 번호를 내선 번호라고 하죠. 대표 번호가 없이도 내선 번호끼리 통화를 할 수 잇습니다. 컴퓨터 역시 외부 컴퓨터가 접속할 수 없어도 라우터 간 컴퓨터는 접속할 수 있습니다.



26. 웹 서버(Apache)

26.1 apache intro

Web Server는 1대의 제한에서 벗어나 전세계 모든 사람들에게 내 컴퓨터에 접속해 정보를 제공하는 효과를 줍니다.

클라이언트가 index.html을 찾으려는 요청이 들어오면 웹 서버(apache, nginx, iis)는 저장 장치(ssd, hdd) 어딘가에 있는 index.html파일을 읽어 웹 브라우저(ie, firefox, chrome)에게 응답합니다.


26.2 apache install

 · super apt-get install apache2 : 아파치 웹 서버 프로그램을 설치

 · sudo service apache2 start : 아파치 웹 서버 프로그램 시작
 · sudo service apache2 stop : 아파치 웹 서버 프로그램 종료
 · sudo service apache2 restart : 아파치 웹 서버 프로그램 재시작
 · sudo apt-get install elinks : elinks 웹 브라우저 프로그램을 설치
 · elinks ->google.com -> q를 통해 빠져 나올 수 잇습니다.



 · elinks http://10.0.2.15/ : Ubuntu logo Apache2가 나오면 성공적으로 설치되어 잘 접속되었다는 의미입니다.

웹 서버의 주소를 알기 위해 ip addr명령어를 사용하였는데 이 외에도 자신의 컴퓨터로 접속하는 방법으로 localhost가 있습니다. 현재 1대의 컴퓨터에서 Web Browser와 Web Server가 서로 정보를 주고 받는 것을 진행하였습니다. 

WB를 통해 WS에 접속할 때 ip addr명령으로 서버의 IP주소를 알아내어 접속하는 것도 방법이지만 localhost(127.0.0.1) 자기 자신의 컴퓨터를 가리키는 주소입니다.



26.3 apache configuration

 · cd /etc : etc디렉토리로 이동, 여러 가지 동작 방법 설정들이 저장되어 있습니다.

 · cd apache2/ : etc/apache2로 이동, apache2에 대한 설정 파일이 있습니다.

 · nano apache2 : 설정 파일에 대한 설명이 있으며, 

sites-enabled/*.conf는 sites-enabled디렉토리 안 conf파일을 모두 읽는 다는 의미입니다.

 · ls -al : apache2프로그램의 파일 목록을 보여줍니다. sites-enabled 디렉토리 파일이 있습니다.


 · cd sites-enabled : sites-enabled디렉토리로 이동합니다.

 · ls -l : 000-default.conf파일이 있습니다.

 · nano 000-default.conf : /var/www/html 디렉토리가 있습니다.

 · cd /var/www/html : 디렉토리로 이동합니다.

 · ls -al : index.html 파일이 있습니다.

 · elinks http://10.0.2.15/index.html : index.html파일로 이동합니다.



 · sudo nano helloserver.html : helloserver.html편집기로 이동합니다.

 · 간단한 <html><body>hello server! hello killershin!</body></html>문법을 입력합니다

 · ctrl+x -> y 저장을 합니다.

 · elinks http://10.0.2.15/helloserver.html : 웹 브라우저(elinks)의 helloserver.html요청에 웹 서버(아파치)가 응답합니다.



26.4 apache.log

 · cd /var/log/apache2/ : apache2 디렉토리로 이동합니다

 · ls -al : access.log파일과 error.log파일이 위치합니다.

 · tail -f /var/log/apache2/access.log : 파일의 끝에 있는 정보만 출력, -f는 파일에 대해 실시간으로 끝에 정보를 추가시켜주는 옵션


27. 원격제어 (SSH)

27.1 SSH Intro

리눅스가 집중받는 이유는 서버 사용자 중 압도적인 다수가 리눅스를 사용하기 때문입니다.

IOT 사물 인터넷 안에 설치되어 있는 운영체제는 리눅스라고 합니다. 사물 인터넷은 인터넷을 통해 다루는 컴퓨터

자신의 컴퓨터를 통해 인터넷 너머에 있는 원격 제어를 해야 하는 경우에 SSH를 사용합니다. 대표적으로 팀 뷰어 프로그램이 있죠. 원격 제어를 하면 인터넷만으로 컴퓨터를 다룰 수 있습니다.

SSH client server관계는 Web client server관계와 일치한다고 합니다.



27.2 SSH2

sudo apt-get purge openssh-server openssh-client : ssh 강력한 삭제 명령어

sudo ssh apt-get install openssh-server openssh-client : ssh-server카테고리

sudo service ssh start : ssh 시작

sudo ps aux | grep ssh : 현재 실행 프로세스 중에 ssh 보여주게 된다.

ssh egoing@192.168.0.255 : 다른 컴퓨터에 입력 egoing컴퓨터로 접속한다.




생활코딩 리눅스 강의

728x90
반응형

'OS > Linux' 카테고리의 다른 글

리눅스 명령어 이해하기10!!  (0) 2017.09.02
리눅스 명령어 이해하기9!!  (0) 2017.09.01
리눅스 명령어 이해하기7!!  (0) 2017.08.30
리눅스 명령어 이해하기6!!  (0) 2017.08.29
리눅스 명령어 이해하기5!!  (0) 2017.08.28
728x90
반응형

22. 사용자의 추가

사용자(user)를 추가하는 방법에 대해 알아보겠습니다.

명령어는 크롬에서 검색하여 사용해도 되니 굳이 외우지 않아도 된다고 합니다.

 · sudo useradd -m tom : -m옵션은 홈 디렉토리를 만들어 주는 것이라 합니다.

 · cd /home : 홈 디렉토리로 이동합니다.

 · ls : duru라는 사용자가 추가 되었습니다.

 · sudo -duru : duru라는 사용자로 로그인합니다.

사용자 계정은 만들었지만 패스워드는 입력하지 않았기 때문에 에러 메시지가 뜹니다.

 · sudo passwd duru : 패스워드를 세팅해줍니다.

 · sudo pwd : duru는 슈퍼 권한이 없기 떄문에 에러가 뜹니다.

 · sudo usermod -a -G sudo duru : duru에게 sudo명령을 사용할 수 있도록 권한을 부여합니다.

    -a는 append 그룹의 사용자를 추가한다는 의미이고 -g를 같이 사용해야 합니다. 



man usermod : usermod에 대한 도움말이 나옵니다. q를 통해 빠져나올 수 있습니다.



23. 권한(Permission)

23.1 권한 기초

블로그나 게시판을 사용할 때 쓴 글의 공개여부를 할 수 있는 기능이 있습니다. 이를 권한이라고 합니다

유닉스 계열 시스템에서 권한의 대상은 file과 directory입니다.

사용자가 파일과 디렉토리에 대한 권한을 지정하는 것입니다.

즉 파일과 디렉토리에 대해 read(읽기) & 쓰기(write) & 실행(execute)의 기능을 추가,제거 하는 것이죠.

 · touch perm.txt : perm.txt라는 txt파일을 생성합니다.

 · ls -l perm.txt : perm.txt파일에 대한 상세보기 입니다.

 · echo '문자열' : 화면에 문자열을 표준 출력하는 명령어입니다.

 · echo 'hi' > perm.txt : hi라는 메시지가 perm.txt에 출력됩니다.

 · cat perm.txt : hi가 출력되는 것을 확인할 수 있습니다.

하지만 duru사용자가 echo 'hello' > perm.txt을 입력하면 permission denied 에러 메시지가 출력됩니다.

- | rw- | rw- | r-- | 1 | duru duru | 3 | Aug 30 10:50  | perm.txt 

- : type으로 기본적인 파일을 의미합니다. d는 디렉토리를 의미합니다.

rw- : User(사용자)의 권한으로 파일에 대해 읽기, 쓰기 권한이 있습니다.

rw- : Group(그룹)의 권한으로 파일에 대해 읽기, 쓰기 권한이 있습니다.

r-- :  Other(다른 사람)의 권한으로 파일에 대해 읽기 권한만 있습니다. 


23.2 권한을 변경하는 방법(chmod)

rw-rw-r--를 access mod라고 부릅니다.

권한을 변경할 수 있는데요. 만약 다른 사람에게 노출되어야 하는 정보가 아니라면 r을 없애야겠죠.

바로 chmod인데요 change mode의 약자로 권한을 변경합니다. 

 · chmod o-r perm.txt : other의 r권한을 빼는 명령어

 · chmod o+r perm.txt : other의 r권한을 추가하는 명령어

 · chmod o+w perm.txt : other의 w권한을 추가하는 명령어

 · chmod u-r perm.txt : user의 r권한을 빼는 명령어



23.3 실행의 개념과 권한 설정

실행은 X, execute의 약자로서 파일에 대해 실행 가능 여부를 설정하는 것입니다.

 · nano hi-machine.sh : hi-machine.sh파일 편집기로 이동합니다.

 · #!/bin/bash : bash파일을 통해 아래의 코드를 실행합니다.

 · echo 'hi hi hi hi' 

입력 후 ctrl+x -> y 저장 후 빠져나옵니다.

 · ls --l : hi-machine.sh 파일이 생성되었습니다.

 · /bin/bash hi-machine.sh : hi hi hi hi메시지가 뜨면서 실행되지만

. · /hi-machine.sh : 실행 권한이 없기에 permission denied 에러가 뜹니다.

 · chmod u+x hi-machine.sh; : 사용자의 권한을 추가합니다.

 · chmod o+x hi-machine.sh : 다른 사용자에게도 x권한을 추가합니다.



23.4 directory의 권한

파일은 읽기, 쓰기, 실행히 분명한 반면 디렉토리는 읽기, 쓰기 실행이 불분명합니다.

 · mkdir perm;cd perm;echo 'hi' > perm.txt : perm디렉토리 생성 후 접속하여 hi메시지를 perm.txt파일에 저장합니다.

 · cd .. : 상위 디렉토리로 이동

 · ls -l : perm 디렉토리가 생성되었습니다.

 · chmod o-r perm : perm디렉토리에 다른 사용자가 읽기를 제거하는 명령어입니다.

 · chmod o-w perm : 디렉토리 안에 w권한이 없으면 파일을 생성할 수 없습니다. 파일 이름도 변경이 불가하죠.


23.5 chmod사용법 정리

다음은 chmod의 편리한 사용법입니다.

사용법을 외우려 하지 말고 필요할 때 마다 검색하는 게 편리하다고 합니다.

 · chmod 111 perm.txt : user, group, other --x권한을 부여하는 명령어

 · chmod 222 perm.txt : user, group, other --w권한을 부여하는 명령어

 · chmod 444 perm.txt : user, group, other --r권한을 부여하는 명령어

 · chmod 333 perm.txt : user, group, other -wx권한을 부여하는 명령어

 · chmod 555 perm.txt : user, group, other r-x권한을 부여하는 명령어



 · chmod a+r perm.txt : a all 모든 사용자에게 r권한을 부여하는 명령어

 · chmod a+r perm.txt : a all 모든 사용자에게 w권한을 부여하는 명령어

 · chmod a-r perm.txt : a all 모든 사용자에게 w권한을 제거하는 명령어

 · chmod a=rwx perm.txt : a all 모든 사용자에게 rwx권한을 부여하는 명령어

 · chmod a=r perm.txt : a all 모든 사용자에게 r권한을 부여하는 명령어




24.그룹

24.1 그룹 Intro

User는 파일을 만든 사람, u rwx

Other는 유저가 아닌 모든 사람,o rwx

Group 그룹은 특정 사용자의 집단, g rwx

리눅스는 다중 사용자 시스템으로 user나 other필수로 알아야 하며 흐름의 구조상 그룹도 알아야 한다고 합니다.


24.2 groupadd

계정 : egoing : developer

cd /var

mkdir developer : 권한 에러

sudo mkdir developer : developer디렉토리를 생성합니다.

cd developer/ : developer그룹 디렉토리로 이동합니다.

echo ‘hi, killershin’ > killershin.txt : 그룹은 root로 되어있기에 권한 에러뜹니다.

add group in linux 검색으로 활용합니다.

sudo groupadd developer = sudo !! 직전 명령어 입력

nano /etc/group : 그룹에 대한 정보를 갖고 있는 파일 ctrl+x

egoing k8805 멤버로 추가해야합니다.

sudo usermod –a –G developer egoing

sudo usermod –a –G developer k8805 : 그룹에 add되었습니다.

exit

cd /var/developer/

man cdown

sudo chown root:devleoper :현재디렉토리 소유자는 root 그룹은 developer

ls –al : 그룹이 root에서 developer 변하였습니다.

sudo chmod g+w : 그룹에 w권한을을 부여합니다.

 

계정 : K8805 : developer

Cd developer/

Exit

cd /var/developer/

 

계정 : Leezche : designer

Cd developer/

exit

cd /var/developer/



생활코딩 리눅스 강의

728x90
반응형

'OS > Linux' 카테고리의 다른 글

리눅스 명령어 이해하기9!!  (0) 2017.09.01
리눅스 명령어 이해하기8!!  (2) 2017.08.31
리눅스 명령어 이해하기6!!  (0) 2017.08.29
리눅스 명령어 이해하기5!!  (0) 2017.08.28
리눅스 명령어 이해하기4!!  (2) 2017.08.27
728x90
반응형

5. sudo(Super User DO), 수도명령어

sudo란? 일반 사용자로 접속하여 사용하다가 경우에 따라 슈퍼의 권한이 필요할 때 사용하는 것입니다.

sudo 권한이 필요한 이유는 a라는 사람의 파일을 b가 마음대로 사용하면 안되겠죠?

그래서 permission 권한을 지정했습니다.

sudo의 사용의 예입니다.

apt-get install git : 깃 프로그램을 설치하는 명령어 입니다.

하지만 아래의 사진과 같이 "Permission denied" 권한을 거부하는 메시지가 뜹니다.

 · sudo apt-get install git 앞에 sudo 명령어를 붙여 줘야 설치가 됩니다.

개발자 개그에 "아들아 엄마가 하는 말 앞에는 sudo가 붙는 것을 명심해라"라는 개그가 있는데요

그만큼 sudo명령어가 엄마만큼 중요하답니다.ㅎㅎ



6. nano, 파일 편집

파일 편집이란? 파일을 만들고 편집하는 방법인데요.

운영체제에서는 파일은 정보 저장의 기본적인 수단입니다.

디렉토리는 파일을 잘 정리 정돈하기 위한 수납 공간이라고 합니다.

정보 저장을 위해서 파일 편집기를 이용합니다. 

Command Line Interface 명령어 기반에서도 편집기가 있습니다. 대표적으로 nano, vi가 있습니다.

nano는 리눅스를 처음 사용하는 분들에게 추천하고,

vi는 리눅스 중,고급자 분들에게 추천한다고 하네요. vi는 익숙해지는데 시간이 소요된다고 합니다.

두 개의 편집기는 대부분의 리눅스 계열에 들어가 있기 때문에 사용법을 익히면 어디든 사용 가능하다고 합니다.


콘솔창에 nano 명령어 입력후 엔터를 치면 아래와 같은 화면이 나옵니다.

글자가 깨져있네요. ㅜㅜ

^g, ^0, ^k, ^j 등등의 명령어가 있습니다. 여기서 ^는 호스트 키를 의미해요.

각자 기억하기 쉬운 호스트 키를 지정하셨을 거라고 생각합니다.

 · nano 파일 명 후 엔터를 치면 파일을 수정할 수 있습니다.

 · ctrl+0 : File Name to Write라는 메세지가 뜹니다., 파일 이름을 적어 주시면 됩니다. 

           엔터를 하면 wrote 문장수 lines 라는 메시지가 뜹니다.

       파일을 저장하는 기능도 합니다.

 · ctrl+c : 취소하는 기능입니다.

 · ctrl+g : 나노의 도움말 기능입니다.

 · ctrl+x : nano를 나가는 기능입니다. exit

 · ctrl+k : 잘라내기 기능을 합니다.

 · ctrl+u : 붙여넣기의 기능입니다.

 · ctrl+6 : 드래그 기능인데요, 화살표를 이용해 커서를 이동시킵니다. 

복사하려는 텍스트 다음까지 커서를 이동해주세요

 · ctrl+w : 원하는 텍스트를 찾아주는 기능입니다.  ctrl+f 기능이죠.

스트키+w한 번더 눌러준다면 원하는 다음 텍스트로 이동합니다. 



nano의 기능들을 사용해 보았습니다.



7. Package Manager, 패키지 매니져

Package Manager란? 운영체제에 기본적으로 설치되어 있지 않은 프로그램을 쉽게 설치할 수 있는 방법입니다.

Package는 프로그램 또는 앱을 뜻합니다. 패키지가 갖고 있는 기능들을 이용해 다양한 처리를 할 수 있는데요.

리눅스에는 기본적으로 탑재되어 있는 패키지가 있습니다. ls, mkdir 등이 있습니다.

리눅스는 Package Manager를 제공합니다. 앱 스토어(구글 스토어 등)가 하는 역할을 합니다.

즉 필요한 프로그램을 찾고 다운 받아 설치,삭제하는 기능을 합니다.

대표적으로 apt, yum이 있습니다.

 · apt-get update; : Package Manager를 통해 설치하는 소프트웨어 상태를 최신으로 하는 명령어 입니다.

 하지만 Permission denied라는 메시지가 뜹니다. 아래에 사진에는 글자가 깨져있네요..

 · export Lang=C : 명령어를 쓰고 엔터를 치고 다시 확인하면 글씨가 잘 보입니다.



업데이트를 완료했다면 htop프로그램을 설치해보겠습니다.

 · sudo apt-cache search htop : htop로 시작하는 프로그램을 찾아줍니다.

 · top : 윈도우에서 작업 관리자와 같은 역할

 · htop : top프로그램을 개선한 프로그램입니다.



 · sudo apt-get install htop : htop 프로그램을 내 컴퓨터에 설치합니다.

 · sudo apt-get upgrade htop : 최신 버전으로 업데이트 됩니다. update가 아니에요!

 · sudo apt-get remove htop : htop프로그램을 삭제하는 명령어 입니다.

 · htop 나 top 프로그램을 들어가고 q를 누르면 빠져 나올수 있어요~


아래 사진을 보시면 조금? 화려한 작업 관리자 화면으로 설치 되었네요ㅎㅎ



Package Manager는 기본적으로 갖고 있지 않은 프로그램을 설치할 때 사용하는데요.

주어진 프로그램으로 사용하느냐 필요한 것을 다운 받아 사용하느냐의 차이인데요.

원하는 프로그램을 다운 받으려면 패키지 매니져는 필수일 것 같습니다.


생활코딩 리눅스 강의


728x90
반응형
728x90
반응형

+ Recent posts