如何为多个用户启用 CIFS 挂载点的访问控制?

如何为多个用户启用 CIFS 挂载点的访问控制?

我有一个配置了多个用户的 samba 服务器。

默认情况下,挂载的 cifs 共享仅使用挂载时提供的凭据。可以访问装载点的每个人都可以以其凭据被使用的用户身份访问文件。

我正在寻找一种方法来配置我的客户端,以便在用户访问安装点时自动使用用户自己的凭据。

登录用户名和密码与访问 samba 服务器时使用的用户名和密码相同。

答案1

multiusermount 选项,用户使用自己的凭据来访问安装点。但是,这仍然要求在用户访问共享时挂载可用,并且要挂载共享,客户端需要有效的凭据(如果服务器不允许匿名(来宾)访问)。

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

  1. yum install pam_cifscreds

(仅限 CentOS >=8。7 中不可用)

  1. 编辑文件/etc/pam.d/

请参阅 RHEL 文章:https://access.redhat.com/solutions/3805741(打开一个免费的开发者帐户来访问它)。完成上述更改后,您无需重新启动任何服务。下次登录时自动生效。

  1. 使用以下选项挂载为 root 用户multiuser

mount -t cifs -o 用户名=abc123,vers=1.0,noperm,multiuser,sec=ntlmssp //example.org/hello /mnt/hello

  1. 通过 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

  1. 现在访问ls /mnt/hello顺利。

  2. 有关在 GUI 登录时缓存密码的信息,请参阅塞巴斯的解决方案

(我在 CentOS 9 上验证了我的答案)

相关内容