내가한거
yum install epel-release -y
yum install fuse sshfs
sshfs root@공유할IP:/repository/upload /repository/upload -o allow_other
이건 sshfs 명령어 경로 찾은거
아래는 참고 글
펌글입니다. 원본글은 아래에 기재했습니다.
리눅스 서버(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로 확인해 보자.
# 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이다.
# sshfs -o "uid=1000,gid=1000" ....
파일의 소유자와 그룹이 제대로 보이는 걸 확인 할 수 있다.
# 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
어디까지나 UID와 GID를 맵핑해서 보여주는 것일 뿐이다. 원격 호스트에서 이 파일의 소유자는 여전히 share다.
자신의 id 확인
※ 사용법
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 명령어의 버전 정보 출력 |
'DEV' 카테고리의 다른 글
[eclipse] 심각: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener (0) | 2020.06.29 |
---|---|
sitemesh 설정 (exclude 처리 포함) (0) | 2020.06.18 |
[PostgreSQL] 정규식으로 문자 제거 (0) | 2020.06.18 |
[PostgreSQL] PostGIs에서 공간 테이블 좌표변환 (0) | 2020.05.20 |
[ORACLE] 비밀번호 만료 (the password will expire within) (0) | 2019.02.13 |