cifs 多用户挂载一开始有效,但一段时间后“权限被拒绝”

cifs 多用户挂载一开始有效,但一段时间后“权限被拒绝”

我在 TrueNAS-Scale 服务器上托管了多个 Samba 共享,并使用 Arch Linux 计算机上的“多用户”选项挂载它们。作为我的用户后cifscreds add,我可以访问共享,但一段时间后我不再具有访问权限,显然我的会话密钥环已被撤销。为什么?

在 Arch 机器上,我为每个共享启用了 systemd 安装单元,如下所示:

$ cat /etc/systemd/system/mnt-share.mount
[Unit]
Description=Mount share
After=nss-lookup.target

[Mount]
What=//truenas-scale.localdomain/share
Where=/mnt/share
Type=cifs
Options=multiuser,sec=ntlmssp,credentials=/etc/samba/credentials/smbnobody.creds,iocharset=utf8,rw

[Install]
WantedBy=multi-user.target

/etc/samba/credentials/smbnobody.creds包含 user 的用户名/密码smbnobody,我在 TrueNAS 服务器上专门创建了该用户名,以具有对共享的最小权限,即对顶级目录的读取权限,仅此而已。)

重新启动后,我通过 SSH 连接到 Arch 机器,运行cifscreds add truenas-scale.localdomain并输入密码,然后我就可以/mnt/share按预期进行读/写访问。然后我开始tmux,启动一个长时间运行的任务,然后断开连接。

一段时间后,当我通过 SSH 返回到 Arch 机器时,我经常发现自己不再具有读/写访问权限/mnt/share

$ ls /mnt/share
ls: cannot access '/mnt/share': Permission denied

$ ls -l /mnt
ls: cannot access '/mnt/share': Permission denied
total 0
d????????? ? ? ? ?            ? share

尝试添加/更新凭据也失败:

$ cifscreds add truenas-scale.localdomain
Error: unable to query session keyring: Key has been revoked

$ keyctl show
Session Keyring
Unable to dump key: Key has been revoked

我必须重新启动机器才能再次获得访问权限。

如果我的长时间运行的任务不访问共享,就会出现此问题。例如,如果我运行wget将一个大文件下载到内部共享tmux,在下载完成之前断开连接并重新连接,则对该共享的读/写访问权限仍然有效。但是,如果我仅在下载完成后重新连接,则会看到“权限被拒绝”。

为什么会发生这种情况,我应该如何预防?

答案1

我自己也遇到过类似的问题,就我而言,我可以通过创建一个新会话并keyctl session对其进行身份验证来解决此问题。

我知道,这是一个令人不满意的答案,但希望它比您迄今为止得到的其他答案(即没有)最好,并且可能会给您一些可以借鉴的线索。

相关内容