配置共享文件夹无需身份验证即可挂载

配置共享文件夹无需身份验证即可挂载

我的最终目标是配置 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 共享。

关于这里出现的一些事情的说明:

  1. 您需要决定如何创建共享。

    您在 Nautilus 中创建了目标文件夹的用户共享(本地网络共享),然后在 smb.conf 中创建了经典共享。如果您想共享特定文件夹,最好以某种方式创建它们。所以我的建议是删除此文件夹的其中一个共享。

  2. 强制用户在客户端建立连接之后发生,而不是之前。

  3. “强制用户”的放置位置取决于您如何创建共享。

    如果您通过 Nautilus 创建所有共享,请将其放在 [global] 部分中,如我上面建议的那样。如果您在 smb.conf 中创建共享,请将其添加到那里的共享定义中。

  4. 如果没有“强制用户”,您最终将得到“无人”拥有的扫描文件,而不是您。

  5. 而且您不应该从 samba 密码数据库中删除任何人,因为它不适合按照您现在的方式使用:

    sudo smbpasswd -x nobody
    

相关内容