我正在使用在 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
我认为问题在于您忘记添加myuser
Samba 用户。因此,您只能以访客身份连接。
关于将共享权限更改为 的要求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 共享。