주석

단일 줄 주석 (Double Hyphen)

-- remark

 

다중 줄 주석 (Slash & Asterisk)

/*

remark

remark

remark

*/

 

빠른 쿼리 실행

1. shift + 방향키(+ Home, End)로 쿼리문 범위 선택

2. Ctrl + Enter로 실행

search라는 이름의 테이블이 있다.

SELECT
	*
FROM
	search
WHERE
	val > "A";

문자열의 순서 상 B가 A보다 값이 크므로 id가 4인 B가 출력된다.


SELECT
	'4' > '10', 4 > 10;

문자열로써의 4와 10에서는 먼저 두 문자열의 0번째 문자끼리 비교했을 때 4가 1보다 뒤에 있는 값을 갖기 때문에 1, 0이 출력된다.


파일의 종류

- : 일반 파일

d : 디렉토리 파일

b(block device) : 플로피 디스크, 하드 디스크 등의 장치 파일

c(character device) : 마우스, 프린터 등 입출력 장치 파일

l(link) : 바로가기 파일


몇 가지 파일 명령어

mkdir

디렉토리 생성 명령어

-p(parent) 옵션 : 생성하려는 경로의 상위 디렉토리가 없으면 한꺼번에 전부 만든다.


cd [argument]

절대경로 : 어디서나 접근할 수 있다 : cd /

상대경로 : 현재 위치 기준으로 접근한다 : cd ../../../..

상황에 알맞게 사용해야 한다.


rmdir [option] [argument]

반드시 해당 디렉토리가 비어 있어야만 지울 수 있다.

-p 옵션 : rmdir aaa/bbb/ccc 다 지운다.


rm [option] [argument]

이 명령어로 파일 및 디렉토리를 삭제하는 경우가 더 많다.

삭제를 진행할 경우 복구하기 어렵다.

-i(interactive) 옵션 : 삭제 전 한 번 더 확인한다.

-f(force) 옵션 : 강제로 삭제한다.

-r 옵션(recursive) : 디렉토리 내의 파일까지 모두 삭제하기 위해서 사용하는 중요한 옵션

(디렉토리 내부를 순회하면서 하나씩 삭제하는 원리)


cp [option] [argument1] [argument2]

원본과 복사할 파일(타겟)을 모두 지정해주어야 한다.

-r 옵션(recursive) : 디렉토리 내의 파일까지 모두 복사하기 위해서 사용하는 중요한 옵션

(디렉토리 내부를 순회하면서 하나씩 복사하는 원리)


mv [option] [argument1] [argument2]

이동과 이름변경 두 가지 기능이 있기에 사용하기 전에 잘 생각해야 한다.

mv date.txt now.txt : 두 아규먼트의 레벨이 같으므로(둘 다 파일) 이름 변경이 이루어진다.

mv Temp Temp1 : 디렉토리의 이름 변경.

mv now.txt Temp1 : argument1은 파일, argument2는 디렉토리이므로 이동.


chmod [option] [argument]

보안의 기초로,

r(read), w(write)(삭제 권한 포함), x(execute) 3가지의 속성으로 권한을 제한한다.

그룹별로 지정하기에 용이함.

 

파일 상세정보에서

-rwxrwxrwx

이런 식의 포맷을 확인할 수 있으며 앞의 문자 하나는 파일의 종류를 나타내고, 이후로 3글자씩 끊어서 읽는다.

첫 번째는 파일의 소유주, 두 번째는 소유주 그룹, 세 번째는 일반인이다.

 

2진수를 10진수로 치환해서

rw- r-- r-x

110 100 101

6    4    5

이렇게 표기할 수도 있다.

chmod 744 sample.txt : 소유주는 rwx 모두, 소유주 그룹은 r--, 나머지는 r-- 이다.

 

u(user), g(group), o(other), a(all) 4가지 속성으로 r, w, x 권한을 빼거나 추가할 수 있다.

chmod o+x sample.txt : 일반 사용자에게 실행 권한을 추가한다.


ln [option] [argument1] [argument2]

링크의 종류에는 hard link와 symbolic link가 있다.

 

hard link는 i-node(주민번호)까지 똑같이 복제한 파일이다.

또한 원본이 수정되면 같이 수정된다.

원본이 삭제되어도 그대로 사용 가능하다.

ln data.txt clone.txt

 

symbolic link는 원본 파일로 연결되는 바로가기 파일이다.

파일명만 같으면 기존 파일이 삭제되고 다른 파일이 생겨도 그 곳을 가리킨다.

원본이 삭제되면 사용할 수 없게 된다.

ln data.txt -s twin.txt


wc [option] [argument]

Word Counter.

 

-l 옵션 : 라인 수

-w 옵션 : 단어 수

-c 옵션 : 바이트 수

-m 옵션 : 문자 수


sort [option] [argument]

