smb.conf nur lesen, jeder Benutzer, kein Passwort

smb.conf nur lesen, jeder Benutzer, kein Passwort

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 WORKGROUPlistet 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 smbclientwird 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 -UOption (siehe unten)) und die -NOption 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 -Nhier Erwähnte:

-N|--no-passWenn 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=arggibt das CIFS-Passwort an. Wenn diese Option nicht angegeben ist, wird die Umgebungsvariable PASSWDverwendet. Wenn das Passwort nicht direkt oder indirekt über ein Argument für mount angegeben ist, mount.cifswird ein Passwort abgefragt, sofern die guestOption nicht angegeben ist.

was uns zu der Option führt guest:

guestkein Passwort anfordern

Die Lösung für Sie hier?

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

verwandte Informationen