SFTP편집을 위한 리눅스 폴더 및 파일의 소유자 및 그룹 권한변경하기

3

 연재작 시리즈글의 일환으로, 이번 포스트에서는 리눅스 컴퓨터(서버)의 폴더와 파일의 소유자와 사용자그룹, 그리고 그 권한에 대해서 알아보고, 리눅스 명령어(CLI 명령어)를 사용해서 특정 폴더나 파일의 소유자와 사용자그룹을 변경하는 방법을 알아보겠습니다.

 

그럼으로써 실질적으로 이전 글에서 설치했던  Nginx가 지정하는 웹루트폴더를 root(관리자)가 아닌 다른 사용자(ubuntu)도 자유롭게 편집가능하게 하려고 합니다. 왜냐? SFTP 접속은 root 사용자가 아닌 ubuntu 사용자로 접속하기 때문에 권한이 주어지지 않으면 SFTP 접속을 통해서 할 수 있는 게 아무것도 없기때문이죠.(파일생성,편집,삭제등). 결국 저는 SFTP 를 통한 파일편집을 위해서 이런 권한문제를 해결하려는 것일 뿐입니다. nano나 vi, vim, emacs 같은 CLI용 텍스트 편집기만 쓴다면 불필요하죠.

 

웹루트 폴더의 소유자와 사용자그룹, 사용권한 살펴보기

연재작의 이전 글에서 언급했듯, 우분투서버를 설치하고 나서 Nginx를 설치하고 나면 웹서버의 도큐멘트 루트폴더, 그러니까 내 홈페이지의 루트폴더는 아래그림처럼 /var/www/html 입니다. 이것을 바꿀수도 있지만 제 방법대로 설치했다면 디폴트로 이곳이 지정되어있고 소유자 및 권한도 저와 같을 겁니다.

html 폴더의 사용 권한
 

위 그림은 SFTP 로 접속해서 본 html 폴더의 권한인데요. 소유자(Owner)는 root, 사용자그룹(Group)은 root 인걸 알수 있습니다. 

755 권한은 파일 소유자만이 편집권한을 가진다.

그리고 각 권한이 나오는데 각각 아래와 같습니다.

  • User(사용자, owner = root): 읽기,쓰기,실행
  • Group(사용자그룹 = root): 읽기, 실행
  • World(누구나,others): 읽기, 실행

그리고 위와같은 사용자별 권한 조합을 숫자로 나타낸 것이 위 그림에 나오는 755입니다.( 권한을 문자로 나타낸 것은 위그림의 경우 rwxr-xr-x 인데 이것은 3자리씩 끊어서 구분할 수 있습니다.)

 

우리가 설치한 대로라면 오늘 알아야할 주요 폴더와 파일의 권한은 아래와 같고 이들은 소유자와 그룹이 모두 root, root 입니다.

  • /var/www 디렉토리(폴더) : 755
  • /var/www/html  디렉토리: 755
  • ndex.nginx-debian.html 파일: 644

 

위 폴더들과 파일은 소유자인 root 가 아니고선 쓰기(Write)가 안되므로 다른 사용자는 이 폴더안에 파일을 만들 수도 없고 기존에 있는걸 수정할 수도 없으며 삭제할 수도 없습니다. 그래서 ubuntu 에게도 권한을 주기위해 작업을 해야하는데요. 여러가지 생각할 수 있겠지만 저는 복잡하지 않게 소유자와 사용자그룹을 각각 ubuntu, ubuntu로 바꿀 계획입니다.

저는 /var/www/html 보다 상위인 /var/www/ 폴더를 대상으로 할 것입니다. 웹루트보다도 상위인 www 폴더에도 SFTP 클라이언트를 통해서 여러가지 파일을 만들고 편집하려고 하거든요.

 

리눅스 폴더 및 파일의 소유자(Owner, User) 및 사용자그룹 변경하기

해당 폴더의 권한을 가진 root 유저로 작업해야하므로 먼저 CLI 프로그램을 이용해 서버에 접속해서 해야합니다.

 

참고: SSH를 이용한 서버접속에대한 사전지식이 필요하다면 아래 링크에서 내용을 자세히 읽어보시기 바랍니다.

참고: 명령어 입력중 $과 #기호 구분, 명령어 앞에 붙는 sudo 에 관한 지식이 필요하다면 아래 링크를 참고하세요.

 

CLI 명령줄에서 현재 폴더의 내용물에 대한 정보를 보려면 ls -l 명령어를 사용해서 보면되는데요. www 폴더의 상위폴더인 /var 폴더를 살펴봄으로써 알 수 있겠습니다. 아래처럼 말이죠.

ls -l /var/
폴더 내용물의 정보를 보는 리눅스 명령어 ls -l을 실행시킨 모습
폴더 내용물의 정보를 보는 리눅스 명령어

 

폴더의 소유자를 변경하는 리눅스 명령어chown (change owner) 입니다. 아래와 같은 형태로 작성합니다.

chown 변경할소유자명 폴더또는파일명

