我有MacOS
一个共享目录。我可以通过以下方式访问Ubuntu Linux
:
# From Linux to MacOS
sudo mount -t cifs //192.168.1.X/directory_shared
/mnt/192.168.1.X/directoryname
-o username=username,
rw,
uid=####,
gid=####,
nounix,sec=ntlmssp
问题是,如果我ls -l
在客户端这样做,组总是有r-x
.
如果我在服务器 (macOS)中执行此操作sudo chmod -R g+w XXX
,它不会反映在客户端中,并且如果在客户端sudo chmod -R g+w XXX
中执行该命令,它不会应用新设置,因此会被忽略(它保留为r-x
)。我需要已安装目录中的组写入权限来写入/编辑在服务器中创建的任何内容。
注意:服务器和客户端的用户名是不同的——所有者可以是alpha
,客户端可以是Beta
,但Beta
服务器中也存在创建用户的方式,它是为了让客户端连接到服务器。因此,出于安全原因,不允许基于alpha
类型(仅使用)从客户端到服务器的连接Beta
,并且服务器中文件的所有者主要是(对于任何用户,它位于 MacAlpha
中的某个位置)。/Users/Shared
这些用户(服务器和客户端)共享相同的组名(次要组类型)。因此,由谁创建新文件/目录并不重要,他们必须让所有用户完全访问,因为该文件的主要组与这些用户的次要组分配方式相同。
我怎样才能实现这个目标?它通过命令sudo mount -t cifs ... [options]
或缺少的东西chmod
。
CIFS 是一个虚拟文件系统,它使用一组特定于客户端而不是服务器的权限创建远程共享的“视图”。您不能 chown / chmod 虚拟文件系统。而且 cifs 对服务器上的权限不可见。
默认情况下,cifs 挂载将创建一个“视图”,该“视图”具有所有者 = root(除非您指定 uid / gid 像您所做的那样)和 755 权限。
您可以使用
dir_mode
和file_mode
参数修改这些权限。因此,例如,如果您希望
gid=####
组中的每个人都拥有对挂载共享的写入权限:请注意,这反映了客户端用户看到的内容。由指定的用户
uid=####
和作为组成员的每个人gid=###
-在客户端- 将具有对已安装共享的写入权限。但是,服务器看到的唯一用户是传递给它的凭据指定的用户:
username=username
。如果该用户对服务器上共享的实际文件夹没有写访问权限,则没有人将有权访问客户端。如果他确实具有写访问权限,那么他和该组的任何客户端用户都将在服务器上保存所有者 = 用户名的文件。