I was about to post some more error messages as some form of progress, but I had the notion to try some commands again and found one of these final ones ended my journey successfully, and as I don't see an answer already posted, I'll take what I used from Kenneth that helped me and add it here myself:
This was causing issues for me on Fedora Linux 35 Workstation with my exFAT USB external hard disk drive that I had already been using fine in Files/Nautilus that would be only to my user account.
To be sure I wasn't just unfamiliar with Samba, I used commands such as
man smb.conf to edit the
/etc/samba/smb.conf file with more knowledge, and
testparm to validate the configuration.
sudo mount /dev/sd?? '/mnt/...' -o 'nosuid,nodev,nofail,noauto,x-gvfs-show,context="system_u:object_r:samba_share_t:s0"'
That is the command that completed my solution.
It utilizes the same method of masking filesystem attributes like I had found in tutorial pages with my Fedora Linux distribution here: https://docs.fedoraproject.org/en-US/quick-docs/samba/
sudo semanage fcontext --add --type "samba_share_t" /mnt/...
sudo restorecon -R /mnt/...
I was able to test that was necessary earlier using these broader commands:
> sudo setenforce Permissive
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
I had also noticed the bare directory when unmounted was a
mnt_t, and when mounted and dysfunctional with Samba was
I checked these with this command:
ls -ldZ where the
Z was key.
l is enough for me, but some used
getfacls for a more verbose display.
I had also thought of the
user mount option, but it is unnecessary now, at least for solving this problem for me.
2 more SELinux commands may have been helpful, but I could not generate any console or log output with them, with or without the '-d' option,
The firewall commands allowed other systems to connect.
I was able to test locally using these:
> smbclient --user="<user>%<password>" -L '//<machine>/<share>'
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
smbtest Disk testing
IPC$ IPC IPC Service (Samba #.#.#)
SMB1 disabled -- no workgroup available
> smbclient --user="<user>%<password>" '//<machine>/<share>' --command 'ls'
`NT_STATUS_ACCESS_DENIED listing \*`
> journalctl -u smb -b
chdir_current_service: vfs_ChDir(<path>) failed: Permission denied. Current token: uid=#, gid=#, 1 groups: #
I had already set a custom manual mount line for in
/etc/fstab through the Disks GUI, and manually as well, having it be mounted under
/mnt/... instead of only to my user under
/run/... trying to open the permissions for users and groups more, but other had read permission throughout, so that was misleading.
I may have tried other methods from articles such as these but with messy situations encountered these error messages and thought they were completely ineffective:
Sharing a mounted drive with samba on CentOS7
mount: <path>: wrong fs type, bad option, bad superblock on /dev/sd??, missing codepage or helper program, or other error.
SELinux: mount invalid. Same superblock, different security settings for (dev sd??, type exfat)
> sudo semanage fcontext --add --type "samba_share_t" '/mnt/...'
ValueError: File specification can not include spaces
That was incorrect anyway, as I needed the mentioned mask option to mount anyway, so I did not need to work out a correct file context pattern that worked such as suffixes like
(/.*)? or partial names with wildcards too, where I had the idea when trying this command:
sudo semanage fcontext -l | less.
That did not work for me earlier as I saw I was not able to change security settings with a remount, thus why it works later now only using the
context option alone that I thought I had done already.
It's also possible something is still strange between me using the terminal to mount the drive vs. the Disks GUI now that I had the updated file system table file. I think I have the same options lines and in the correct order, but one method is still giving me a
Other useful commands:
sudo umount '/mnt/...'
dmesg | less Since I have little logs in the var folder for any service, possibly using systemd to contain them.
sudo pdbedit -L
cat /etc/passwd | grep <user>