본문 바로가기
Linux

[linux] 서버간 공유폴더 설정하기

by 공대우냉이 2016. 8. 22.

펌글입니다. 원본글은 아래에 기재했습니다.

 

리눅스 서버(Linux Server)를 운영하다보면 서버간에 폴더를 공유(Shared folder)해야 할 때가 있다.

공유폴더를 설정한다거나, 백업폴더를 설정한다거나 여러 이유가 있을 수 있다.

 

그 때 사용할 수 있는 서버간에 공유폴더를 설정할 수 있는 방법을 설명하고자 한다.

 

이 방법은 Ubuntu, Debian 및 CentOS, Redhat, Amazon Linux 에서 사용할 수 있다.

 

1. Ubuntu , Debian 설치 방법

# apt-get install sshfs

 

아주 간단하다.

 

2. CentOS, Redhat

리눅스 확장 저장소 추가.

 yum install epel-release -y

설치

# yum install fuse sshfs

 

3. Amazon Linux AMI

#yum install fuse

 

sshfs 가 저장소에 없다. 컴파일 환경을 만들고, 소스를 다운받아서 컴파일 하여야 한다.

# yum install glib2-devel

# wget http://downloads.sourceforge.net/project/fuse/sshfs-fuse/2.5/sshfs-fuse-2.5.tar.gz# tar -xzvf sshfs-fuse-2.5.tar.gz# cd sshfs-fuse-2.5/# ./configure# make# make install

 

 

사용법 (공통) : root 사용자가 실행하여야 한다.

 

sshfs root@211.112.123.123:/home/backup /mybackup -o allow_other

root@211.112.123.123  : 원격 서버 로그인 계정 및 원격 아이피. root 사용자로 안해도 된다.

root 이외의 사용자를 입력할 경우 chown 같은 특수 명령어가 안되고 해당 사용자의 권한을 따르게 된다.

:/home/backup  : 원격 서버의 폴더

/mybackup   :  내 폴더.  이미 생성되어야 있어야 하고 마운트(연결)중에는 원격 데이터가 보인다.

원래 있던 파일은 삭제되지 않고, 마운트를 해제 하면 접근할 수 있다.

-o allow_other  :  root 이외의 사용자도 접근할 수 있게 할지 선택.

이 옵션을 넣지 않으면 root는 공유폴더를 사용할 수 있고, 다른 일반 사용자는 빈 폴더를 보게 된다.

 ** 여기서 root는 공유할 폴더의 유저 계정 이름을 말하는것 같습니다.

 

연결(mount) 확인하기

#df -h


 

 

부팅시 실행하게 하기.

이것은 원격서버에 id_rsa.pub 를 authorized_keys 에 등록한 후에 사용하는 것이다.

ssh 자동로그인을 세팅하는 방법은… 구글에 찾아보도록 하여라. 시간이 된다면 추후에 글을 쓰도록 하겠다.

자동로그인을 세팅하지 않았다면 [부팅시 실행하게 하기] 부분은 동작하지 않으니 건너 뛰도록 하자.

 

fstab 에 넣어도 되는데 라엘이는 crontab 을 더 선호한다.

부팅때 한번 실행하도록 cron을 설정하자.

#crontab -e

 @reboot /usr/local/bin/sshfs root@211.112.123.123:/home/backup /mybackup -o allow_other

이때 sshfs 명령실행 파일의 full path(전체 경로)를 입력하도록 하자.  /whereis sshfs  또는 /which sshfs 를 입력하면 알 수 있다.

 


 

 

마운트 해제하기.

#fusermount -u /mybackup

 

간혹 오류가 나면서 마운트가 안풀릴때가 있는데

#umount /mybackup

도 시도해 본다.

 

마운트가 도저히 안풀리면 재부팅한다.

#reboot

 

마운트 해제 확인

#df -h

 

추가: 마운트 했을 시, 공유폴더의 소유 그룹과 유저가 다른 경우

3.5. 파일 권한

/home/share/myshare 에는 1.txt 파일이 하나 있다. 이 파일의 권한은 share.share 다. ls로 확인해 보자.

1
2
3
4
 
 
# ls -al /tmp/mnt
drwxr-xr-x 1 1001 test 4096 11 28 01:56 .
drwxrwxrwt 19 root root 36864 11 28 01:56 ..
-rw-rw-r-- 1 1001 test 0 11 28 01:56 1.txt
 
 
 
 

 

지금 내 계정은 yundream이지만 파일의 권한은 전혀 다르게 나온다. UID와 GID가 원래 파일의 것을 그대로 따라가기 때문이다. 원본 파일의 share 유저의 UID는 1001인데, 내 호스트에는 1001에 해당하는 유저가 없기 때문에 1001이 그대로 출력된다. 반면 1001인 test 그룹이 있기 때문에, 결과적으로 1001.test로 보이게 된다. 파일권한이 다르게 보일 뿐, 파일을 읽고 쓰는데는 전혀 문제가 없다. 하지만 이런식으로 파일을 이용하면 매우 혼란스러울 거다. uid와 gid 옵션으로 유저와 그룹을 설정할 수 있다. yundream의 uid와 gid는 1000이다.

1
 
 
# sshfs -o "uid=1000,gid=1000" ....
 
 
 
 

 

파일의 소유자와 그룹이 제대로 보이는 걸 확인 할 수 있다.

1
2
3
4
 
 
# touch 2.txt
# ls -al
-rw-rw-r-- 1 yundream yundream 12 11 28 02:04 1.txt
-rw-r--r-- 1 yundream yundream 0 11 28 02:08 2.txt
 
 

https://blog.leocat.kr/notes/2018/04/23/sshfs-mount-remote-server-using-ssh

 
 
 

[Linux] sshfs로 다른 시스템 마운트(mount)하기

필요

blog.leocat.kr

 

 

어디까지나 UID와 GID를 맵핑해서 보여주는 것일 뿐이다. 원격 호스트에서 이 파일의 소유자는 여전히 share다.

자신의 id 확인

※ 사용법
id [옵션]... [사용자명]
 

 

 

※ 옵션

 

 옵션  Long옵션  설명
 -g  --group  사용자의 그룹 id만 출력
 -G  --groups  추가 그룹의 id만 출력
 -u  --user  사용자의 UID를 출력
 -n  --name  -u, -g, -G 옵션과 함께 사용하며 해당하는 id의 이름만 출력
 -r  --real  -u, -g, -G 옵션과 함께 사용하며 해당하는 실제 id를 출력
   --help  id 명령어 사용법 출력
   --version  id 명령어의 버전 정보 출력

 

 

 ================================================

원본 : https://blog.lael.be/post/1387

 

              https://blog.leocat.kr/notes/2018/04/23/sshfs-mount-remote-server-using-ssh