Jam*_*mie 6 unix ubuntu cifs pam
我已经配置pam_mount.so为在用户登录时自动挂载 cifs 共享;问题是如果用户同时登录多次,mount 命令会重复多次。
到目前为止,这不是问题,但是当您查看mount命令的输出时会很混乱。
# mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
//srv1/UserShares/jrisk on /home/jrisk type cifs (rw,mand)
//srv1/UserShares/jrisk on /home/jrisk type cifs (rw,mand)
//srv1/UserShares/jrisk on /home/jrisk type cifs (rw,mand)
Run Code Online (Sandbox Code Playgroud)
我假设我需要摆弄pam.d/common-auth文件或pam_mount.conf.xml完成此操作。
如何指示pam_mount.so避免重复安装?
[编辑]
我的pam_mount.conf.xml文件的内容:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<pam_mount>
<debug enable="1" />
<volume user="*" server="srv1" path="UserShares" mountpoint="home" fstype="cifs" />
<cifsmount>mount -t cifs //%(SERVER)/%(VOLUME)/%(USER) %(MNTPT)/%(USER) -o "user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"</cifsmount>
<umount>umount %(MNTPT)/%(USER)</umount>
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<mntoptions require="nosuid,nodev" />
<path>/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin</path>
<logout wait="0" hup="0" term="0" kill="0" />
<mkmountpoint enable="1" remove="true" />
</pam_mount>
Run Code Online (Sandbox Code Playgroud)
小智 1
“多个同时登录”可能是关键。很可能发生的情况是,第二个和后续的安装命令在第一个安装命令完成之前启动。考虑到网络挂载命令运行的速度有多慢,这似乎很有可能。您可能需要的是某种共享内存/状态文件/等,它可以确保只有一个安装进程会启动。好吧,至少在 pam_mount 作者针对该竞争条件进行长期修复之前......:)
您可以查看 pam_tally 模块。您可以使用该模块来维护每个用户的登录计数器,并在计数超过 1 时拒绝。然后,您可以在控制字段中进行设置,以便在 pam_tally 失败时跳过 pam_mount 模块。具体来说,我认为也许这样的事情会起作用:
auth [success=ignore default=1] pam_tally.so deny=1 onerr=succeed no_lock_time no_reset
auth optional pam_mount.so pam_mount_options
Run Code Online (Sandbox Code Playgroud)
...或类似的规定。如果您需要一些外部系统来操作计数器,例如,当您手动卸载文件系统或其他东西时,am_tally2 模块也可以工作(因为 pam_tally2 附带了一个可用于操作计数的二进制文件)。
| 归档时间: |
|
| 查看次数: |
8946 次 |
| 最近记录: |