Моя конечная цель - настроить 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
И принтер, и мой компьютер находятся в той же сети, и я использую \\
в качестве сетевого пути. Поскольку при тестировании принтер сообщает "Ошибка подключения"
соединение, я решил проверить его с помощью 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
он не запрашивает пароль, однако я получаю ошибка монтирования (13): В доступе отказано
:
$ 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
Как оказалось, в моей сети есть HP8600, и я не смог воспроизвести вашу проблему, когда установил сетевую папку на HP на машину с Xubuntu 18.04.
Но я получил точно такую же ошибку «Отказ в соединении», когда тестировал ее на машине с Ubuntu 20.04.
Похоже, что либо из-за своего возраста, либо из-за метода, который он использует для подключения к общему ресурсу samba, он использует версию 1.0 диалекта SMB. На стороне сервера Samba в Ubuntu 20.04 нет SMB1 (samba называет его NT1)...но вы можете включить его, если хотите:
Отредактируйте /etc/samba/smb.conf и прямо под force user = your-user-name, который я предложил выше, добавьте этот:
server min protocol = NT1
Затем перезапустите smbd: sudo service smbd restart
Возможно, вам потребуется перезагрузить Ubuntu. Теперь я могу отправить его на общий ресурс Ubuntu 20.
Несколько замечаний по поводу того, что здесь всплыло:
Вам необходимо принять решение о том, как вы хотите создавать общие ресурсы.
Вы создали общий ресурс пользователя (локальный сетевой ресурс) целевой папки в Nautilus, а затем создали классический общий ресурс в smb.conf. Лучше всего создать их тем или иным способом, если вы хотите поделиться определенной папкой. Поэтому я предлагаю удалить один из общих ресурсов для этой папки.
Принудительное использование пользователя происходит после того, как клиент установит соединение, а не раньше.
Место размещения «принудительного пользователя» зависит от того, как вы создали общий ресурс.
Если вы создаете все свои общие ресурсы через Nautilus, поместите их в секции [global], как я предложил выше. Если вы создаете общие ресурсы в smb.conf, добавьте их в определение общего ресурса.
Без «принудительного пользователя» отсканированный файл будет принадлежать «никто», кроме вас.
И вам не следует никого удалять из базы данных паролей samba, так как она не предназначена для использования так, как вы ее используете:
sudo smbpasswd -x Nobody