아래에서 볼 수 있듯이 사용자를 kevcoder00에서 kevcoder01로 매핑할 수 있지만 그룹이 kevcoder01에 존재하지 않더라도 그룹은 marigold로 매핑됩니다.
l00py@kevcoder00:~$ sshfs -o idmap=user l00py@kevcoder01:/home/l00py ~/kevcoder01/
l00py@kevcoder01's password:
l00py@kevcoder00:~$ ls -hl kevcoder01/
total 0
-rw-r--r-- 1 l00py marigold 0 Jul 4 00:34 I_LIVE
-rw-r--r-- 1 l00py marigold 0 Jul 4 00:59 I_LIVE_AGAIN
사용자와 그룹을 매핑하려면 어떻게 해야 합니까?
답변1
제 생각엔 메리골드와는 맞지 않는 것 같아요. marigold는 원격 서버 devcoder01의 기본 그룹 100py와 로컬 시스템의 동일한 GID를 사용합니다.
예를 들어
내 노트북에서 기본 그룹은 GID 501, saml입니다.
$ id -a
uid=500(saml) gid=501(saml) groups=501(saml),502(vboxusers),503(jupiter)
내 원격 서버 Skinner에서 사용자 sam은 다음 명령을 사용합니다.
$ id -a sam
uid=5060(sam) gid=1000(users) groups=1000(users),1060(pics),1050(mp3s),1070(mock)
이제 연결하면:
$ sshfs -o idmap=user sam@skinner:/home/sam /home/saml/mnt
$ ls -l ~/mnt
drwxr-xr-x 1 saml users 4096 May 27 2011 projects
drwxr-xr-x 1 saml users 4096 Mar 11 22:53 public_html
-rw-r--r-- 1 root root 1992744 Apr 18 2012 rest.war
-rw-r--r-- 1 saml 1000 136 Sep 4 2012 scott_jay_addresses.txt
drwxr-xr-x 1 saml 1000 4096 Jun 27 2012 SparkleShare
이 디렉토리를 보면 내가 다른 그룹에 액세스할 수 있다는 것을 알 수 있지만 이것이 바로 sshfs가 작동하는 방식입니다. 이는 원격의 UID/GID를 사용하여 공유 디렉터리를 표시하고 로컬 시스템은 동일한 UID/GID를 사용합니다.
-n
스위치를 사용하면 ls -l
실제 UID/GID를 볼 수 있습니다.
$ ls -ln
drwxr-xr-x 1 500 100 4096 Mar 11 22:53 public_html
-rw-r--r-- 1 0 0 1992744 Apr 18 2012 rest.war
-rw-r--r-- 1 500 1000 136 Sep 4 2012 scott_jay_addresses.txt
drwxr-xr-x 1 500 1000 4096 Jun 27 2012 SparkleShare
/etc/group
로컬 시스템 파일에 1000에 대한 항목이 있는 경우 ls -l
위의 출력에서 "user" 그룹이 GID 100을 사용하고 있는 것을 볼 수 있으며 로컬 시스템에 다음 항목이 있습니다.
users:x:100:
답변2
상황(결과 id -a
) 에 따라지속 가능한 개발 관리답장해 보세요. 다음을 시도해 볼 수 있습니다.
sudo sshfs -o allow_other,default_permissions,uid=500,gid=501 sam@skinner:/home/sam /home/saml/mnt