네이버클라우드

[Ncloud] 리눅스 서버 접속하기

graph-dev 2023. 6. 26. 19:49
728x90

 

기존에 리눅스 서버에 접속한 방식과는 다른 방법을 찾아보겠습니다.

 

처음에는 공인아이피를 사용해서 접속할 수 있었다면, 이번에는 표준 방법에 해당하는 포트포워딩 방식을 사용해보겠습니다. 이 방식의 장점은 공인아이피를 외우지 않아도 좀 더 친숙한 주소(예를 들면, ssh root@domain.com) 값으로 접속이 가능하다는 점입니다.

 

작업에 앞서, 한가지 작업을 수행하면 좋습니다. 먼저 서버 접속 후 id 명령어를 입력합니다. 그러면 아래와 같은 화면이 나타납니다. 여기서 uid=0이 root 권한을 가진 슈퍼 유저를 보여줍니다. 여기서, ubuntu라는 이름을 가진 사용자를 adduser라는 명령어를 통해 생성합니다.

//ubuntu라는 유저를 생성
adduser ubuntu

생성 후 사용자 정보는 /etc/skel 경로에 저장되며 run level과 연동됩니다. 사용자는 /etc/passwd로 확인할 수 있고, /etc/sudoers 파일을 일부 필요한 권한만 수정해서 사용하면 됩니다.

 

그에 앞서, 가볍게 리눅스의 주요 디렉토리에 대해 알아봅시다.

 

리눅스 가장 상위에는 root라는 디렉토리 / 가 있고, 네이버 클라우드는 /root/ 라는 사용자의 디렉토리가 있습니다. 이 두가지를 헷갈리면 안됩니다.

디렉토리 명 설명
/bin/ binary라는 뜻으로 실행 가능한 프로그램이 존재하는 곳입니다. system에 종속적이지 않습니다.
/sbin/ system에 매우 종속적인 binary 모음입니다.
/usr/ 사용자에게 필요한 여러가지를 모아둔 디렉토리입니다.
/boot/ 컴퓨터 부팅, 즉, 운영체제가 초기화되어 사용자와 인터페이스가 완성되기 까지 일련의 과정을 포함합니다.
/dev/ pts, tty 같은 터미널, 키보드, 마우스 등 많은 장치가 있을 때, 모두 dev 디렉토리 내 파일로 존재합니다. 디바이스 파일과 연결하면, 디바이스도 컨트롤할 수 있습니다.
/etc/ 기타 파일이 있습니다. bin, lib가 아니라 설정 파일 등이 있습니다. 패스워드, 그룹 등이 있고 nginx 설정 파일도 있습니다.
/home/ 여러 사용자의 홈 디렉토리입니다.
/lib/ 각종 실행 프로그램이 함께 공유해서 사용하는 라이브러리가 있는데, 이를 효율적으로 하고자 라이브러리에만 담고, 필요시 lib에서 참조합니다. 효율성을 높이기 위함입니다.
/media/ usb, cd 롬 디스크 등을 사용하기 위해 여러 매체를 붙입니다. 이를 마운트(mount) 한다고 합니다.
/mnt/ 미디어 외에 기타 장치를 마운트할 때 사용합니다.
/opt/ 시스템에 국한된 것은 /sbin/에 설치하나 그 외에 다운로드된 여러 파일은 opt에 설치합니다.
/srv/ 서비스를 나타내는 디렉토리입니다. 시스템에서 호스팅되는 서비스의 데이터를 저장하고자 사용합니다. 예를 들어, 웹 서버에서 호스팅되는 웹사이트의 데이터 저장에 사용할 수 있습니다.
/var/ 가변적인 값으로 /var/log/에는 로그파일이 있거나, 컴퓨터 구동시 임시로 프로그램을 만들면 /var/tmp/ 저장할 수 있고, /var/spool/ 중간에 조금씩 버퍼처럼 보관해서 프린터로 파일을 넘길 때 사용합니다. 이를 스풀링이라고도 부릅니다.

 

