List and define SMB shares from command-line
Question
In MacOS, is it possible to list and/or define SMB shares at the command-line?
On a Linux machine with Samba, I can use the testparm
command and the /etc/samba/smb.conf
file.
On Windows it would be the net share ...
command.
On Mac, I only know the "System Preferences" > "Sharing" GUI. But to check or set these shares on multiple machines, I would like to be able to do it through SSH sessions and the command-line.
Is this possible?
Solution
On macOS open Terminal and type man sharing
to review the manual page. You can use sharing -l
to list AFP/SMB share info. You can add and remove shares using this command line tool.
You can use the df -h
command or mount
command to list externally mounted volumes & shares.
OTHER TIPS
As suggested in James Brickley's answer, there is indeed the (well hidden) sharing
command.
It can be used for both listing and managing shares.
To list shares:
sharing -l
To create a share:
sudo sharing -a /Volumes/SomeDisk
or, for example to share only over SMB (not AFP), and give the share a different name (here "X_SomeDisk") :
sudo sharing -a /Volumes/SomeDisk -S X_SomeDisk -n X_SomeDisk -s 001
To remove the share created above:
sudo sharing -r X_SomeDisk
There's is a utility called smbutil
that can be used to view SMB shares
For example:
% smbutil view -G //servername.domain
Will display the shares that are available via guest access