VSCode 사설망 원격 개발 구성

회사나 특정 조직의 사설망에 Visual Studio Code 원격 개발을 구성하려면 약간의 시행착오를 겪을 수 있습니다. 본 포스팅에서는 고충 없이 쉽게 Windows 사설망 서버에 VSCode 오프라인 설치 및 타겟 리눅스 서버로 Remote Development 설정하는 방법을 가이드 하겠습니다.

1. VSCode 및 Content Pack 설치

먼저 인터넷이 가능한 환경에서 VSCode 설치파일을 다운받아 사설망 서버에 업로드합니다.

설치 링크 : https://code.visualstudio.com/download

다음으로 VSCode Content Pack 두 가지를 다운로드 및 사설망 서버에 업로드합니다. 다운로드할 파일은 총 두 가지입니다. 설치는 링크와 그림을 참고하여 진행하시기 바랍니다. 그림의 버전과 일치할 필요 없이, 가장 최신 버전을 다운로드하시기 바랍니다.

I. Remote Development 설치 링크 : https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack

II. Remote – SSH 설치 링크 : https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh

만약 사설망에서 개발할 원격 서버로 방화벽을 등록해야 한다면, 22번 포트를 꼭 사전 등록하시기 바랍니다.

2. Content Pack 설치 가이드

먼저 VSCode 를 업로드한 Installer 를 통해 설치합니다. 설치할 때 설정은 Default 그대로 진행하시면 됩니다.

설치 완료 후, VSCode 를 실행하고 아래 그림을 참고하여 업로드한 Remote Development 와 Remote – SSH 컨텐트 팩을 설치합니다.

3. SSH 사전 설정

아래 Step 을 진행하여 비밀번호 없이 타겟 리눅스 서버로 접속할 수 있게끔 설정합니다.

I. ‘윈도우 로고 + R’ 단축키 입력 및 powershell 실행

II. ssh-keygen 수행

> ssh-keygen -t rsa -b 4096
> (입력 값 없이 모두 Enter)

III. 생성된 id_rsa.pub 를 메모장으로 열고, 내용 복사

id_rsa.pub 파일은 아래 경로에 위치합니다.

C:\Users\<User Name>\.ssh

IV. 개발할 타겟 리눅스 서버에 authorized_keys 등록

– root 계정이 아닌 경우 : /home/<User>/.ssh/authorized_keys 맨 아래 줄에 복사한 내용 붙여넣기

– root 계정인 경우 : /root/.ssh/authorized_keys 맨 아래 줄에 복사한 내용 붙여넣기

V. PowerShell 에서 비밀번호 없이 ssh 접속 가능한 지 확인

ssh -i C:\Users\<User Name>\.ssh\id_rsa <Linux User>@<Linux IP>

4. VSCode 세션 등록

아래 Step 을 진행하여 개발할 타겟 리눅스 서버 세션을 등록합니다. 모두 진행해도 VSCode 에서 원격 접속을 시도하면 실패하게 됩니다. 정상화하는 방법은 뒤에 가이드가 있으니 걱정하지 마세요~

I. VSCode 에서 세션 등록

– ‘Ctrl + Shift + P’ 단축키 입력

– ‘remote-ssh’ 입력 후, ‘Open SSH Configuration FIle…’ 선택

– ‘C:\Users\<User Name>\.ssh\config’ 선택

– 아래 그림을 참고하여 세션 등록

– ‘Ctrl + Shift + P’ 단축키 입력

– ‘remote-ssh’ 입력 후, ‘Connect to Host…’ 선택

– 등록한 세션 선택하여 접속 시도 (실패하게 됨)

5. 타겟 서버 manual 구성

VSCode 는 원격 서버로 ssh 접근할 수 있도록 타겟 서버에 특정 파일을 설치 및 구성합니다. 다만 해당 구성을 진행할 때 online 상에 존재하는 설치 압축 파일을 다운로드한 후 진행하는데요. 현재 우리는 사설망에서 구성하는 중이기 때문에 다운로드는 당연히 실패하게 됩니다. 때문에 VSCode 에서 등록한 세션으로 접속을 시도하면, 원인 모를 에러와 함께 접속이 실패하는 것이지요… 따라서, 설치 파일을 타겟 리눅스 서버에 업로드 및 설치를 manual 하게 진행하면 정상적으로 원격 개발 설정이 완료됩니다! 아래 Step 을 진행하여 구성을 완료합시다.

