Samba 共享仅适用于“强制用户”

Samba 共享仅适用于“强制用户”

我似乎很难理解 Ubuntu 上的 samba 配置。假设我在 /srv 中有 4 个文件夹,分别是 media、share、bob-personal 和 joe-personal。我还有 3 个用户:bob、joe 和 nas。用户 bob 和 joe 是标准用户(其中​​一个在 Ubuntu 中被禁用,因为我没有为其分配密码,对于这两个用户,他们在 AccountsService 中的文件都有一个条目“SystemAccount=true”,因此他们不会显示在登录屏幕上)。nas 是系统的管理员。我使用此用户设置 NAS(对于所有不必以 root 身份完成的操作),我目前以此用户身份登录。还有以下用户组:all-share(包括 bob、joe、nas)、media-share(包括 bob、nas)、joe(包括 joe、nas)和 bob(包括 bob、nas)。

最初,我设置了chown nas:media-share mediachown nas:all-share share。我还为所有这些文件夹设置了chown joe:joe joe-personalchown bob:bob bob-personalchmod 660 <foldername>。然后按如下方式配置共享:

[media]
    path = /srv/media
    comment = Media Share
    writeable = yes
    valid users = @media-share

[share]
    path = /srv/share
    comment = Common Share
    writeable = yes
    valid users = @all-share

[joe-personal]
    path = /srv/joe-personal
    comment = Personal Folder Joe
    writeable = yes
    valid users = @joe

[bob-personal]
    path = /srv/bob-personal
    comment = Personal Folder Bob
    writeable = yes
    valid users = @bob

当然,我还将所有这些用户添加到了 Samba 用户数据库中。但是,我无法使用任何可能的用户帐户从任何机器访问这些文件夹(Windows 总是说“您无权访问...”)。

然后,我在每个共享声明中添加了一行force user = nas,将每个文件夹的所有权更改为 nas:nas,并将用户权限更改为 700。现在一切都运行正常!

唯一的问题是,显然,在这些文件夹中创建的所有新文件都归 nas 所有,而不是实际创建它们的登录远程用户。这对我来说不是一个大问题,但查看谁创建了什么仍然非常方便(用于统计、指责等)。有人知道为什么无法使用旧配置访问任何内容吗?

这是我的全局配置的转储:

[global]
    server string = %h Samba NAS
    server role = standalone server
    security = USER
    map to guest = Bad User
    obey pam restrictions = Yes
    pam password change = Yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    username map = /etc/samba/smbusers
    syslog = 0
    log file = /var/log/samba/log.%m
    max log size = 1000
    dns proxy = No
    usershare allow guests = Yes
    panic action = /usr/share/samba/panic-action %d
    idmap config * : backend = tdb
    invalid users = root

系统信息:Ubuntu 16.04.02,最新,Samba 昨天安装

答案1

我想知道您为什么使用以下格式的规范:valid users = @media-share。这是为了指定组访问权限:组中的所有用户media-share都是有效用户。对于您的情况,我会使用: valid users = joe或者valid users = joe bob如果要向两者授予访问权限。 write list也可以使用。请参阅手动的更多细节。

相关内容