정상적으로 설치 미디어로 부팅이 된다면 다음 절차들을 참고하여 설치를 진행한다. ※ 예시는 CentOS8을 기준으로 하였지만 CentOS7도 다르지 않다.
[사용자 생성(U)] 선택
계정 / 패스워드 입력, 관리자로 지정 선택
[설치 대상] 선택
설치에 사용할 디스크를 선택하고 [Custom] 에 체크
자동 생성을 해도 되고 수동 설정을 하고 싶으면 [+] 버튼을 클릭하여 파티션 추가
마운트 포인트와 용량을 입력한다. (MiB, GiB, TiB 단위)
– /boot : 1024MiB, – swap:RAMx2, – /root: 10~30GiB, – /home:가장 큰 파티션, 남은용량 모두
[소프트웨어 선택]
용도에 맞게 선택한다. [최소 설치]
설치가 완료되면 재부팅한다. root 패스워드를 설정하지 않았으므로 root 계정으로는 로그인할 수 없다. sudo 명령을 이용해 권한을 바꿔가면서 작업 하는 것을 권장하지만 꼭 root 로 로그인 해야 한다면 아래를 참고하여 password를 변경하면 된다.
login as: haedong
haedong@192.168.103.176's password:
Last login: Wed Dec 9 15:08:34 2020 from 192.168.4.199
[centos7:/home/haedong:]$ sudo -i
[sudo] haedong의 암호:
[centos7:/root:]# passwd root
root 사용자의 비밀 번호 변경 중
새 암호:
새 암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[centos7:/root:]#
생에 첫 여행에서 되지도 않는 영어로 대화를 해서 만난 첫 친구 리우. 아침도 먹을 겸 아버지가 기다리고 있다는 식당으로 향했다. 여기.1104 대만 Taipei City, Zhongshan District, Lane 137, Section 2, Zhongshan North Road, 29號1樓 보통 샤오룽바오2小籠包/小笼包 (Xiǎo lóng bāo, 샤오룽빠오)는 돼지고기를 넣는데 여기는 소고기를 넣는 특별한 곳이라고 한다. 사실 여기에 오기 전에 샤오룽바오를 먹어본 적이 없으니 무슨 맛인지도 모르고, 안에 뭐가 들어있는지도 몰랐다.
만두피는 만두라기보다 찐빵에 가까운 느낌이엇다.이거 정말 맛있었다!
베어물면 짭쪼름한 육즙이 가득하다. 보통 우리가 먹는 만두와는 다르게 안에 야채는 많지 않고 고기 중심의 속. 만두의 식감을 살리는 무 말랭이가 없다보니 식감은 좀 심심하지만 쫀득한 고기가 일품이다.
아버지를 보러 왔다더니, 아버지란 사람은 인사하고 우리 음식 주문하는걸 보더니 휙 사라져버렸다. 계산도 해줬더라. 고마웠다.
그렇게 식사를 마치고 리우와 헤어져 거리를 나오니 승려들이 지나고 있었다.
이 양반들 표정이…정말 힘들어보인다…
그렇게 다시 동쪽으로 큰 길을 따라 걷다보니 만난 행천궁(行天宮(Xingtian Temple). 관우신을 모시는 사당이라고 한다. 대기 오염 감소를 위해 향을 피우거나 돈을 태우는 등의 행위를 하지 않는다고 한다. 아울러 공덕함(일종의 헌금함)도 설치하지 않으며 짐승으로 제사를 올리지도 않고 금패를 받지도 않는 등 대외적인 모금과 상업행위를 하지 않는 것이 그 특징이라 한다. 사원 내에 바닥에 증기가 나오는 장치들이 있다. 향냄새는 없고 대신 증기로 인해 나름 묘한 분위기를 풍긴다.
기도하는 사람들나도 했다. 이거. 복을 빌어주는거라 한다.이걸 …..이렇게 들고 기도한다.
이번엔 다시 남쪽으로 이동. (대충 타이페이역을 중심으로 빙빙 돌았던거다..) 중정기념당(中正紀念堂, 장제스 기념관, Chiang Kai-shek3장제스(중국어: 蔣介石, 병음: Jiǎng Jièshí, 1887년 10월 31일 ~ 1975년 4월 5일) 또는 창카이섹(광둥어: Zoeng Gaai-Sek, 영어: Chiang Kai-shek)은 중화민국의 군인, 정치·군사 지도자이자, 중화민국 국민정부의 제2, 4대 총통 및 국부천대 이후 제1, 3대 총통(1925년 ~ 1975년)이었다. 제스는 자(字)이며 흔히 불린다. 본명은 장중정(중국어: 蔣中正, 병음: Jiǎng Zhōngzhèng). 아명은 루이위안(瑞元), 족보명은 저우타이(周泰), 학명은 즈칭(志淸)으로 종교는 감리교이며, 황푸군관학교 교장, 국민혁명군사령관, 중화민국 국민정부 주석, 중화민국 행정원장, 국민정부군사위원회위원장, 중국 국민당 총재, 삼민주의 청년단 단장 등을 역임하였다., 장제스는 대한민국 임시정부의 독립운동을 적극 지원한 인물 중 하나다. 꼭 찾아보고 기억하자.)에 닿을 수 있었다. 국가 도서관 길 건너편으로 서북쪽을 바라보고 있다.
자유광장 아치에서 중정기념당을 바라보면 왼쪽(복쪽)으로 국가표연예술센터, 오른쪽(남쪽)으로 국가극장이 위치하고 있다. 건물들이 큼직큼직하게 지어져있다.
자유광장 아치국가표연예술센터중정기념당 서쪽의 국가극장중정기념당 (장제스기념당)
처음부터 타이페이의 어디에 뭐가 있는지 유명한 것은 무엇인지 따위는 1도 알아보지 않고 무작정 걷기만 했는데, 아마 운이 좋았던게다. 때마침 중정 기념당의 근위병 교대식에 가까운 시각이었고 근위병 교대식 행사를 볼 수 있었다. 정확히 기억나지는 않지만 대강 1시간 간격으로 교대식을 진행한다는 것 같다.
근위병의 옷 매무새를 고쳐주는 아저씨그러니까 이 양반은 한 시간동안 저 자세로 버텨야 한다는거다.
교대식은 약 10분 가량 진행된다.
다시 북서쪽 타이페이 중앙역쪽으로 걷다보면 중화민국 총통부(中華民國總統府, President Hall)를 만날 수 있다. 멋모르고 정문에서 카메라를 들이밀면 총든 군인들에게 제지당한다. 길 건너 촬영을 위한 장소가 마련되어있으니 길 건너에서 촬영 가능하다는 안내를 받을 수 있다.이 때는 모든 것이 처음이고 모두 한국과 같을거라 생각해서 카메라 들이미는데 용감했었다. 4대만의 경우 관공서 건물 촬영이 불법은 아니지만 UAE 같은 곳은 관공서는 모두 촬영 불가이므로 잘 알아보고 카메라를 들이밀도록 하자.
슬슬 해도 저물고 있고, 만나기로 했던 친구를 만나러 야시장으로 향했다. 친구는 대만으로 떠나기 전 일했던 회사의 파트너사에서 일했던 Neil이란 친구. 친구의 안내로 가게 된 라오허제 야시장. 지룽 강변에 위치한 야시장으로 다른 시장들과 마찬가지로 이곳에도 절이 있다. 왜 대만의 모든 시장 근처에는 절이 있을까? 이유는 단순했다. 사실 야시장 근처에 절이 있는 것이 아니라 복을 빌기 위해 절에 가는 사람들이 공양을 위해 음식 등을 들고 가다보니 절을 중심을 시장이 생기게 된 것이라 한다. 그러다보니 한국의 절과는 다르게 도시 곳곳에 절이 있고 절은 항상 사람들로 북적인다. 사람의 눈에 잘 띌 수 있도록 점점 화려해졌다.
MySQL은 세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스 관리 시스템1(RDBMS : Relational DataBase Management System : 관계형 데이터베이스)이다. 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템으로서 오라클이 관리 및 지원하고 있으며, Qt처럼 이중 라이선스가 적용된다. 하나의 옵션은 GPL이며, GPL 이외의 라이선스로 적용시키려는 경우 전통적인 지적재산권 라이선스의 적용을 받는다.
위와 같은 지원 방식은 자유 소프트웨어 재단이 프로젝트에 저작권을 적용하는 방법과 비슷한 JBoss의 모델과 유사하다. 그러나 기반코드가 개인의 소유자에게 저작권이 있고 커뮤니티에 의해 개발되는 아파치 프로젝트와는 다르다.
MySQL AB는 또한 MaxDB라고 불리는 MySQL AB와는 기반코드가 다른 데이터베이스 관리 시스템을 판매했으나 2007년 이래로 MaxDB는 SAP AG가 소유하고 있다.
썬 마이크로시스템즈에 10억 달러에 인수되었으나, 썬 마이크로시스템즈가 오라클에 인수되며 같이 넘어갔다.2 위키백과에서 발췌
MySQL이 썬마이크로시스템즈->오라클로 넘어가면서 라이선스에 대한 이견으로 태어난 MariaDB3MariaDB는 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL과 동일한 소스 코드를 기반으로 하며, GPL v2 라이선스를 따른다. 오라클 소유의 현재 불확실한 MySQL의 라이선스 상태에 반발하여 만들어졌으며, 배포자는 몬티 프로그램 AB(Monty Program AB)와 저작권을 공유해야 한다. 이것은 MySQL과 높은 호환성을 유지하기 위함이며, MySQL API와 명령에 정확히 매칭하여, 라이브러리 바이너리와 상응함을 제공하여 교체 가능성을 높이고자 함이다. 마리아 DB에는 새로운 저장 엔진인 아리아(Aria)뿐만 아니라, InnoDB를 교체할 수 있는 XtraDB 저장 엔진을 포함하고 있다. 이것은 트랜잭션과 비트랜잭션 엔진 그리고 미래에 나올 MySQL 판에 대응하고자 함일 것이다. 마리아 DB의 주요 개발자는 MySQL과 몬티 프로그램 AB를 설립한 몬티 와이드니어스(Michael Monty Widenius)이다. 그는 이전에 자신의 회사, MySQL AB를 썬 마이크로시스템즈에 10억 달러에 판매를 한 적이 있으며, 마리아 DB는 그의 둘째 딸인 마리아의 이름을 딴 것이다. 로 MySQL을 대체할 수 있다. 4RedHat Enterprise Linux와 CentOS의 느낌과 비슷한가?
설치
MySQL 8.x 는 보안 관련 기능 들이 많이 추가되었다. 사용자 생성이나 권한부여 등에서 5.x와 큰 차이가 있으니 유념하자.
다운로드 MySQL 홈페이지의 다운로드 페이지에서 Community Edition5GPL:GNU General Public Lisence을 선택하자. MariaDB 패키지는 이 링크에서 다운로드 할 수 있다. 여기에서 버전을 선택해서 다운로드 할 수도 있다. 어느 버전을 선택하건 RPM Bundle 을 선택하자. 6그래야 이런 저런 패키지를 따로 받아야 되는 귀찮음을 줄일 수 있다.
좌측부터 순서대로, 설치하고자 하는 OS 버전 및
다운로드가 완료됐으면 서버에 파일을 업로드하자.
Install
업로드가 완료 되었으면 압축을 해제한다.
[centos7:/root/mysql:]# tar -xvf mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar
mysql-community-embedded-devel-5.7.31-1.el7.x86_64.rpm
mysql-community-libs-5.7.31-1.el7.x86_64.rpm
mysql-community-client-5.7.31-1.el7.x86_64.rpm
mysql-community-server-5.7.31-1.el7.x86_64.rpm
mysql-community-embedded-5.7.31-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.31-1.el7.x86_64.rpm
mysql-community-common-5.7.31-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm
mysql-community-devel-5.7.31-1.el7.x86_64.rpm
mysql-community-test-5.7.31-1.el7.x86_64.rpm
# 기존에 설치된 mysql 또는 mariadb가 있을 경우 삭제하는 편이 좋다
[centos7:/root/mysql:]# yum erase mariadb* mysql*
[centos7:/root/mysql:]# yum install ./*.rpm
Loaded plugins: fastestmirror, langpacks
Examining ./mysql-community-client-5.7.31-1.el7.x86_64.rpm: mysql-community-client-5.7.31-1.el7.x86_64
Marking ./mysql-community-client-5.7.31-1.el7.x86_64.rpm to be installed
Examining ./mysql-community-common-5.7.31-1.el7.x86_64.rpm: mysql-community-common-5.7.31-1.el7.x86_64
Marking ./mysql-community-common-5.7.31-1.el7.x86_64.rpm to be installed
Examining ./mysql-community-devel-5.7.31-1.el7.x86_64.rpm: mysql-community-devel-5.7.31-1.el7.x86_64
Marking ./mysql-community-devel-5.7.31-1.el7.x86_64.rpm to be installed
Examining ./mysql-community-embedded-5.7.31-1.el7.x86_64.rpm: mysql-community-embedded-5.7.31-1.el7.x86_64
Marking ./mysql-community-embedded-5.7.31-1.el7.x86_64.rpm to be installed
Examining ./mysql-community-embedded-compat-5.7.31-1.el7.x86_64.rpm: mysql-community-embedded-compat-5.7.31-1.el7.x86_64
Marking ./mysql-community-embedded-compat-5.7.31-1.el7.x86_64.rpm to be installed
Examining ./mysql-community-embedded-devel-5.7.31-1.el7.x86_64.rpm: mysql-community-embedded-devel-5.7.31-1.el7.x86_64
Marking ./mysql-community-embedded-devel-5.7.31-1.el7.x86_64.rpm to be installed
Examining ./mysql-community-libs-5.7.31-1.el7.x86_64.rpm: mysql-community-libs-5.7.31-1.el7.x86_64
Marking ./mysql-community-libs-5.7.31-1.el7.x86_64.rpm to be installed
Examining ./mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm: mysql-community-libs-compat-5.7.31-1.el7.x86_64
Marking ./mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm to be installed
Examining ./mysql-community-server-5.7.31-1.el7.x86_64.rpm: mysql-community-server-5.7.31-1.el7.x86_64
Marking ./mysql-community-server-5.7.31-1.el7.x86_64.rpm to be installed
Examining ./mysql-community-test-5.7.31-1.el7.x86_64.rpm: mysql-community-test-5.7.31-1.el7.x86_64
Marking ./mysql-community-test-5.7.31-1.el7.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package mariadb-devel.x86_64 1:5.5.56-2.el7 will be obsoleted
---> Package mariadb-libs.x86_64 1:5.5.56-2.el7 will be obsoleted
---> Package mysql-community-client.x86_64 0:5.7.31-1.el7 will be installed
---> Package mysql-community-common.x86_64 0:5.7.31-1.el7 will be installed
---> Package mysql-community-devel.x86_64 0:5.7.31-1.el7 will be obsoleting
---> Package mysql-community-embedded.x86_64 0:5.7.31-1.el7 will be installed
---> Package mysql-community-embedded-compat.x86_64 0:5.7.31-1.el7 will be installed
---> Package mysql-community-embedded-devel.x86_64 0:5.7.31-1.el7 will be installed
---> Package mysql-community-libs.x86_64 0:5.7.31-1.el7 will be obsoleting
---> Package mysql-community-libs-compat.x86_64 0:5.7.31-1.el7 will be obsoleting
---> Package mysql-community-server.x86_64 0:5.7.31-1.el7 will be installed
---> Package mysql-community-test.x86_64 0:5.7.31-1.el7 will be installed
--> Processing Dependency: perl(JSON) for package: mysql-community-test-5.7.31-1.el7.x86_64
Loading mirror speeds from cached hostfile
* base: mirror.kakao.com
* epel: ftp.jaist.ac.jp
* extras: mirror.kakao.com
* updates: mirror.kakao.com
--> Processing Dependency: perl(JSON) for package: mysql-community-test-5.7.31-1.el7.x86_64
--> Running transaction check
---> Package perl-JSON.noarch 0:2.59-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================================================================================
Package Arch Version Repository Size
==========================================================================================================================================================
Installing:
mysql-community-client x86_64 5.7.31-1.el7 /mysql-community-client-5.7.31-1.el7.x86_64 101 M
mysql-community-common x86_64 5.7.31-1.el7 /mysql-community-common-5.7.31-1.el7.x86_64 2.8 M
mysql-community-devel x86_64 5.7.31-1.el7 /mysql-community-devel-5.7.31-1.el7.x86_64 20 M
replacing mariadb-devel.x86_64 1:5.5.56-2.el7
mysql-community-embedded x86_64 5.7.31-1.el7 /mysql-community-embedded-5.7.31-1.el7.x86_64 200 M
mysql-community-embedded-compat x86_64 5.7.31-1.el7 /mysql-community-embedded-compat-5.7.31-1.el7.x86_64 88 M
mysql-community-embedded-devel x86_64 5.7.31-1.el7 /mysql-community-embedded-devel-5.7.31-1.el7.x86_64 885 M
mysql-community-libs x86_64 5.7.31-1.el7 /mysql-community-libs-5.7.31-1.el7.x86_64 9.5 M
replacing mariadb-libs.x86_64 1:5.5.56-2.el7
mysql-community-libs-compat x86_64 5.7.31-1.el7 /mysql-community-libs-compat-5.7.31-1.el7.x86_64 6.0 M
replacing mariadb-libs.x86_64 1:5.5.56-2.el7
mysql-community-server x86_64 5.7.31-1.el7 /mysql-community-server-5.7.31-1.el7.x86_64 762 M
mysql-community-test x86_64 5.7.31-1.el7 /mysql-community-test-5.7.31-1.el7.x86_64 663 M
Installing for dependencies:
perl-JSON noarch 2.59-2.el7 base 96 k
Transaction Summary
==========================================================================================================================================================
Install 10 Packages (+1 Dependent package)
Total size: 2.7 G
Total download size: 96 k
Is this ok [y/d/N]: y
Downloading packages:
perl-JSON-2.59-2.el7.noarch.rpm | 96 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : mysql-community-common-5.7.31-1.el7.x86_64 1/13
Installing : mysql-community-libs-5.7.31-1.el7.x86_64 2/13
Installing : mysql-community-devel-5.7.31-1.el7.x86_64 3/13
Installing : mysql-community-client-5.7.31-1.el7.x86_64 4/13
Installing : mysql-community-server-5.7.31-1.el7.x86_64 5/13
Installing : mysql-community-embedded-5.7.31-1.el7.x86_64 6/13
Installing : perl-JSON-2.59-2.el7.noarch 7/13
Installing : mysql-community-test-5.7.31-1.el7.x86_64 8/13
Installing : mysql-community-embedded-devel-5.7.31-1.el7.x86_64 9/13
Installing : mysql-community-libs-compat-5.7.31-1.el7.x86_64 10/13
Installing : mysql-community-embedded-compat-5.7.31-1.el7.x86_64 11/13
Erasing : 1:mariadb-devel-5.5.56-2.el7.x86_64 12/13
Erasing : 1:mariadb-libs-5.5.56-2.el7.x86_64 13/13
Verifying : mysql-community-embedded-5.7.31-1.el7.x86_64 1/13
Verifying : mysql-community-libs-compat-5.7.31-1.el7.x86_64 2/13
Verifying : mysql-community-common-5.7.31-1.el7.x86_64 3/13
Verifying : perl-JSON-2.59-2.el7.noarch 4/13
Verifying : mysql-community-embedded-compat-5.7.31-1.el7.x86_64 5/13
Verifying : mysql-community-devel-5.7.31-1.el7.x86_64 6/13
Verifying : mysql-community-server-5.7.31-1.el7.x86_64 7/13
Verifying : mysql-community-test-5.7.31-1.el7.x86_64 8/13
Verifying : mysql-community-embedded-devel-5.7.31-1.el7.x86_64 9/13
Verifying : mysql-community-client-5.7.31-1.el7.x86_64 10/13
Verifying : mysql-community-libs-5.7.31-1.el7.x86_64 11/13
Verifying : 1:mariadb-devel-5.5.56-2.el7.x86_64 12/13
Verifying : 1:mariadb-libs-5.5.56-2.el7.x86_64 13/13
Installed:
mysql-community-client.x86_64 0:5.7.31-1.el7 mysql-community-common.x86_64 0:5.7.31-1.el7
mysql-community-devel.x86_64 0:5.7.31-1.el7 mysql-community-embedded.x86_64 0:5.7.31-1.el7
mysql-community-embedded-compat.x86_64 0:5.7.31-1.el7 mysql-community-embedded-devel.x86_64 0:5.7.31-1.el7
mysql-community-libs.x86_64 0:5.7.31-1.el7 mysql-community-libs-compat.x86_64 0:5.7.31-1.el7
mysql-community-server.x86_64 0:5.7.31-1.el7 mysql-community-test.x86_64 0:5.7.31-1.el7
Dependency Installed:
perl-JSON.noarch 0:2.59-2.el7
Replaced:
mariadb-devel.x86_64 1:5.5.56-2.el7 mariadb-libs.x86_64 1:5.5.56-2.el7
Complete!
설정
[centos7:/root/mysql:]# vi /etc/my.cnf
# 운영 목적에 맞는 설정을 추가해야 한다.
# 모든 경로는 mysql계정과 그룹이 소유하고 있어야 한다.
[mysqld]
# 접속을 받아들일 포트
port = 3306
# 기본 캐릭터 셋
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
# MySQL Data가 저장될 경로
datadir=/home/mysql
# MySQL 소켓 통신을 위한 socket 파일 경로
socket=/var/lib/mysql/mysql.sock
# Error Log가 저장될 경로
log-error=/var/log/mysqld.log
# 구동되는 MySQL 프로세스 ID 가 저장될 경로
pid-file=/var/run/mysqld/mysqld.pid
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
구동
[centos7:/home/mysql:]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
서비스 확인
[centos7:/home/mysql:]# ps -ef | grep mysql
mysql 24089 1 0 16:28 ? 00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root 26711 3609 0 16:38 pts/0 00:00:00 grep --color=auto mysql
[centos7:/home/mysql:]# netstat -nltp | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 24089/mysqld
패스워드 확인 root 계정에 대한 패스워드가 자동으로 생성된다. log 에서 확인 해야 한다.
[centos7:/home/mysql:]# grep password /var/log/mysqld.log
2020-12-11T07:24:57.633735Z 0 [Note] Shutting down plugin 'mysql_native_password'
2020-12-11T07:24:59.319129Z 1 [Note] A temporary password is generated for root@localhost: qT(2qk9c>y2G
2020-12-11T07:25:09.861956Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)
2020-12-11T07:25:23.483532Z 0 [Note] Shutting down plugin 'validate_password'
2020-12-11T07:25:24.495481Z 0 [Note] Shutting down plugin 'sha256_password'
2020-12-11T07:25:24.495490Z 0 [Note] Shutting down plugin 'mysql_native_password'
A temporary password is generated for root@localhost: 부분을 확인한다. 예시의 경우는 qT(2qk9c>y2G 가 패스워드이다.
센트OS(영어: CentOS)는 센트OS 프로젝트에서 레드햇 제휴로 개발한 컴퓨터 운영 체제이다. 업스트림 소스인 레드햇 엔터프라이즈 리눅스와 완벽하게 호환되는 무료 기업용 컴퓨팅 플랫폼을 제공할 목적으로 만들어진 리눅스계 운영 체제 가운데 하나다. 6.4 버전부터 베타 버전은 파워PC에서 사용가능할 것으로 예상되지만, 공식적으로 물리 주소 확장 기능을 가진 x86과 x86-64 아키텍처를 지원한다.
레드햇 엔터프라이즈 리눅스의 소스 코드를 그대로 가져와 빌드해 내놓으며 이 과정에서 이루어지는 변형은 레드햇의 상표가 잘리고 그 자리에 CentOS의 상표가 붙는(상표권 분쟁을 피하기 위해) 정도뿐이다. 판수 또한 레드햇 엔터프라이즈 리눅스의 판수를 그대로 가져오며(소수점 아래 숫자는 업데이트 차수를 가리킨다) 오늘날에는 레드햇 엔터프라이즈 리눅스의 행보를 가장 잘 따라가는 운영 체제라고 알려져 있다. 사용하는 꾸러미 형식은 RPM이다. 1위키백과에서 발췌
sudo 명령어는 유닉스 및 유닉스 계열 운영 체제에서, 다른 사용자의 보안 권한, 보통 슈퍼유저로서 프로그램을 구동할 수 있도록 하는 프로그램이다. 명칭은 본래 슈퍼유저로서의 실행에 사용되던 것에서 “superuser do”에서 유래하였으나, 후에 프로그램의 기능이 확장되며 “substitute user do”(다른 사용자의 권한으로 실행)의 줄임말로 해석되게 되었다. 기본적으로 Sudo는 사용자 비밀번호를 요구하지만 루트 비밀번호(root password)가 필요할 수도 있고, 한 터미널에 한번만 입력하고 그 다음부터는 비밀번호가 필요 없다. Sudo는 각 명령줄에 사용할 수 있으며 일부 상황에서는 관리자 권한을 위한 슈퍼유저 로그인(superuser login)을 완벽히 대신하며, 주로 우분투, 리눅스와 애플의 OS X 에서 볼 수 있다. 1위키백과에서 발췌
Windows 시스템의 경우 이것과 같다.
이 명령(기능)이 필요한 이유는 이렇게 생각해 볼 수있겠다. – 시스템 관리자 A가 있다. root 패스워드는 A만 알고 있다. – DBA B B는 ‘가’서버의 DB만 관리한다. 서비스의 재 시작등이 필요할 때엔 A에게 요청해야 한다. – A가 휴가를 갔다. – A가 휴가를 간 사이 DBMS 서비스에 이상이 생겼고 서비스를 재시작해야 하는 상황이 발생했다. – 서비스 재시작에는 root 권한이 필요하다. 이 때 A가 취할 수 있는 조치는 B에게 root의 패스워드를 알려주는 방법이 있다. 하지만 A는 A가 관리하는 ‘가’,’나’,’다’모든 서버의 패스워드를 동일하게 설정해서 관리 하고 있었다. B는 A가 관리하는 모든 서버의 패스워드를 획득한 것과 다름이 없다.
이런 상황이 예가 될 수 있겠다. 사실 B는 신뢰할 수 있는 사람이겠지만, 위 상황은 이미 권한 없는 사용자가 모든 권한을 획득한 보안 사고라 할 수 있겠다. 여기서 sudo는 아래와 같이 동작한다. – 시스템 관리자 A는 ‘가’서버에신뢰할 수 있는 사용자 B를 sudo 명령 허용 목록에 추가하였다. – A가 휴가를 갔다. – B는 ‘가’ 서버에서 sudo 명령을 사용한다. sudo 명령은 B의 패스워드를 묻는다. B의 패스워드가 정상적으로 입력 되었을 경우 권한을 상승시킨다.
여기서 B가 B로 로그인 해 있는데 B의 패스워드를 왜 확인해? 이게 무슨 소용이야? 하고 질문할 수 있겠지만 B의 계정은 이미 신뢰하는 계정이라 했으니, 작업을 하는 시점에 다시 B가 맞는지 확인 하는 것이다. 즉, B가 로그인 후 자리를 비웠다거나 하는 등 B를 대체 하더라도 B의 패스워드는 B만 알고 있으니 패스워드를 한번 더 입력 받고 B가 맞는지 확인한 뒤 권한을 상승 시킨다는 말이다.
설정
/etc/sudoers 파일에 권한을 부여할 사용자를 넣으면 된다. ※만약 설정파일의 문법을 틀리거나 하면 아런 에러를 만날 수 있다. (sudo가 동작하지 않는다!!!!)
[centos7:/home/haedong:]$ sudo -i
>>> /etc/sudoers: 문법 오류 near line 94 <<<
sudo: /etc/sudoers 94번째 줄에서 해석 오류
sudo: 올바른 sudoers 설정 원본이 없습니다. 나갑니다.
sudo: 정책 플러그인을 초기화할 수 없습니다
사용자 추가
## 기본적으로 root는 포함되어있다. root ALL=(ALL) ALL 을 찾아서 아래에 사용자를 추가한다.
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
# 여기부터 선택적으로 추가한다.
# 기본.
# haedong 계정으로 sudo 명령 사용 시 패스워드 확인 후 권한을 부여한다.
# 모든 명령 사용이 가능하다.
haedong ALL=(ALL) ALL
# haedong 계정으로 sudo 명령 사용 시 패스워드 확인 후 권한을 부여한다. /usr/bin/vi,/usr/bin/vim 만 사용 가능하다.
haedong ALL= /usr/bin/vi,/usr/bin/vim
# haedong 계정으로 모든 명령 사용 시 패스워드 확인을 하지 않는다.
haedong ALL=(ALL) NOPASSWD: ALL
# vi, vim 커맨드 사용 시 패스워드 확인을 하지 않고 권한을 상승시킨다.
haedong ALL=NOPASSWD: /usr/bin/vi,/usr/bin/vim
환경변수 설정 현재 사용자의 환경변수를 sudo 명령 사용 시 승계 하고자 하는경우
# "" 안에 추가하고자 하는 환경 변수를 추가한다.
Defaults env_keep += "LD_LIBRARY_PATH"
PATH 변수 설정
# : 로 구분하여 경로를 추가한다.
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
옵션 및 사용법 자세한 옵션은 man 을 참조하자
# 일반적인 사용 예
[centos7:/home/haedong:]$ sudo vi
[sudo] haedong의 암호:
[centos7:/root:]# sudo -h
sudo - 다른 사용자 권한으로 명령을 실행합니다
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] file ...
옵션:
-A, --askpass 암호 질문에 보조 프로그램 활용
-b, --background 백그라운드에서 명령 실행
-C, --close-from=num num 보다 크거나 같은 모든 파일 서술자를 닫습니다
-E, --preserve-env 명령을 실행할 때 사용자 환경을 유지합니다
-e, --edit 명령을 실행하는 대신 파일을 편집합니다
-g, --group=group 지정 그룹 이름 또는 ID로 명령을 실행합니다
-H, --set-home 대상 사용자의 내 폴더에 HOME 변수를 지정합니다
-h, --help 도움말을 보여주고 빠져나갑니다
-h, --host=host (플러그인에서 지원한다면)호스트에서 명령을 실행합니다
-i, --login 대상 사용자 자격으로 셸에 로그인합니다. 명령도 지정할 수 있습니다.
-K, --remove-timestamp 타임스탬프 파일을 완전히 제거합니다
-k, --reset-timestamp 타임스탬프 파일을 초기화합니다
-l, --list 사용자 권한을 보여주거나 지정 명령을 확인합니다. 긴 형식으로 보려면 옵션을 두 번 사용하십시오
-n, --non-interactive 비대화형 모드. 프롬프트를 사용하지 않습니다
-P, --preserve-groups 대상을 설정하는 대신 그룹 벡터를 유지합니다
-p, --prompt=prompt 지정 암호 프롬프트를 활용합니다
-r, --role=role 지정 역할을 지닌 SELinux 보안 컨텍스트를 만듭니다
-S, --stdin 표준 입력으로 암호를 입력 받습니다
-s, --shell 셸을 대상 사용자 명의로 실행합니다. 명령도 지정합니다.
-t, --type=type 지정 유형의 SELinux 보안 컨텍스트를 만듭니다
-U, --other-user=user 목록 모드에서 사용자 권한을 보여줍니다
-u, --user=user 지정한 사용자 이름 또는 ID로 명령을 실행(또는 파일 편집)
-V, --version 버전 정보를 보여주고 나갑니다
-v, --validate 명령을 실행하지 않고 사용자 타임스탬프를 업데이트합니다
-- 명령행 인자 처리를 멈춥니다
EPEL1Extra Package for Enterprise Linux 릴리즈 패키지가 필요하다.
[centos7:/home/haedong:]$ sudo yum -y install epel-release
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.kakao.com
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be updated
---> Package epel-release.noarch 0:7-13 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================================================
Updating:
epel-release noarch 7-13 epel 15 k
Transaction Summary
============================================================================================================================================================================================================================================
Upgrade 1 Package
Total download size: 15 k
Downloading packages:
epel/x86_64/prestodelta | 539 B 00:00:01
epel-release-7-13.noarch.rpm | 15 kB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : epel-release-7-13.noarch 1/2
Cleanup : epel-release-7-11.noarch 2/2
Verifying : epel-release-7-13.noarch 1/2
Verifying : epel-release-7-11.noarch 2/2
Updated:
epel-release.noarch 0:7-13
Complete!
openvpn, easy-ras 패키지 설치
[centos7:/home/haedong:]$ sudo yum -y install openvpn easy-rsa
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.kakao.com
Resolving Dependencies
--> Running transaction check
---> Package easy-rsa.noarch 0:3.0.8-1.el7 will be installed
---> Package openvpn.x86_64 0:2.4.9-1.el7 will be installed
--> Processing Dependency: libpkcs11-helper.so.1()(64bit) for package: openvpn-2.4.9-1.el7.x86_64
--> Running transaction check
---> Package pkcs11-helper.x86_64 0:1.11-3.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================================================
Installing:
easy-rsa noarch 3.0.8-1.el7 epel 44 k
openvpn x86_64 2.4.9-1.el7 epel 524 k
Installing for dependencies:
pkcs11-helper x86_64 1.11-3.el7 epel 56 k
Transaction Summary
============================================================================================================================================================================================================================================
Install 2 Packages (+1 Dependent package)
Total download size: 624 k
Installed size: 1.5 M
Downloading packages:
(1/3): easy-rsa-3.0.8-1.el7.noarch.rpm | 44 kB 00:00:02
(2/3): openvpn-2.4.9-1.el7.x86_64.rpm | 524 kB 00:00:01
(3/3): pkcs11-helper-1.11-3.el7.x86_64.rpm | 56 kB 00:00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 141 kB/s | 624 kB 00:00:04
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : pkcs11-helper-1.11-3.el7.x86_64 1/3
Installing : openvpn-2.4.9-1.el7.x86_64 2/3
Installing : easy-rsa-3.0.8-1.el7.noarch 3/3
Verifying : easy-rsa-3.0.8-1.el7.noarch 1/3
Verifying : openvpn-2.4.9-1.el7.x86_64 2/3
Verifying : pkcs11-helper-1.11-3.el7.x86_64 3/3
Installed:
easy-rsa.noarch 0:3.0.8-1.el7 openvpn.x86_64 0:2.4.9-1.el7
Dependency Installed:
pkcs11-helper.x86_64 0:1.11-3.el7
Complete!
설정
config 파일 복사 /usr/share/doc/openvpn-VERSION/sample/sample-config-files/ 디렉토리 아래에 존재한다.
Config 수정
# openvpn 사용 port
# 운영 환경에 맞게 변경한다.
port 9411
# 프로토콜 (UDP는 user defined protocol)
proto udp
# 가상 Device
dev tun
# 인증 키 관련 정보
# 다음 단락에서 생성할 파일들이다. 경로를 맞춰줘야 한다.
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
tls-auth /etc/openvpn/easy-rsa/pki/ta.key
key-direction 0
auth SHA512
cipher AES-256-CBC
topology subnet
# vpn network 정보. 가상 device 인터페이스.
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# vpn을 연결하면 사용할 DNS
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 192.168.4.254"
push "dhcp-option DNS 8.8.8.8"
# 클라이언트간 연결을 허용할 때.
# 이 항목을 활성화 할 경우 iptables 정책도 수정 해야 한다.
;client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
verb 4
# 로그를 저장할 경로. 디렉토리를 만들어줘야 한다.
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log
[centos7:/home/haedong:]$ sudo vi /etc/openvpn/easy-rsa/vars
# 아래 내용을 붙여넣는다.
# 국가 명
export KEY_COUNTRY="KR"
# 시/도 (경기도, 충청남도, 서울특별시, 광주광역시 등 광역시 이상)
export KEY_PROVINCE="Soeul"
# 시/군/구 (수원시, 속초시, 예산군, 강남구 등)
export CITY="GANGNAMGU"
# 회사명
export ORG="HaeDongcorp"
# Email
export KEY_EMAIL="haedonggang@naver.com"
# 부서 명
export KEY_OU="ITinfra"
# 서버 명
export KEY_NAME="centos7"
# 공통이름
export KEY_CN="vpn.haedongg.net"
[centos7:/root:]# cd /etc/openvpn/easy-rsa
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa clean-all
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa init-pki
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
WARNING!!!
You are about to remove the EASYRSA_PKI at: /etc/openvpn/easy-rsa/pki
and initialize a fresh PKI here.
Type the word 'yes' to continue, or any other input to abort.
Confirm removal: yes
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa build-ca
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Enter New CA Key Passphrase: PASSPHRASE를 넣는다.
Re-Enter New CA Key Passphrase: PASSPHRAS 확인
Generating RSA private key, 2048 bit long modulus
...............................................................+++
.........................................................+++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: 서버_이름
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt
서버 키 생성
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa build-server-full server
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Generating a 2048 bit RSA private key
..................................+++
.......................+++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-35432.9GPaYv/tmp.0beTT2'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
Using configuration from /etc/openvpn/easy-rsa/pki/easy-rsa-35432.9GPaYv/tmp.RTNa79
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: CA_키_생성시_입력한_PASSPHRASE
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'server'
Certificate is to be certified until Mar 13 06:22:57 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa gen-dh
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.................+......................................................
...한참 중략....
........................................................................++*++*
DH parameters of size 2048 created at /etc/openvpn/easy-rsa/pki/dh.pem
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa build-client-full haedong
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Generating a 2048 bit RSA private key
.............................................................+++
...................................+++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-35775.MjyGfQ/tmp.HL4Nlv'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
Using configuration from /etc/openvpn/easy-rsa/pki/easy-rsa-35775.MjyGfQ/tmp.VU7eke
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'haedong'
Certificate is to be certified until Mar 13 06:31:57 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
OS(openvpn이 설치된 centos) 계정 정보를 이용한 인증 설정 옵션에 넣어줘야 하는 파일은 openvpn 패키지에 포함 되어있다. CentOS7 기준으로 /usr/lib64/openvpn/plugin 에 존재한다.
# /etc/openvpn/server.conf 파일 끝에 아래 내용 추가
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login
client-cert-not-required
서비스 시작
[centos7:/etc/openvpn/easy-rsa/pki:]# systemctl start openvpn@server.service
Broadcast message from root@centos7 (Tue 2020-12-08 16:35:57 KST):
Password entry required for 'Enter Private Key Password:' (PID 37264).
Please enter password with the systemd-tty-ask-password-agent tool!
[centos7:/etc/openvpn/easy-rsa/pki:]# systemctl start openvpn@server.service
Enter Private Key Password: 개인키_PASSPHRASE
클라이언트 설정
Windows를 기준으로 다음과 같은 파일을 준비한다. ca.crt / ta.key 파일은 키 생성 과정에서 생성했으니 다운로드 하면 된다. VPN.ovpn 파일은 그냥 text 파일이다. 빈 파일을 만든다. 그리고 세 개 파일을 openvpn 클라이언트가 설치된 경로아래 config 디렉토리에 복사한다. 보통 C:\Program Files\OpenVPN\config 가 된다.
# 다음의 내용을 삽입하고 저장한다.
client
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
comp-lzo
verb 4
# 키 파일의 경로를 입력
# 별도의 경로를 넣지 않으면 C:\Program Files\OpenVPN\config 디렉토리를 기본으로 인식한다.
# openvpn client 인스톨 뒤 위 경로에 ca.crt파일과 ta.key 파일을 복사한다.
ca ca.crt
tls-auth ta.key 1
key-direction 1
auth-user-pass
#remote VPN-SERVER-IP 9411
클라이언트 실행
아래 아이콘에 마우스 오른쪽 버튼을 클릭하면 메뉴가 뜬다. vpn 서버가 여러대 일 경우 각 서버마다 ovpn 파일을 생성해서 config에 넣어주면 선택하여 접속할 수 있다.
댓글을 달려면 로그인해야 합니다.