我有一个配置了多个用户的 samba 服务器。
默认情况下,挂载的 cifs 共享仅使用挂载时提供的凭据。可以访问装载点的每个人都可以以其凭据被使用的用户身份访问文件。
我正在寻找一种方法来配置我的客户端,以便在用户访问安装点时自动使用用户自己的凭据。
登录用户名和密码与访问 samba 服务器时使用的用户名和密码相同。
答案1
和multiuser
mount 选项,用户使用自己的凭据来访问安装点。但是,这仍然要求在用户访问共享时挂载可用,并且要挂载共享,客户端需要有效的凭据(如果服务器不允许匿名(来宾)访问)。
pam_cifscreds
可用于缓存用于访问 cifs 共享的登录密码。或者用户可以使用cifscreds
提供密码。在这两种情况下,pam_keyinit.so
都应该在 pam 会话配置中使用,以确保在登录时建立会话密钥环。
在基于 Debian 的系统上附加以下配置应该可以工作:
/etc/pam.d/common-session(替换{SAMBA_SERVER}
为 IP 地址或主机名):
session required pam_keyinit.so
session optional pam_cifscreds.so host={SAMBA_SERVER}
/etc/pam.d/common-auth:
auth optional pam_cifscreds.so
答案2
yum install pam_cifscreds
(仅限 CentOS >=8。7 中不可用)
- 编辑文件
/etc/pam.d/
:
请参阅 RHEL 文章:https://access.redhat.com/solutions/3805741(打开一个免费的开发者帐户来访问它)。完成上述更改后,您无需重新启动任何服务。下次登录时自动生效。
- 使用以下选项挂载为 root 用户
multiuser
:
mount -t cifs -o 用户名=abc123,vers=1.0,noperm,multiuser,sec=ntlmssp //example.org/hello /mnt/hello
- 通过 SSH 以非 root 用户身份登录。不要使用密钥对。必须使用密码。登录后,验证您的密码是否已通过以下方式自动缓存
pam_cifscreds
:
$ keyctl show
Session Keyring
804802868 --alswrv 4414294 100001 keyring: _ses
775789538 --alswrv 4414294 65534 \_ keyring: _uid.4414294
844620914 ----sw-v 0 0 \_ logon: cifs:a:example.org
最后一个被缓存了pam_cifscreds
。
现在访问
ls /mnt/hello
顺利。有关在 GUI 登录时缓存密码的信息,请参阅塞巴斯的解决方案。
(我在 CentOS 9 上验证了我的答案)