그리고 www 폴더 하위의 서브폴더와 모든 파일까지 한번에 적용하기위해선 -R 옵션을 사용합니다. 그래서 저는 아래처럼 명령어를 입력했습니다.

sudo chown -R ubuntu /var/www

 

그리고 사용자그룹을 변경하는 리눅스 명령어는 chgrp(change group)입니다. 아래와 같은 형태죠.

chgrp 변경할사용자그룹명 폴더또는파일명

역시 -R 옵션을 사용해서 저는 아래처럼 입력했습니다.

sudo chgrp -R ubuntu /var/www

위 두 개 명령어를 연속해서 입력후 아래그림처럼 ls -l 명령어를 통해서 각 폴더 내용물의 정보를 보면 소유자와 사용자그룹이 모두 ubuntu로 바뀐걸 확인할 수 있습니다.

리눅스 명령어 chown 과 chgrp

 

이제 ubuntu 사용자로 /var/www 이하의 폴더를 편집할 수 있게되었습니다. 더이상 권한 문제가 없을 것이므로 SFTP 로 파일을 업로드하거나 수정이 가능하게 될것입니다. 그럼 함께 수정해볼까요?

 

SFTP 를 이용해 Nginx 웰컴페이지 편집하기

html 폴더 아래 index.html 파일을 만들어도 되겠지만 nginx 가 준비해둔 파일을 편집해보겠습니다. index.nginx-deebian.html 파일을 자신이 사용하는 편집기에서 엽니다.

참고: SFTP 프로그램 사용에대한 사전지식이 필요하다면 아래 링크를 참고하세요.

 

index.nginx-debian.html 파일의 위치
index.nginx-debian.html 파일 위치

 

자신이 사용하는 텍스트 에디터를 이용해서 HTML 파일 내용을 일부 수정해줍니다. 저는 아래처럼 nginx 라는 글자대신 스위프트코딩으로 수정했습니다.

참고: <head>태그사이에 <meta charset=”utf-8″> 는 한글을 위해 필요할 뿐입니다.

아톰 편집기에서 수정하기
Atom 텍스트에디터

 

자신의 서버IP로 웹브라우저에 접속해보면 바뀐걸 볼 수 있습니다.

welcome to nginx
변경된 웰컴페이지

 

다음단계

이렇게 nginx가 html 파일을 잘 해석해 렌더링해 보여주지만 우리는 php를 사용해야하므로 nginx가 php도 해석할 수 있도록 해야합니다. 다음글로 넘어가서 php를 설치하는 방법을 알아보겠습니다.

3 댓글

  1. 스위프트님 안녕하세요.

    엘리멘터를 사용하는 저에게 최근 올려주신 엘리멘터 관련 포스트 또한 아주 큰 도움이 되고 있습니다.
    늘 좋은 포스트 감사합니다.

    질문드릴 사항은, 현재 제가 고민하고 알아보고 있는 것이 있는데요.

    다름 아닌, SFTP 접속 차단과 CLI를 통한 접속을 차단하고 싶은데요.

    이유는 이곳저곳 외주를 조금씩 맡기다 보니까 키파일이 유출이 많이 되어서 약간 찝찝한 마음 떄문에..그렇습니다..(흑흑)

    아마존 측에 사용중인 인스턴스 키파일을 바꿀 수 없냐고 물어보니 새로 아직 지원하지 않는 기능이라고 하더라구요.
    결론적으로, 라이트세일 자체 SSH만 열어두고 외부 프로그램을 통한 접속을 제어할 수 있을까요?

    감사합니다.

    • 어차피 SSH도 키파일을 쓰니까 키파일을 바꾸는게 최선일것같네요.

      라이트세일에서 인스턴스를 생성할때 키파일을 디폴트로 된걸 쓰지않고 커스텀으로 새로 생성할 수 있어요.
      https://swiftcoding.org/wp-lightsail#keypair
      이렇게 커스텀으로 만든 키파일 개인키는 딱 한번 다운 받을 수 있거든요

      인스턴스를 백업>복원과정(새 인스턴스로 복제 생성)을 거치면서 키파일을 바꿀 수 있습니다.

      현재 사용중인 인스턴스를 스냅샷으로 백업하고 그 스냅샷으로 복제된 새로운 인스턴스를 만들면서 그때 키 파일을 커스텀으로 해보세요.
      https://swiftcoding.org/series/lightsail-instance-snapshots

      고정 IP쓰실테니 고정IP만 새로 복제한 인스턴트로 옮겨주시면 DNS 세팅도 필요없이 새로운 인스턴트로 연결될겁니다.

      이 시점에서 두개의 같은 내용의 인스턴스가 생기니 새버전이 잘 동작하는지 한쪽에 비공개글이라도 하나 써서 확인한뒤 예전거는 삭제하시고요.

      • 역시나, 빠른 답변 감사드립니다.
        정말 간단한 방법이 있었군요..(흑흑)

        한번 시도해보겠습니다.

        감사합니다!

댓글을 남겨주세요.(익명, 구글, wordpress,페이스북, 트위터 계정 로그인 지원) 마크다운 문법 사용가능