我的最终目标是配置 HP Officejet Pro 8600 以将扫描结果保存到我的计算机上的共享文件夹中(使用打印机的“扫描到网络文件夹”功能)。
因此,我按照以下方式将计算机上的文件夹配置为网络共享:
$ net usershare info --long
[LocalNetwork]
path=/path/to/LocalNetwork
comment=
usershare_acl=Everyone:F,
guest_ok=y
我还配置了我的 UFW 防火墙,以允许从本地网络内部访问 Samba 使用的端口:
$ sudo ufw allow from 192.168.178.0/24 to any app Samba
Rule added
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
137,138/udp (Samba) ALLOW IN 192.168.178.0/24
139,445/tcp (Samba) ALLOW IN 192.168.178.0/24
打印机和我的电脑都在同一个网络中,我将其用作\\<my-ip-address>\LocalNetwork
网络路径。由于打印机在测试连接时报告“连接失败”,因此我决定使用位于同一网络中的 Raspberry Pi 进行测试。但是,当我尝试挂载文件夹时,它会要求用户输入密码root
:
$ sudo mount -t cifs //192.168.178.92/LocalNetwork test_mount_point
Password for root@//192.168.178.92/LocalNetwork:
我没想到这一点,因为我已将文件夹配置为访客访问。那么它为什么会尝试进行身份验证?我该如何设置文件夹,使其无需身份验证即可访问?
编辑
通过传递-o guest
它没有提示输入密码,但我得到了mount error(13): Permission denied
:
$ sudo mount -t cifs -o guest //192.168.178.92/LocalNetwork test_mount_point
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
编辑
下列的这个答案我已经通过以下方式添加了一个用户并smbpasswd
附带一些密码(nopass
):
$ sudo smbpasswd -a nobody
当我尝试使用此用户名和密码挂载该文件夹时,却收到一个新错误:
$ sudo mount -v -t cifs -o user=nobody,password=nopass //192.168.178.92/LocalNetwork test_mount_point
mount error(5): Input/output error
编辑:testparm -s
这是输出:
$ testparm -s
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
# Global parameters
[global]
log file = /var/log/samba/log.%m
logging = file
map to guest = Bad User
max log size = 1000
obey pam restrictions = Yes
pam password change = Yes
panic action = /usr/share/samba/panic-action %d
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
passwd program = /usr/bin/passwd %u
server role = standalone server
server string = %h server (Samba, Ubuntu)
unix password sync = Yes
usershare allow guests = Yes
usershare owner only = No
idmap config * : backend = tdb
[LocalNetwork]
create mask = 0777
guest ok = Yes
path = /path/to/LocalNetwork
read only = No
答案1
事实证明我的网络中有一台 HP8600,当我将 HP 上的网络文件夹设置为 Xubuntu 18.04 机器时,我无法重现您的问题。
但是当我在 Ubuntu 20.04 机器上测试它时,确实遇到了完全相同的连接被拒绝错误。
看起来,要么是因为它的年龄,要么是因为它用于连接 Samba 共享的方法,它使用的是 1.0 版的 SMB 方言。Ubuntu 20.04 中 Samba 的服务器端没有 SMB1(Samba 称之为 NT1)...但您可以根据需要启用它:
编辑 /etc/samba/smb.conf 并在强制用户=你的用户名我上面建议添加这一条:
server min protocol = NT1
然后重新启动smbd:sudo service smbd restart
您可能需要重新启动 Ubuntu 盒子。现在我可以将其发送到 Ubuntu 20 共享。
关于这里出现的一些事情的说明:
您需要决定如何创建共享。
您在 Nautilus 中创建了目标文件夹的用户共享(本地网络共享),然后在 smb.conf 中创建了经典共享。如果您想共享特定文件夹,最好以某种方式创建它们。所以我的建议是删除此文件夹的其中一个共享。
强制用户在客户端建立连接之后发生,而不是之前。
“强制用户”的放置位置取决于您如何创建共享。
如果您通过 Nautilus 创建所有共享,请将其放在 [global] 部分中,如我上面建议的那样。如果您在 smb.conf 中创建共享,请将其添加到那里的共享定义中。
如果没有“强制用户”,您最终将得到“无人”拥有的扫描文件,而不是您。
而且您不应该从 samba 密码数据库中删除任何人,因为它不适合按照您现在的方式使用:
sudo smbpasswd -x nobody