我想通过 samba 托管一个路径,任何用户无需密码即可读取。
在我的主机 PC 上的 smb.conf 中:
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
server role = standalone server
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
[mystuff]
path = /path/to/my/stuff
read only = yes
public = yes
guest ok = yes
guest only = yes
browseable = yes
在其他计算机上,如果我
smbclient -L //myhostpc/mystuff
它说
Enter WORKGROUP\myusername's password:
有趣的是,如果我拼错了,它仍然会显示此信息mystuff
。主机 PC 已重新启动,并nmblookup -S WORKGROUP
列出 MYHOSTPC 的条目。
我也尝试过(在 ubuntu 上,安装了 cifs-utils)
sudo mount -t cifs //myhostpc/mystuff /tmp/mystuff
但得到
Password for root@//myhostpc/mystuff
如果我尝试
sudo mount -t cifs //myhostpc/mystuff -o username=guest,password="" /tmp/mystuff
(正如我在某处看到的那样),我得到了
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page)
我注意到/var/log/samba/log.
:
[2022/02/12 14:57:23.569070, 0] ../../source3 /smbd/service.c:166(chdir_current_service)
chdir_current_service: vfs_ChDir(/path/to/my/stuff) failed: Permission denied. Current token: uid=65534, gid=65534, 1 groups: 65534
我需要让[mystuff]
其他计算机上的任何用户都可以看到什么,而无需输入密码?
答案1
文档中smbclient
提到了这种特定情况:
password
[...] 没有默认密码。如果命令行中没有提供密码(通过使用此参数或向选项添加密码-U
(见下文))并且-N
未指定选项,则客户端将提示输入密码,即使所需服务不需要密码。(如果不需要密码,只需按 ENTER 即可提供空密码。)
后来,引用了-N
这篇文章提到的:
-N
|--no-pass
如果指定,此参数将禁止客户端向用户发出正常的密码提示。这在访问不需要密码的服务时很有用。
您遇到的问题的解决方案是什么?
smbclient -NL //myhostpc/mystuff
同样的特效也适用于mount
。以下是来自man mount.cifs
(搜索 的引用password
):
password=arg
|pass=arg
PASSWD
指定 CIFS 密码。如果未指定此选项,则使用环境变量。如果未通过 mount 的参数直接或间接指定密码,mount.cifs
则将提示输入密码,除非guest
指定了该选项。
这让我们有了以下guest
选择:
guest
不提示输入密码
这里为您提供解决方案吗?
sudo mount -t cifs -o guest //myhostpc/mystuff /tmp/mystuff