pam_mount 和 sshfs 的問題

pam_mount 和 sshfs 的問題

我正在嘗試使用pam_mountsshfs 配置使用者主目錄的自動掛載(使用者是遠端電腦上的 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

相關內容