我有几个Samba共享托管在TrueNAS规模的服务器上,并使用Arch机器上的“多用户”选项挂载它们。在cifscreds add作为我的用户之后,我可以访问这个共享,但是过了一段时间,我就没有了访问权限,显然我的会话密钥环被撤销了。为什么?
在Arch机器上,我为每个共享启用了系统安装单元,如下所示:
$ 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包含用户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内部的共享,断开连接,并在下载完成之前重新连接,那么对共享的读/写访问仍然有效。但是,如果我只在下载完成后才重新连接,那么我就会看到“拒绝权限”。
为什么会发生这种情况,我应该如何预防呢?
发布于 2022-12-17 15:34:34
我自己也经历过类似的问题,在我的例子中,我可以通过使用keyctl session创建一个新会话并对其进行身份验证来解决这个问题。
我知道,这是一个不令人满意的答案,但希望这是最好的,比其他你到目前为止(即没有),可能会给你一些线索,以供借鉴。
https://unix.stackexchange.com/questions/727526
复制相似问题