Samba: Difference between revisions
imported>Onny mNo edit summary |
imported>Onny Restructuring page and cleanup |
||
| Line 228: | Line 228: | ||
== Samba Client == | == Samba Client == | ||
=== | === CIFS mount configuration === | ||
The following snippets shows how to mount a CIFS (Windows) share in NixOS. | The following snippets shows how to mount a CIFS (Windows) share in NixOS. | ||
| Line 256: | Line 256: | ||
password=<PASSWORD> | password=<PASSWORD> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
By default, CIFS shares are mounted as root. If mounting as user is desirable, `uid`, `gid` and usergroup arguments can be provided as part of the filesystem options: | By default, CIFS shares are mounted as root. If mounting as user is desirable, `uid`, `gid` and usergroup arguments can be provided as part of the filesystem options: | ||
| Line 275: | Line 273: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Firewall configuration === | |||
Samba discovery of machines and shares may need the firewall to be tuned ([https://wiki.archlinux.org/index.php/Samba#.22Browsing.22_network_fails_with_.22Failed_to_retrieve_share_list_from_server.22 source]): | Samba discovery of machines and shares may need the firewall to be tuned ([https://wiki.archlinux.org/index.php/Samba#.22Browsing.22_network_fails_with_.22Failed_to_retrieve_share_list_from_server.22 source]): | ||
in <code>/etc/nixos/configuration.nix</code>, add: | in <code>/etc/nixos/configuration.nix</code>, add: | ||
| Line 283: | Line 281: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Browsing samba shares with GVFS == | === Command line === | ||
List shares | |||
<pre> | |||
smbclient --list localhost | |||
</pre> | |||
This should print | |||
<pre> | |||
$ smbclient --list localhost | |||
Password for [WORKGROUP\user]: | |||
Sharename Type Comment | |||
--------- ---- ------- | |||
public Disk | |||
IPC$ IPC IPC Service (smbnix) | |||
SMB1 disabled -- no workgroup available | |||
</pre> | |||
Mount as guest. <code>public</code> is your share name | |||
<pre> | |||
nix-shell -p cifs-utils | |||
mkdir mnt | |||
sudo mount.cifs -o sec=none //localhost/public mnt | |||
</pre> | |||
mount as user. <code>user</code> is your username | |||
<pre> | |||
sudo mount.cifs -o sec=ntlmssp,username=user //localhost/public mnt | |||
</pre> | |||
<code>sec=ntlmssp</code> should work. | |||
for more values, see `man mount.cifs` (search for `sec=arg`) | |||
=== Browsing samba shares with GVFS === | |||
Many GTK-based file managers like Nautilus, Thunar, and PCManFM can browse samba shares thanks to GVFS. | Many GTK-based file managers like Nautilus, Thunar, and PCManFM can browse samba shares thanks to GVFS. | ||
GVFS is a dbus daemon which must be running for this to work. | GVFS is a dbus daemon which must be running for this to work. | ||
| Line 294: | Line 331: | ||
There are however some special cases. | There are however some special cases. | ||
===== XFCE ===== | ===== XFCE ===== | ||
[[Xfce]] comes with a slimmed-down version of GVFS by default which comes with samba support compiled out. To have smb:// support in Thunar, we will use GNOME's full-featured version of GVFS: | [[Xfce]] comes with a slimmed-down version of GVFS by default which comes with samba support compiled out. To have smb:// support in Thunar, we will use GNOME's full-featured version of GVFS: | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
| Line 302: | Line 341: | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===== No desktop environment ===== | ===== No desktop environment ===== | ||
GVFS relies on polkit to gain privileges for some operations. Polkit needs an authentication agent to ask for credentials. | GVFS relies on polkit to gain privileges for some operations. Polkit needs an authentication agent to ask for credentials. | ||
Desktop environments usually provide one but if you have no desktop environment, you may have to install one yourself: | Desktop environments usually provide one but if you have no desktop environment, you may have to install one yourself: | ||
| Line 311: | Line 352: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===== DBUS ===== | |||
Furthermore, if you happen to start your Window Manager directly, via <code>.xinitrc</code>, or directly invoke a Wayland compositor such as Sway, you should ensure that you launch dbus at startup in your session and export its environment. If you do not have a dbus session in your environment, you will see errors such as "Operation not supported" when attempting to browse the network. | Furthermore, if you happen to start your Window Manager directly, via <code>.xinitrc</code>, or directly invoke a Wayland compositor such as Sway, you should ensure that you launch dbus at startup in your session and export its environment. If you do not have a dbus session in your environment, you will see errors such as "Operation not supported" when attempting to browse the network. | ||
| Line 340: | Line 381: | ||
Trying to read the contents of a remote file leads to the following error message: "Stale file handle". If you have mounted a share via the method described in "cfis mount", adding the option <code>noserverino</code> might fix this problem. [https://askubuntu.com/questions/1265164/stale-file-handler-when-mounting-cifs-smb-network-drive-from-fritz-router] | Trying to read the contents of a remote file leads to the following error message: "Stale file handle". If you have mounted a share via the method described in "cfis mount", adding the option <code>noserverino</code> might fix this problem. [https://askubuntu.com/questions/1265164/stale-file-handler-when-mounting-cifs-smb-network-drive-from-fritz-router] | ||
=== NT_STATUS_INVALID_NETWORK_RESPONSE === | === NT_STATUS_INVALID_NETWORK_RESPONSE === | ||
| Line 368: | Line 390: | ||
Note that <code>localhost</code> is the ipv6 localhost <code>::1</code>, | Note that <code>localhost</code> is the ipv6 localhost <code>::1</code>, | ||
and <code>127.0.0.1</code> is the ipv4 localhost | and <code>127.0.0.1</code> is the ipv4 localhost | ||
=== Permission denied === | === Permission denied === | ||