패키지 권한 sudo

패키지는 오직 루트 사용자(수퍼 유저)만 관리 및 설치 등이 가능합니다. 그런데 일반 사용자에게 잠시 수퍼 유저의 권한을 제공할 수 있는 방법이 있습니다. 이 때 sudo 명령어를 사용합니다. sudo + 각종 루트 디렉토리에 있는 사용자 명령어 형태로 사용합니다.

$sudo cp ~less.txt /bin
$id
$sudo id

추가로, who am i 명령어가 아니라 id 명령어를 사용해서 항상 현재 아이디를 확인하는 것이 좋습니다. 수퍼 유저인지 일반 사용자인지 확실히 해줘야 하는 것입니다. 다음은 id 명령어를 사용한 결과입니다. uid=0(root)로 수퍼 유저임을 알 수 있습니다.

 

다음으로 cp /etc/sudoers ~ 를 입력합니다. 이것은 sudoers 파일을 복사해서, ~(사용자의 홈 디렉토리)에 붙여넣겠다는 뜻입니다. 

이제 홈 디렉토리의 sudoers를 확인하기 위해 more sudoers 를 사용합니다.

 

 

파일을 넘기다 보면, 21번째 줄에 root ALL=(ALL:ALL) 으로 표시된 부분이 있습니다. 이것을 복사해서 바로 밑에 붙여넣고 root라는 이름을 사용자 이름으로 변경합니다. 저는 ubuntu로 만들겠습니다.

ubuntu ALL=(ALL:ALL) ALL

추가로 이 파일은 읽기 전용 파일이기 때문에 그냥 저장하고 나갈 수 없습니다.

따라서 본 파일을 저장하고 종료할 때, 강제적으로 느낌표를 붙이는 wq! 명령어로 나가야 합니다. 실제로, 권한도 확인해볼 수 있습니다. sudoers 파일은 소유자도 r(read), 그룹도 r(read), 즉, 읽기 전용 파일이며 이는 함부로 수정할 수 없게 하는 것입니다. 중요한 파일입니다.

 

명령모드: 편집 명령어

명령모드에서는 x를 눌러서 한글자씩 삭제할 수 있습니다. 명령모드에서 cw는 단어 단위로 삭제하고 이후 편집모드로 변경되어 바로 작성이 가능합니다. 그 외에 각 줄에서 맨 앞으로 가는 ^ 명령어, 맨 뒤로 이동하는 $ 명령어를 기억해두면 좋습니다. 실행모드라면 : (콜론) 명령어를 알아두면 좋습니다. 특정 줄로 바로 이동할 수 있기 때문입니다. 가령, 20번째 줄로 이동하려면 :20 엔터를 입력하면 20번째 줄로 바로 이동하게 됩니다.

이제 앞으로 sudo로 등록되어 있는 사용자로 로그인하여 루트 사용자 권한으로 명령을 내리는 방향으로 운용할 것입니다. 안전하게 패키지를 관리할 수 있기 때문입니다. sudo id를 통해 루트 사용자 권한을 갖는지 확인해볼 수 있습니다.

명령어 id로는 uid=1001(ubuntu)라고 한다면, sudo id를 사용하면 uid=0(root)로 루트 사용자 권한을 가지고 있음을 보여줍니다.

 

URL vs URI

URL(Uniform Resource Locator)는 네트워크 상에서 통합 자원(리소스)의 위치를 나타내기 위한 약속입니다. 자원 식별자와 위치를 동시에 보여줄 수 있습니다. 반면에 URI는 이를 사용하는 스키마(Identifier)만 가집니다. URL보다는 좀 더 넓은 범위의 스키마로 일반적인 스키마라고 할 수 있습니다. 또한, URL에는 http, https, ftp 등 다양한 프로토콜이 존재합니다.

 

다음 글에서는 URL의 구조를 좀 더 자세히 알아보고, 도메인으로 리눅스 서버 접속하는 법을 간단히 보여드리겠습니다.