
Я хочу разместить путь через 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