如何从访客帐户获取对 Samba 共享的写访问权限,而无需将权限设置为“g+w”?

如何从访客帐户获取对 Samba 共享的写访问权限,而无需将权限设置为“g+w”?

我正在使用在 Ubuntu 20.04 上运行的 Samba (4.15.13-Ubuntu) 使我的主目录可共享,以便我可以从 Windows 笔记本电脑访问它。我在 Windows 上有相同的用户名,但似乎只有在启用访客访问时才能连接。

我有以下内容smb.conf(删除了评论):

[global]
   guest account = myuser
   workgroup = WORKGROUP
   server string = %h server
   dns proxy = no
   hosts deny = ALL
   hosts allow = 10.0.0. 10.100.102. 127.
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   security = user
   map to guest = Bad User
   encrypt passwords = true
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
[myuser]
   path = /home/myuser
   read only = no
   guest ok = yes
   force user = myuser

我可以连接并读取,但如果我想要写入权限,则只有当我具有组写入权限时才有效。我可以写入具有的文件g+w;我也可以在具有的目录中创建文件g+w,但我的 umask 给出了rw-r--r--默认权限,因此我无法修改该文件。

smb.conf是从我使用早期版本的 Ubuntu 运行的另一个系统复制而来的,我没有遇到这个问题。我当然可以更改我的 umask,但我更希望 samba 允许访问,以myuser避免在不需要的地方授予写访问权限。

这是由于 Samba 最新版本的“改进”而导致的问题吗?有人能告诉我如何在不更改 umask 的情况下获得写访问权限并授予组对所有内容的写访问权限吗?

[注意:我已经通过要求非访客访问解决了这个问题,如下面的答案所示,但仍然想知道如何允许以访客身份进行写访问,而无需g+w对所有内容进行写访问。]

答案1

我认为问题在于您忘记添加myuserSamba 用户。因此,您只能以访客身份连接。

关于将共享权限更改为 的要求g+w,我目前无法解释。在我的测试中,我能够以访客身份成功连接,而无需更改共享权限。但不同之处在于我是从 Ubuntu 客户端而不是 Windows 客户端连接的。因此,也许 Windows 客户端存在需要 的问题g+w

事实上,您已force user = myuser设置允许 Guest 用户具有写入权限,或至少拥有 的凭据myuser。但也许您还需要在 smb.conf 中的共享中添加以下内容:

create mask = 0644
directory mask = 0755

以下是 Stack Exchange 上的一个链接,看起来有人遇到了同样的问题:如何创建无需 777 权限即可从 Windows 写入的 Samba 共享?


无论如何,要以有效用户而非访客身份访问 Samba 共享,您还必须将该普通用户添加到有效 Samba 用户列表中。

要查看当前 Samba 用户列表,请输入以下内容:

sudo pdbedit -L -v

接下来,如果你的 Ubuntu 系统上已经有普通用户,例如myuser,则跳过下一步。如果没有,请创建一个新用户:

sudo adduser myuser

然后添加mysuser为 Samba 用户:

sudo smbpasswd -a myuser

如果你sudo pdbedit -L -v再次运行,你会看到myuser已经添加。

在您的 中smb.conf,将其删除guest ok = yes或更改为guest ok = no

重新开始smbd

sudo systemctl restart smbd

此时,您应该能够以myuser写权限登录到您的 Samba 共享。

相关内容