我从一个用户(1000)的 linux 客户端连接到服务器。
两台机器上的用户名相同,但 UID 不同。
当我连接文件时,文件显示为归所有,1001
而不是USER
我期望的那样。我希望 cifs 将原始用户转换为我在客户端使用的用户。但这种情况并非如此。似乎我必须在客户端和服务器上都有类似的用户,并且还要让他们在两者上都分配相同的 UID。但我无法想象这是唯一的解决方案。
客户端有 mount.cifs 6.4 版。
我的 fstab 是
//192.168.111.190/hgst /home/ben/hgst cifs vers=1.0,noauto,users,uid=1001,username=USER,password=PASSWORD
.
我已经将其更改为包含vers=1.0
and uid=1001
。
该手册说我可能会forceuid
在客户端上使用来强制某个用户。如果我将此选项包含在我的 fstab 中,我会得到一个invalid argument
on mount
,两者都有 1000 和 1001。我不在forceuid
服务器上使用。
我的服务器正在运行 openmediavault 3,我的客户端是 Lubuntu 16.04 LTS。
服务器和客户端上的 UID 不必匹配。这就是您使用 samba 服务器的全部原因。
这有点像安装 NTFS 分区。如果没有 uid 规范,挂载的共享将由 root 拥有。如果客户端有具有该 uid的用户,则 uid=1001 指的是客户端上用户的 uid,而不是服务器上的用户。
到服务器:无论您如何在客户端中安装它,您所做的一切都以您在 cifs 安装表达式中的 username=USER / password=PASSWORD 组合中登录的用户身份完成。
致客户端:如果客户端是 Linux,它将使用您在挂载表达式中定义的方式挂载。
并且不需要 forceuid 参数。
所以这应该是:
编辑
CIFS 挂载表达式中的 uid 参数将挂载共享的所有权从 root 更改为 uid 指定的所有权。在您的原始挂载中,您将 uid 设置为 1001,这是针对客户端上不存在的用户的。您应该将 uid 设置为 1000,因为那是客户端用户的 uid。forceuid 不应该是必需的。
不知道。不过不应该是这样。如果它们相同,它应该在一端使用用户名,在另一端使用用户名。请注意:
...
如果这些相同,为什么不使用用户名?
uid
接受名称和用户 ID。您将使用
user=
oruid=
与用户名或credentials=
具有用户名和密码的文件名forceuid
我的问题是,我使用
forceuid
了错误的方式。该选项必须像这样包含:
这意味着我必须先设置一个
uid
,然后将选项放在forceuid
不带参数的情况下,以确保使用来自另一个选项的 UID。我与服务器上的所有权进行了交叉检查。这些文件现在以 UID 1000 显示在客户端上,但以 UID 1001 写入服务器,这正是它应该的样子。用户名相同,这也是正确的。
我的另一个错误是将 UID 声明为来自服务器的 UID(1001)。但它必须反过来,在我的情况下, UID 需要告诉客户端哪个本地用户应该拥有这些文件
uid=1000
。因此,使用该选项,
forceuid
可能没有必要。有用的手册页是: http: //manpages.ubuntu.com/manpages/xenial/man8/mount.cifs.8.html