
Ich möchte über Samba einen Pfad hosten, den jeder Benutzer ohne Passwort lesen kann.
In smb.conf auf meinem Host-PC:
[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
Auf einem anderen Computer, wenn ich
smbclient -L //myhostpc/mystuff
es sagt
Enter WORKGROUP\myusername's password:
Interessanterweise wird dies immer noch angezeigt, wenn ich falsch schreibe mystuff
. Der Host-PC wurde neu gestartet und nmblookup -S WORKGROUP
listet Einträge für MYHOSTPC auf.
Ich habe auch versucht (auf Ubuntu, mit installierten CIFS-Utils)
sudo mount -t cifs //myhostpc/mystuff /tmp/mystuff
aber bekommen
Password for root@//myhostpc/mystuff
und wenn ich es versuche
sudo mount -t cifs //myhostpc/mystuff -o username=guest,password="" /tmp/mystuff
(wie ich irgendwo gesehen habe), bekomme ich
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page)
Mir fällt auf in /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
Was muss ich [mystuff]
auf anderen Computern für jeden Benutzer sichtbar machen, ohne nach einem Kennwort zu fragen?
Antwort1
In der Dokumentation smbclient
wird diese spezielle Situation erwähnt:
password
[...] Es gibt kein Standardkennwort. Wenn in der Befehlszeile kein Kennwort angegeben wird (entweder durch Verwendung dieses Parameters oder durch Hinzufügen eines Kennworts zur-U
Option (siehe unten)) und die-N
Option nicht angegeben ist, fordert der Client ein Kennwort an, auch wenn der gewünschte Dienst keins erfordert. (Wenn kein Kennwort erforderlich ist, drücken Sie einfach die EINGABETASTE, um ein Nullkennwort einzugeben.)
und später mit Bezug auf das -N
hier Erwähnte:
-N
|--no-pass
Wenn dieser Parameter angegeben wird, unterdrückt er die normale Kennwortabfrage des Clients an den Benutzer. Dies ist beim Zugriff auf einen Dienst nützlich, der kein Kennwort erfordert.
Die Lösung in Ihrem Fall?
smbclient -NL //myhostpc/mystuff
Der gleiche Effekt ist für verfügbar mount
. Hier von man mount.cifs
(Suche nach Verweisen auf password
):
password=arg
|pass=arg
gibt das CIFS-Passwort an. Wenn diese Option nicht angegeben ist, wird die UmgebungsvariablePASSWD
verwendet. Wenn das Passwort nicht direkt oder indirekt über ein Argument für mount angegeben ist,mount.cifs
wird ein Passwort abgefragt, sofern dieguest
Option nicht angegeben ist.
was uns zu der Option führt guest
:
guest
kein Passwort anfordern
Die Lösung für Sie hier?
sudo mount -t cifs -o guest //myhostpc/mystuff /tmp/mystuff