pam_mount
sshfs를 사용하여 사용자 홈 디렉토리의 자동 마운트를 구성 하려고 합니다 (사용자는 원격 시스템의 LDAP 사용자입니다).
내가 구성한 pam_mount
:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<pam_mount>
<debug enable="1" />
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<mntoptions require="nosuid,nodev" />
<logout wait="0" hup="0" term="0" kill="0" />
<mkmountpoint enable="1" remove="true" />
<volume fstype="fuse" path="sshfs#%(USER)@HOSTNAME:" mountpoint="~" ssh="1" options="reconnect,idmap=user,password_stdin,nonempty" />
</pam_mount>
사용자를 사용 하려고 하면 su
비밀번호를 묻는 메시지가 나타납니다.
root@debian:~# su - pszubert
pam_mount(pam_mount.c:553): pam_mount 2.5: entering session stage
reenter password for pam_mount:
pam_mount(misc.c:38): Session open: (ruid/rgid=0/20001, e=0/20001)
pam_mount(mount.c:213): Mount info: globalconf, user=pszubert <volume fstype="fuse" server="(null)" path="sshfs#pszubert@HOST:" mountpoint="/home/pszubert" cipher="(null)" fskeypath="(null)" fskeycipher="(null)" fskeyhash="(null)" options="reconnect,idmap=user,password_stdin,nonempty" /> fstab=0 ssh=1
command: 'pmt-fd0ssh' 'mount.fuse' 'sshfs#pszubert@HOST:' '/home/pszubert' '-oreconnect,idmap=user,password_stdin,nonempty'
pam_mount(spawn.c:108): setting uid to user pszubert
pam_mount(misc.c:38): set_myuid<post>: (ruid/rgid=20001/20001, e=20001/20001)
System plików Typ bl. 1K B użyte dostępne %uż. zamont. na
/dev/sda1 ext3 7867856 940236 6527956 13% /
tmpfs tmpfs 192316 0 192316 0% /lib/init/rw
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
udev tmpfs 187872 148 187724 1% /dev
tmpfs tmpfs 192316 0 192316 0% /dev/shm
devpts devpts 0 0 0 - /dev/pts
fusectl fusectl 0 0 0 - /sys/fs/fuse/connections
pam_mount(pam_mount.c:521): mount of sshfs#pszubert@HOST: failed
command: 'pmvarrun' '-u' 'pszubert' '-o' '1'
pam_mount(misc.c:38): set_myuid<pre>: (ruid/rgid=0/20001, e=0/20001)
pam_mount(misc.c:38): set_myuid<post>: (ruid/rgid=0/20001, e=0/20001)
pmvarrun(pmvarrun.c:248): parsed count value 0
pam_mount(pam_mount.c:440): pmvarrun says login count is 1
pam_mount(pam_mount.c:643): done opening session (ret=0)
HOST에 정보가 있습니다 auth.log
.
Mar 17 22:13:42 student sshd[17889]: Accepted password for pszubert from 85.202.159.212 port 20264 ssh2
Mar 17 22:13:42 student sshd[17889]: pam_unix(sshd:session): session opened for user pszubert by (uid=0)
Mar 17 22:13:42 student sshd[17891]: subsystem request for sftp
Mar 17 22:13:42 student sshd[17891]: Received disconnect from XXXXXXXXXX: 11: disconnected by user
Mar 17 22:13:42 student sshd[17889]: pam_unix(sshd:session): session closed for user pszubert
이상한 점은 로그인할 때 sshfs pszubert@HOST: a/
.
뭐가 문제 야?
문제는 ~/.ssh
로컬 컴퓨터에 있다고 생각합니다. 첫 번째 질문은 파일 known_hosts
에 관한 known_hosts
것이므로 /etc/ssh/ssh_known_hosts
. ~/.ssh
나는 그것의 생성을 막을 수 있다면 ~/.ssh
문제가 해결될 것이라고 생각했습니다. 비활성화하는 방법이 있나요?
답변1
문제를 해결했습니다.
먼저 known_hosts
나는 /etc/ssh/ssh_known_hosts
.
주요 문제는 다음 디버깅 라인에서 볼 수 있습니다.
command: 'pmt-fd0ssh' 'mount.fuse' 'sshfs#pszubert@HOST:' '/home/pszubert' '-oreconnect,idmap=user,password_stdin,nonempty'
-o
보시다시피 및 옵션 사이에는 공백이 없습니다.
줄 추가:
<fusemount>mount.fuse %(VOLUME) %(MNTPT) -o %(OPTIONS)</fusemount>
프로필 pam_mount
( /etc/security/pam_mount.conf.xml
)이 문제를 해결했습니다. 이제 mount.fuse
다음과 같이 호출하세요.
command: 'pmt-fd0ssh' 'mount.fuse' 'sshfs#pszubert@HOST:' '/home/pszubert' '-o' 'reconnect,nonempty'
다음으로 중요한 것은 /dev/fuse
및 의 권한 입니다 /usr/bin/fusermount
. 사용자가 fuse
그룹에 속해 있어야 합니다. 내 경우에는 원격 사용자이기 때문에 이것이 불가능했기 때문에 권한을 수동으로 변경했습니다.
chmod o+x /usr/bin/fusermount
chmod o+rw /dev/fuse