There are some limitations in the SMB protocol itself, particularly in the permitted characters in file names, and also in the preservation of file metadata (timestamps, permissions, extended attributes).  These show up mostly when using Mac or Linux with DartFS mounted via SMB.

The results depend somewhat on the tool used to do the copy.  Finder dragging is often different from command-line cp or rsync

  • forbidden characters in filenames <>:”/\|?*  plus ascii control-characters 0-31.  See:  If filenames are created on Linux containing these characters, the files will be generally visible to SMB clients, but the rendering of the name will depend on client options.
  • POSIX permissions are in general not preserved, but instead you get what a new file on the destination would have.
  • timestamps are preserved by Finder drag, but not necessarily by command line tools
  • MacOS Extended Attributes seem to be preserved
  • MacOS ACLs are not preserved.
  • Filename case is preserved, but SMB is case insensitive, while Linux is case sensitive and Macs can be optionally made case sensitive.  You can not use files in the same directory which differ only in case.

There are also some forbidden filename extensions which are rejected by our local server configuration because they have been used by Windows malware.  This list is subject to change, and only applies to creating and writing files.  If such files are created by NFS clients, they can be read by SMB clients.

The list has mixed case, but since SMB is case-insensitive, any mix of case with these letters will be denied.  The error returned is “permission denied”, which can be confusing as it is the same error that an access control rule would cause.

.abc .bleep