파일의 내용을 소팅해서 보여준다.


cmp [option] [argument1] [argument2]

두 파일의 차이점을 보여준다.

업그레이드 버전이 diff 명령어.

 


vsftpd(Very Secure FTPD) 서버와 FileZilla 클라이언트 설치

포트 포워딩 룰 추가.

이름바꿔 복제.

$ sudo nano /etc/netplan/00-installer-config.yaml

114로 수정한다.

try, apply 절대 하지 말고 IP 변경하면 바로 리부트.

PuTTY에서 설정 후 세이브.

접속이 잘 되고 IP가 바뀌었다.

윈도우즈 커맨드에서 Host-Only IP로 핑 날리기.

FTP 서버 설치 준비가 끝났다.

$ sudo apt update

$ sudo apt install -y vsftpd

다음 설정 파일을 나노 에디터로 열어 수정해 줄 것이다.

25라인: anonymous_enable=NO -> YES

31라인: #write_enable=YES -> 주석 제거

40라인: #anon_upload_enable=YES -> 주석 제거

44라인: #anon_mkdir_write_enable=YES -> 주석 제거

$ sudo systemctl restart vsftpd

$ sudo systemctl enable vsftpd

$ sudo systemctl status vsftpd

$ cd /srv/ftp

$ sudo mkdir pub

$ sudo chmod go+w pub

 

익명으로 접속되는 디렉터리는 /srv/ftp 이다.

pub 디렉토리를 생성하고 모든 사용자의 모든 권한을 허용했다.

$ touch today.txt

write 권한이 others에게도 생겼기 때문에 sudo 없이도 가능하다.

FTP 서버의 전용 회선인 21번 포트를 연다(하지만 이후 연결이 되지 않아 아예 방화벽을 비활성화했다).

FileZilla Client를 설치한다.

맨 왼쪽의 것을 다운로드한다.

설치 후 셋업 파일을 실행하고 Next로 쭉 진행한다.

Desktop Icon은 유용하기에 추가로 체크해줬다.

호스트 IP와 사용자명을 입력, 비밀번호는 아무거나 입력하고 빠른 연결을 클릭한다.

포트 넘버는 생략해도 디폴트가 21이기에 넣지 않아도 상관없다.

아까 잠깐 언급했듯이 연결이 잘 되지 않아 방화벽 자체를 disable 시켜버리니 연결이 되었다.

파일을 업로드 할 때는 왼쪽에서 오른쪽으로 드래그해서 올리면 된다.

 

FTP 환경 구축 완료.


MySQL 환경 구축

포트 포워딩 룰 추가 및 가상머신 복제.

IP 수정 후 try, apply 하지 말고 $ sudo init 6

PuTTY 설정

변경된 IP 확인 및 HostOS에서 핑 날려보기.

설치 준비 완료.

$ sudo apt update

$ sudo apt install -y mysql-server

$ sudo mysql_secure_installation

 

비밀번호 확인 플러그인 허용 : y

비밀번호 안전도 : 0

[8자리 패스워드 입력]

[패스워드 재입력]

루트 비밀번호 변경 : n

익명 사용자 삭제 : n

원격 연결 제한 : n

테스트 DB 삭제 : n

권한 테이블 새로고침 : y

$ sudo mysql -u root -p

[비밀번호 입력]

SELECT VERSION();으로 버전 확인 후 exit.

$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 127.0.0.1로 된 것을 주석친다.

(로컬호스트에서만 접속 가능하게 하는 옵션이기 때문에 원격지에서 접속하기 위해서)

CREATE USER 'root'@'%' IDENTIFIED BY 'P@$$W0rd';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

 

root 계정을 새로 만들어야 원격지 접속이 가능하다고 해서 새로 만들고 권한을 준다.

$ sudo systemctl restart mysql

$ sudo ufw allow 3306/tcp

이제부터 DB 서버에 연결할 클라이언트를 준비할 것이다.

HeidiSQL 사이트에 접속해서 클라이언트 툴은 다운로드한다.

동의 사항 동의해주고 기타 등등 Next.

설치 후 restart는 하지 않았다.

좌측 하단 '신규' 클릭 후 오른쪽 화면처럼 설정을 한다.

암호는 PuTTY에서 설정했던 'P@$$W0rd' 로 하면 된다.

HeidiSQL로 MySQL Database 접속에 성공한 모습.


Virtualization(가상화)

물리적인 하드웨어 장치를 논리적인 소프트웨어 장치로 추상화하는 것.

 

가상화 방법

1. Host 가상화

2. HyperVisor 가상화 : VirtualBox, VMWare, VirtualPC

3. Container 가상화

 


오늘을 끝으로 우분투 리눅스 기초를 공부했고

내일부터 네트워크와 보안 솔루션에 대해 공부한다.

물론 리눅스는 계속 사용하며 공부한다.

+ Recent posts