
我想透過 samba 託管一個任何用戶無需密碼即可讀取的路徑。
在我的主機 PC 上的 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
。主機 PC 已重新啟動,並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