如何管理 Samba 挂载的权限

如何管理 Samba 挂载的权限

我有一台 Samba 服务器 ( nas01),它提供了一个名为 的共享downloads。该共享上的权限如下:

root@nas01:/mnt/storage/downloads# ls -al drwxrwxr-x+ 9 phil samba-users 4096 Aug 16 00:09 . drwxrwxr-x 3 phil samba-users 4096 Aug 13 22:16 .. drwxrwx---+ 231 phil samba-users 12288 Aug 15 00:56 Movies drwxrwx---+ 42 phil samba-users 4096 Aug 15 23:15 TV

用于远程访问 Samba 共享的用户是 Samba 服务器上的本地用户,并且都属于 samba-users 组。在本地,在 Samba 服务器本身上,这些用户可以访问文件:

root@nas01:/mnt/storage/downloads# sudo -u plex ls TV | wc -l 40

当共享安装在另一台 Linux 服务器上 ( plex01) 时,它显示如下:

root@plex01:/mnt/downloads# ls -al drwxrwxr-x+ 9 phil 1001 0 Aug 15 23:09 . drwxr-xr-x 3 root root 4096 Aug 18 20:09 .. drwxrwx---+ 231 phil 1001 0 Aug 14 23:56 Movies drwxrwx---+ 42 phil 1001 0 Aug 15 22:15 TV

本地root用户可以访问它:

root@plex01:/mnt/downloads# ls TV | wc -l 40

但本地plex用户不能:

root@plex01:/mnt/downloads# sudo -u plex ls TV ls: cannot open directory TV: Permission denied

如果我创建一个具有 GID 的本地组1001并将plex用户添加到其中...那么它就可以访问这些文件。

root@plex01:/mnt/downloads# ls -al drwxrwxr-x+ 9 phil plexrunner 0 Aug 15 23:09 . drwxr-xr-x 3 root root 4096 Aug 18 20:09 .. drwxrwx---+ 231 phil plexrunner 0 Aug 14 23:56 Movies drwxrwx---+ 42 phil plexrunner 0 Aug 15 22:15 TV

root@plex01:/mnt/downloads# groups plex plex : plex plexrunner

root@plex01:/mnt/downloads# sudo -u plex ls TV | wc -l 40

那么,问题是......管理这些权限的正确方法是什么?

  • 例如,有没有一种方法可以挂载共享,这样就不会观察到本地用户权限?这是一个专门用于运行 Plex 的 LXC 容器,所以这可能没问题。
  • 本地用户权限是否可以应用于共享,而不会传播到 Samba 服务器并影响所有客户端?
  • 我是否遗漏了一些非常明显的东西?

答案1

您必须有一种方法可以匹配服务器和客户端上的 ID(用户或组)。如果您不在目录服务器等环境中,则可以通过组分配所有权。导出为 samba 用户设置组的文件夹。通过在所有客户端上创建相同的组并确保用户是该组的成员,确保服务器和客户端上的组的 GID 相同。将文件夹和所有内容的权限设置为组。

答案2

我家里的设置几乎一模一样。由于不担心安全问题,我只需将 Samba 挂载设置为匿名,并plex像这样强制用户使用 UID(如果需要,还有 GID),而无需对服务器上的帐户进行任何修改:

[downloads]
browseable = yes
path = /mnt/downloads
guest ok = yes
read only = no
create mask = 777
force user = plex

挂载点归用户所有plex。客户端可能需要以用户身份挂载guest,但之后就可以了。

相关内容