– 타겟 리눅스 VM 에 ssh 접속 후, 홈 디렉토리에서 아래 경로로 이동

root 계정인 경우 : /root/.vscode-server/bin
root 계정이 아닌 경우 : /home/<User>/.vscode-server/bin

– 아래 그림을 참고하여 ‘commit_id’ 확인

– 인터넷 환경에서 설치파일 다운로드 및 타겟 서버에 업로드

확인하신 commit_id 와 함께, 아래 설치파일 URL 및 예시를 참고하여 다운로드 및 업로드하시기 바랍니다. 어디에 업로드할 지 애매하시면, /tmp 에 업로드하시면 됩니다.
설치파일 URL : https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable
예 : https://update.code.visualstudio.com/commit:f80445acd5a3dadef24aa209168452a3d97cc326/server-linux-x64/stable

– 설치 파일 압축 해제

tar -zxvf <path>/vscode-server-linux-x64.tar.gz

– 기존 파일 삭제

rm ~/.vscode-server/bin/<commit_id>/*

– 설치 파일로 재구성

mv <path>/vscode-server-linux-x64/* ~/.vscode-server/bin/<commit_id>

– VSCode 에서 접속 시도

VSCode 에서 ‘Ctrl + Shift + P’ 단축키 입력 및 ‘Connect to Host…’ 선택 후, 등록한 세션을 선택하여 접속 시도 (접속 성공)

짜잔! VSCode 원격 개발 설정을 성공적으로 완료하셨습니다! 사설망 구성 가이드가 구글에서 찾기가 어려워, 직접 가이드를 작성해 보았습니다. 누군가에게 이 글이 도움이 되기를 소망하며 포스팅을 마칩니다.

질문이 있으시면 댓글 달아주세요 🙂

카테고리: ICT, window | 태그: , , , , , , , , , , , , , , , , , , , | 댓글 남기기

유럽 50개국 수도와 공용어

문득 유럽은 총 몇개국일까? 라는 질문을 마음속으로 해보았지만, 답을 내지 못하는 나를 발견했다. 부끄럽지만 수도도 정확히 알지 못한다.

가끔 예능 프로그램을 보다보면, 상식 퀴즈에서 몇몇 유럽 국가의 수도를 물어보는 장면이 나온다. 그저 웃으며 넘어갔지만, 마음 속에서는 언제나 한 가지 의문이 떠올랐다.

“나도 모르겠는데? 당연히 모를 수도 있지 않나? 왜 저게 누구나 아는 상식이라는 거지?”

다시 생각해보니 모르면 공부하면 되는 것이었다. 공부하지 않으면 평생 모르는 채로 살 뿐이다. 그래서 학습과 동시에 유럽의 각 나라별 수도와 공용어를 블로그에 정리하고자 한다.

1. 지도 內 유럽 나라별 위치

차마 유럽 모든 나라의 위치를 외울 자신은 없었다. 그래도 핀란드, 스웨덴, 노르웨이, 덴마크, 독일, 아이슬란드, 우크라이나, 영국, 아일랜드, 포르투갈, 스페인, 이탈리아, 터키, 네덜란드, 벨기에, 프랑스의 위치는 반복하며 암기해 두었다. 확실히 공부해두니 똑똑해지는 기분이다 ㅎㅎ

2. 유럽 50개국 수도와 공용어

유럽 50개국 수도를 암기하다보니 이런 생각이 들었다.

“정말 여태껏 모르고 살았구나”

물론 유럽의 수도를 몰라도 살아가는 데 지장은 없다. 하지만 상식 없이 살아왔단 것은 부정할 수 없는 것이다. 이번 기회에 공용어와 수도를 나라별로 암기해두었으니, 두고두고 도움이 될 듯 하다.

참고로 러시아는 유럽의 한 부분이지만, 유럽 연합에는 가입하지 않았으며, 유럽과 아시아 영토를 동시에 가지고 있다.

국명공용어수도
 그리스 그리스그리스어아테네
네덜란드 네덜란드네덜란드어암스테르담
노르웨이 노르웨이노르웨이어오슬로
덴마크 덴마크덴마크어코펜하겐
독일 독일독일어베를린
라트비아 라트비아라트비아어리가
러시아 러시아러시아어모스크바
루마니아 루마니아루마니아어부쿠레슈티
룩셈부르크 룩셈부르크독일어, 프랑스어, 룩셈부르크어룩셈부르크
리투아니아 리투아니아리투아니아어빌뉴스
리히텐슈타인 리히텐슈타인독일어파두츠
모나코 모나코프랑스어모나코
몬테네그로 몬테네그로몬테네그로어 (세르비아어)포드고리차
몰도바 몰도바몰도바어 (루마니아어)키시너우
몰타 몰타몰타어, 영어발레타
바티칸 시국 바티칸 시국라틴어, 이탈리아어바티칸 시
벨기에 벨기에네덜란드어, 프랑스어, 독일어브뤼셀
벨라루스 벨라루스벨라루스어, 러시아어민스크
보스니아 헤르체고비나 보스니아 헤르체고비나보스니아어, 크로아티아어, 세르비아어사라예보
북마케도니아 북마케도니아마케도니아어스코페
불가리아 불가리아불가리아어소피아
산마리노 산마리노이탈리아어산마리노
세르비아 세르비아세르비아어베오그라드
스웨덴 스웨덴스웨덴어스톡홀름
스위스 스위스독일어, 프랑스어, 이탈리아어, 로망슈어베른
스페인 스페인스페인어마드리드
슬로바키아 슬로바키아슬로바키아어브라티슬라바
슬로베니아 슬로베니아슬로베니아어류블랴나
아르메니아의 기 아르메니아아르메니아어예레반
아이슬란드 아이슬란드아이슬란드어레이캬비크
아일랜드 아일랜드아일랜드어, 영어더블린
아제르바이잔의 기 아제르바이잔아제르바이잔어바쿠
안도라 안도라카탈루냐어안도라라벨랴
알바니아 알바니아알바니아어티라나
에스토니아 에스토니아에스토니아어탈린
영국 영국영국 영어런던
오스트리아 오스트리아독일어
우크라이나 우크라이나우크라이나어키예프
이탈리아 이탈리아이탈리아어로마
조지아의 기 조지아조지아어트빌리시
체코 체코체코어프라하
코소보 코소보알바니아어, 세르비아어프리슈티나
크로아티아 크로아티아크로아티아어자그레브
키프로스 키프로스그리스어, 터키어니코시아
터키 터키터키어앙카라
포르투갈 포르투갈포르투갈어리스본
폴란드 폴란드폴란드어바르샤바
프랑스 프랑스프랑스어파리
핀란드 핀란드핀란드어, 스웨덴어헬싱키
헝가리 헝가리헝가리어부다페스트

유럽 나라별 수도와 공용어를 열심히 외웠지만, 평생 기억하리라는 자신은 없다. 그래도 모르는 것 보다는 낫다고 생각한다.

무엇이든 공부하는 것은 재미있다고 생각한다. 물론 열정이 생길 때만 재밌다. 그 외는 재미 없는 것이 당연하니, 물 들어올 때 재밌게 공부하자!

카테고리: 상식 | 태그: , , , , , , , , , , , , , , , , , , , , , , , , , | 댓글 남기기

태극기의 의미를 알아보자

IT 에 빠져 살다보니, 오늘 불현듯 내 상식이 너무 부족하다는 것을 깨달았다. 그래서 여러 상식을 접하고 공부하여 블로그에 글을 올리기로 다짐했다. 오늘은 태극기에 대한 의미를 알아보려 한다.

1. 태극기가 만들어진 배경

1882년 박영효가 고종의 명을 받아 일본에 가면서 ‘태극·4괘 도안’의 기를 만들어 사용하였다는 기록이 있다.

고종은 1883년 3월 6일 왕명으로 이 ‘태극·4괘 도안’의 태극기를 국기로 제정·공포했지만 국기 만드는 방법을 구체적으로 정하지 않은 탓에 이후 다양한 형태의 국기가 사용되어 오다가 1948년 8월 15일 대한민국 정부가 수립되면서 태극기의 제작법을 통일할 필요성이 커짐에 따라, 정부는 1949년 10월 15일 「국기제작법고시」를 통해 국기 제작 방법을 확정·발표하였다.

2. 태극기에 담긴 뜻

대한민국 국기인 태극기는 흰색 바탕에 가운데 태극문양과 네모서리의 건곤감리 4괘로 구성되어 있다.

건곤감리는 순서대로 하늘, 땅, 물, 불이며, 한자로는 순서대로 건괘(乾卦), 곤괘(坤卦), 감괘(坎卦), 이괘(離卦)이다.

흰색 바탕은 밝음과 순수, 전통적으로 평화를 사랑하는 우리의 민족성을 나타내며,

태극 문양은 음(파랑)과 양(빨강)의 조화를 상징하는 것으로, 우주 만물이 음양의 조화로 인해 생명을 얻고 발전한다는 대자연의 진리를 표현해낸 것이다.

대한민국의 한 일원으로서 반드시 알아야하는 상식이라고 생각한다.

잘 모르던 상식 하나 추가~! 조금씩 더 똑똑해지자 🙂

카테고리: 상식 | 태그: , , , , | 댓글 남기기

Dev Lee의 프로그래밍 초급 강의 – 2

Dev Lee의 프로그래밍 강의 초급편 2장입니다.

여러분은 초급 강의 1장에서 아래 3가지를 배우셨습니다.

  1. IDE
  2. 첫 C++ 프로그램
  3. printf 함수

초급 강의 1장 링크 : Dev Lee의 프로그래밍 초급 강의 -1

본 2장에서는 아래 목차를 배울 예정입니다. 이미 아는 내용들은 스킵하셔도 좋습니다. 힘내서 모든 강의를 따라와 주세요! 반드시 ICT 전문가로 만들어드리겠습니다.

  1. Bit, Byte, IP 란?
  2. Dev Lee의 C++ 강의 | 4. 변수 선언하기

1. Bit, Byte, IP 란?

먼저 Bit, Byte, IP 를 알아보겠습니다. ICT 기초 지식 중 하나이며, 내용도 어렵지 않습니다. 아래 링크를 통해 익히고 돌아오세요.

링크 : Bit, Byte, IP 란?

모두 이해하셨으리라 믿겠습니다.

2. C++ 강의 | 4. 변수 선언하기

작성중…

잘 이해가 되지 않거나 어려운 내용이 있다면, 반드시 댓글로 물어봐 주세요. 발견하면 성실히 답변 드리겠습니다.

다음 강의 : 작성중…

카테고리: ICT, 프로그래밍 강의 | 태그: , , , , , , , , , , , , , , , , , , , , | 댓글 남기기

[ICT 기본지식] Bit, Byte, IP 란?

본 포스팅에서는 Bit, Byte, IP 란 무엇인지 알아보도록 하겠습니다.

1. Bit란?

비트(Bit)란 데이터를 나타내는 최소 단위를 말합니다. 비트는 2진수이며 우리가 흔히 알고 있는 숫자는 10진수입니다.

우리가 매일 사용하는 숫자, 10진수는 0 부터 9 까지 10개의 숫자로 수를 표현합니다. 너무나 당연하지요. 그러나 2진수는 0 과 1, 2개의 숫자로 수를 표현합니다.

10진수를 다시 한 번 알아볼까요? 여러분이 아시다시피 0~9 중에 가장 큰 숫자는 9입니다. 10진수는 0 부터 9 까지 10개의 숫자로 수를 표현하죠. 가장 큰 수인 9 보다 큰 숫자를 표현하려면, 왼쪽에 ‘1’을 추가하고 자신을 ‘0’으로 만들어야 합니다. 아래 그림처럼 말이지요.

2진수는 0 과 1 로 숫자를 표현합니다. 가장 큰 숫자는 ‘1’이네요. ‘1’ 보다 큰 숫자를 표현하려면, 왼쪽에 ‘1’을 추가하고 자신을 ‘0’으로 만들어야 합니다. 아래 그림처럼요.

이제 아래 그림이 이해가 되셔야 합니다. 한 번 볼까요?

일반적으로 2¹ (2의 1승) 은 2^1 로 표현하고, 2² (2의 2승) 은 2^2 로 표현합니다. 이제 아래 그림을 보시고 이해하시면 비트와 2진수를 알게 되신 겁니다.

2. Byte 란?

바이트(Byte) 란 여덟 개의 비트로 구성된 데이터의 양을 나타내는 단위입니다. 아래 그림을 보시죠.

1바이트로는 10진수 0 부터 255 를 표현할 수 있습니다. 바이트로 표현 가능한 가장 큰 숫자는 1이 여덟 개인 2진수 ‘11111111’ 입니다. 이 수는 10진수로 255 인데요. 왜 이렇게 되는지 한 번 확인해 보겠습니다.

2진수 ‘100000000’ 은 2의 8승입니다. 2^8은 10진수로 256이지요. 2의 8승에서 하나 빼면 10진수 255가 됩니다. 즉, 2진수 ‘11111111’ 은 10진수로 255가 되는 겁니다. 아래 그림을 보시고 이해하시면 됩니다.

1Bit 는 ‘1b’, 8Bit 는 ‘8b’ 로 표현하며,

1Byte 는 ‘1B’, 1024Byte 는 ‘1024B’로 표현합니다.

‘1B’ 는 ‘8b’ 와 같습니다. 1Byte 는 Bit 8개로 구성되기 때문입니다.

이제 아래 데이터 단위 그림을 보고 이해하시면 Bit 와 Byte 를 이해했다고 볼 수 있습니다.

3. IP 란?

IP 란 인터넷 프로토콜(Internet Protocol)의 약자입니다. 각 컴퓨터(서버) 혹은 네트워크 장치의 주민등록 번호라고 생각하면 쉽습니다.

IP 주소는 IPv4, IPv6 두 가지 종류가 있으며, 일반적으로 IP 주소라 하면 IPv4 주소를 말합니다. IPv4 주소는 32bit 로 표현됩니다. 아래 그림을 보시죠.

IPv4 는 ‘IP version 4’의 약자로, 전 세계적으로 사용된 첫 번째 인터넷 프로토콜입니다. IPv4 주소는 32bit 방식으로 8bit 씩 4자리로 되어 있으며, 각 자리는 온점(.)으로 구분합니다.

우리는 위에서 1바이트는 8비트와 같고, 1바이트는 0 부터 255로 표현된다는 것을 배웠습니다. 즉 아래와 같이 IP 주소를 IPv4 방식으로 표현할 수 있습니다.

  1. 255.255.255.0
  2. 192.168.56.1
  3. 172.16.28.58
  4. 127.0.0.1

지금까지 Bit, Byte, IP 를 알아보았습니다. 이 글이 누군가에게 도움이 되길 바라며 포스팅을 마치겠습니다. 읽어주셔서 감사합니다.

카테고리: ICT, ICT 기본 지식 | 태그: , , , , , , , , , , , , , , , , , , , , , | 댓글 남기기

하이퍼바이저와 VM

본 포스팅에서는 하이퍼바이저와 VM에 대해 알아보겠습니다

1. VM이란?

VM 은 Virtual Machine 의 약자로, 가상머신을 말합니다. 가상머신이란 컴퓨터에서 동작하는 가상의 컴퓨터라고 이해하면 쉽습니다. 즉, 컴퓨터 한 대에서 여러 개의 가상머신이 동작할 수 있습니다.

이게 어떻게 가능할까요? 이를 확실히 이해하기 위해서는 하이퍼바이저를 먼저 알아야 합니다.

2. 하이퍼바이저란?

하이퍼바이저란 가상머신을 생성하고 구동하는 소프트웨어입니다.

하이퍼바이저라는 소프트웨어가 VM을 생성하고, 관리하고, 실행하는 겁니다. 즉, 여러분의 노트북 혹은 컴퓨터에 하이퍼바이저 소프트웨어를 설치하면, VM을 여러 개 생성해서 실행할 수 있다는 겁니다. 쉽게 표현하면, 윈도우 컴퓨터 한 대에서 여러 대의 윈도우 가상 컴퓨터를 실행할 수 있다는 뜻입니다.

그런데 VM의 실체가 무엇이길래 하이퍼바이저 위에서 실행이 가능한 걸까요? VM의 실체는 File 입니다.

컴퓨터에 여러 그림 파일이 있다면, 동시에 그 파일들을 열 수 있습니다. VM도 File 이므로 여러 대를 동시에 실행할 수 있는 것이죠.

3. VM 정적 & 동적 할당

VM은 파일이기 때문에 컴퓨터 디스크에 저장돼 있습니다. 하이퍼바이저가 VM을 저장하는 방법은 크게 두 가지가 있습니다.

첫 째, 정적 할당
10GB VM을 생성할 때, 정적 할당으로 생성하면 디스크에 10GB를 그대로 할당합니다. 내 컴퓨터의 10GB 를 바로 잡아먹는 것이죠.

둘 째, 동적 할당
10GB VM을 생성할 때, 사용량 만큼만 디스크에 할당하는 방식입니다. VM을 생성할 때 Max Size를 10GB 로 설정했지만, 생성 시 사용량이 1GB 라면 실제 컴퓨터 디스크에는 1GB만 할당하는 방식이죠. 사용량이 늘어나면 당연히 용량은 커지게 되고 최대 10GB 까지 늘어납니다.

4. VM Format

VM의 실체는 File 입니다. 엑셀의 Format이 xlsx인 것처럼, VM도 Format이 있습니다. 현존하는 대다수의 Hypervisor가 관리할 수 있는 Format이 VMDK입니다. 이 외에도 VDI. QCOW2 등이 있습니다. VMDK만 기억하셔도 됩니다.

지금까지 하이퍼바이저와 VM에 대해 알아보았습니다. 이 글이 누군가에게 도움이 되길 바라며, 포스팅을 마칩니다.

카테고리: 가상화, ICT | 태그: , , , , , , , , , , | 댓글 남기기

[우분투] 20.04 root 패스워드 초기화

본 포스팅에서는 우분투 20.04 에서 root 계정 패스워드를 분실했을 때, 초기화하여 패스워드를 복구하는 방법에 대해 소개하겠습니다.

1. 부팅 후 ‘shift’ 키 연타

우분투는 부팅 시에 ‘shift’ 키를 연타하면 GNU GRUB 모드로 진입할 수 있습니다.

2. ‘e’ 키 입력

‘e’ 키를 입력하여 아래 화면으로 이동합니다.

3. ‘initrd’ 위 라인 수정

아래 화살표 키를 눌러서 가장 아래쪽으로 내려가면 ‘initrd’ 로 시작하는 line 을 찾을 수 있습니다. 그 윗 줄에 ‘linux’ 로 시작하는 line에서 ‘ro’를 ‘rw’로 변경합니다. 그 후, rw 오른쪽을 모두 지우고 ‘init=/bin/bash’ 로 편집합니다. 아래 그림을 참고하세요

4. ‘Ctrl + X’ 키를 통해 재부팅

‘rw init=/bin/bash’ 로 편집을 완료했으면, 바로 ‘Ctrl + X’ 키를 통해 재부팅 하세요. 아래와 같은 bash 창을 만날 수 있게 될 것입니다.

5. ‘passwd’ 명령을 통한 root 패스워드 재설정

‘passwd’ 명령어를 통해 root 패스워드를 재설정합니다.

6. ‘reboot -f’ 명령을 통한 리붓

‘reboot -f’ 명령어를 통해 재부팅합니다. ‘f’ 옵션을 꼭 넣어주세요. 재부팅 후에, root 계정으로 접속합니다. 재설정한 패스워드로 로그인 되는 것을 확인할 수 있습니다.

이 글이 누군가에게 도움이 되길 바라며 포스팅을 마칩니다.

카테고리: ICT, linux, ubuntu | 태그: , , , , , , , , | 댓글 남기기

우분투 보안 정리용 (삭제 예정)

  • /etc/hosts.deny

sshd:ALL
vsftpd:ALL
gdm:ALL
telnet:ALL

  • 로그 1년
  1. vi /etc/logrotate.conf

monthly

su root syslog

rotate 14

create

#compress

include /etc/logrotate.d

/var/log/wtmp {
missingok
monthly
create 0600 root utmp
rotate 14
}

/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 14
}

2. vi /etc/logrotate.d/rsyslog

/var/log/syslog
{
rotate 14
monthly
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

/var/log/mail.info
/var/log/mail.warn

/var/log/messages
{
rotate 14
monthly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

  • 계정 패스워드 설정

# vi /etc/pam.d/common-password (한줄 수정)

password [success=1 default=ignore] pam_unix.so lcredit=-1 dcredit=-1 ocredit=-1 obscure sha512 minlen=8 remember=2

# vi /etc/login.defs (패스워드 사용 기간)

PASS_MAX_DAYS 90
PASS_MIN_DAYS 7

기존 계정의 경우 : # chage -M 90 [계정명] # chage -m 7 [계정명]

# vi /etc/pam.d/common-auth (계정 잠금 임계값)

(한줄 추가) auth required pam_tally2.so deny=4 unlock_time=1800

# /etc/shadow, /etc/security/opasswd 소유자 root & 퍼미션 400 설정

# 일반 사용자 중요 명령어 사용 막기

I. /usr/bin/last 소유자 root & 퍼미션 700 설정
II. /usr/sbin/ifconfig or /sbin/ifconfig 소유자 root & 퍼미션 700 설정

# FTP 접근제어 파일에 대한 접근 권한 제한하기

I. /etc/vsftpd.ftpusers, /etc/vsftpd.user_list 소유자 root & 퍼미션 600
II. /etc/ssh/sshd_config 에서 sftp 한 줄 주석 처리 & kill -9 <sftp-server pid> & service restart sshd

# cron 설정 파일에 대한 접근 권한 제한

I. touch /etc/cron.deny
II. vi /etc/cron.allow 내용은 ‘root’ 한 줄, 빈 공란 한 줄
root

III. chmod 600 /etc/cron.deny & chomd 600 /etc/cron.allow

# 백업 파일 접근 권한 설정 (위에서 설정 완료)
chmod 600 /var/log/btmp*
chmod 600 /var/log/wtmp*
chmod 600 /var/log/auth.log*
chmod 600 /var/run/utmp

# vi /etc/profile (계정 umask 설정 022 & 세션 타임아웃 30분 설정)

맨 아래에
TMOUT=1800
umask 022
추가

카테고리: 미분류 | 댓글 남기기

[백준] 10757 – 큰 수 A+B

큰 수 A+B

문제 링크 : https://www.acmicpc.net/problem/10757

시간 제한메모리 제한제출정답맞은 사람정답 비율
1 초256 MB180228053696350.140%

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)

출력

첫째 줄에 A+B를 출력한다.

예제 입력 1

9223372036854775807 9223372036854775808

예제 출력 1

18446744073709551615
  • C++ Code
#include <iostream>

using namespace std;

int main()
{
    string s1, s2, ans = "";
    char ea;
    int s1_size, s2_size;
    bool carry = false;
    
    cin >> s1 >> s2;
    s1_size = s1.size() - 1;
    s2_size = s2.size() - 1;
    
    while (s1_size >= 0 || s2_size >= 0)
    {
        ea = 0;
        
        if (carry)
            ea++;
        carry = false;
        
        if (s1_size >= 0 && s2_size >= 0)
            ea += (s1[s1_size] - '0') + (s2[s2_size] - '0');
        else if (s1_size >= 0)
            ea += (s1[s1_size] - '0');
        else if (s2_size >= 0)
            ea += (s2[s2_size] - '0');
            
        if (ea > 9)
        {
            ea -= 10;
            carry = true;
        }
        
        ea += '0';
        ans = ea + ans;
        s1_size--;
        s2_size--;
    }
    
    if (carry)
        ans = '1' + ans;
    
    cout << ans;
    return 0;
}
카테고리: 백준, 기초 개발실력 다지기, ICT | 태그: , , , , , , , , , | 댓글 남기기

[백준] 2775 – 부녀회장이 될테야

부녀회장이 될테야

문제 링크 : https://www.acmicpc.net/problem/2775

시간 제한메모리 제한제출정답맞은 사람정답 비율
1 초128 MB31013174971529657.603%

문제

평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.

이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다.

아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.

입력

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다

출력

각각의 Test case에 대해서 해당 집에 거주민 수를 출력하라.

제한

  • 1 ≤ k, n ≤ 14

예제 입력 1

2
1
3
2
3

예제 출력 1

6
10
  • C++ Code
#include <iostream>

using namespace std;

int main()
{
    int t, k, n;
    int apt[15][15];
    
    apt[0][1] = 1;
    for (int i = 2; i < 15; i++)
        apt[0][i] = apt[0][i-1] + i;
        
    for (int h = 1; h < 14; h++)
    {
        apt[h][1] = apt[h-1][1];
        for (int w = 2; w < 15; w++)
            apt[h][w] = apt[h][w-1] + apt[h-1][w];
    }
        
    scanf("%d", &t);
    
    for (int i = 0; i < t; i++)
    {
        scanf("%d %d", &k, &n);
        printf("%d\n", apt[k-1][n]);
    }
    return 0;
}
카테고리: 백준, 기초 개발실력 다지기, ICT | 태그: , , , , , , , , , | 댓글 남기기