smb.conf только для чтения любому пользователю без пароля

smb.conf только для чтения любому пользователю без пароля

Я хочу разместить путь через Samba, который любой пользователь сможет прочитать без пароля.

В 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. Хост-компьютер был перезагружен и 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указывает пароль CIFS. Если эта опция не указана, то PASSWDиспользуется переменная окружения. Если пароль не указан напрямую или косвенно через аргумент для монтирования, mount.cifsбудет запрашиваться пароль, если только guestопция не указана.

что приводит нас к guestварианту:

guestне запрашивать пароль

Какое решение вы здесь найдете?

sudo mount -t cifs -o guest //myhostpc/mystuff /tmp/mystuff

Связанный контент