따라서 sshfs 설치에 권한 문제가 있습니다.
root@server01:/mnt# sshfs -o uid=$(id -u www-data) -o gid=$(id -g www-data) user@host:/path mountpoint
root@server01:/mnt# ls -Zlah
total 12K
drwxr-xr-x 3 root root ? 4.0K Nov 29 20:00 .
drwxr-xr-x 23 root 1001 ? 4.0K Nov 29 13:03 ..
drwxrwxrwx 1 www-data www-data ? 4.0K Nov 29 18:53 mountpoint
root@server01:/mnt# getfacl mountpoint/
# file: mountpoint/
# owner: www-data
# group: www-data
user::rwx
group::rwx
other::rwx
root@server01:/mnt# sudo -u www-data ls -lah
ls: cannot access mountpoint: Permission denied
total 8.0K
drwxr-xr-x 3 root root 4.0K Nov 29 20:00 .
drwxr-xr-x 23 root 1001 4.0K Nov 29 13:03 ..
d????????? ? ? ? ? ? mountpoint
아마도 문제는 여기에 있을 것입니다.
root@server01:/mnt# mount
# unrelated stuff skipped
user@host:/path/ on /mnt/mountpoint type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
여기서는 마운트된 uid와 gid가 모두 0, 즉 루트라고 합니다. 하지만 내 mount 명령에서 ls를 루트로 사용하면 모든 것이 www-data인 gid/uid 33에 속한다는 것을 알려줍니다.
답변1
sshfs=FUSE, 루트로 설치한 다음 다른 사용자를 사용하여 액세스를 시도하고 있습니다.
농담/테스트입니다. 일반 사용자로 sshfs를 수행한 다음 루트, CD로 전환할 수 있습니다. 아, 권한이 거부되었습니다. 어떻게 루트가 거부될 수 있습니까? 루트입니다...
액세스하려는 사용자로 sshfs를 실행하십시오.
업데이트된 예:
**test**@mike-laptop4:/mnt$ sshfs [email protected]:/home/mike moo
test@mike-laptop4:/mnt$ ls moo/
src
mike@mike-laptop4:/mnt$ ls moo
ls: cannot access 'moo': Permission denied
mike@mike-laptop4:/mnt$ sudo su
root@mike-laptop4:/mnt# ls moo
ls: cannot access 'moo': Permission denied
그 반대:
**mike**@mike-laptop4:/mnt$ sshfs [email protected]:/home/mike moo
mike@mike-laptop4:/mnt$ ls moo
src
test@mike-laptop4:/mnt$ ls moo
ls: cannot access 'moo': Permission denied
mike@mike-laptop4:/mnt$ sudo su
root@mike-laptop4:/mnt# ls moo
ls: cannot access 'moo': Permission denied
업데이트되고 확장된 솔루션:
솔루션 1: 데이터 접근에 필요한 사용자로 설치됩니다(보안 기본 설정).
$ sshfs [email protected]:/home/mike moo
이 옵션을 사용하면 설치하는 사용자만 데이터에 액세스할 수 있습니다.
다음 2x 솔루션에 필요합니다(루트로 설치하지 않는 한 sshfs에 루트를 사용하면 안 됨).
/etc/fuse.conf user_allow_other
솔루션 2: 상자에 있는 모든 사용자에게 액세스를 허용합니다.
$ sshfs -o allow_other [email protected]:/home/mike moo
말 그대로 원본 호스트의 모든 사용자가 파일을 생성, 편집, 삭제할 수 있습니다. 이는 대부분의 경우 좋지 않은 생각이며 PCI 환경에서는 이미징을 허용할 수 없습니다.
원격지에 있는 모든 데이터가 위험에 처할 뿐만 아니라 로컬 사용자가 나중에 다른 로컬 사용자가 사용할 수 있는 데이터를 조작할 위험도 있습니다.
해결 방법 3: 머신의 모든 사용자를 허용하지만 로컬 파일 시스템 권한을 존중합니다.
$ sshfs -o allow_other,default_permissions [email protected]:/home/mike moo
로컬 파일 시스템에서 승인된 사용자만 마운트에 있는 파일에 액세스/편집할 수 있으므로 이 옵션이 이전 옵션보다 더 적합합니다.
그룹 기반 권한도 설정할 수 있습니다.