2.8 KiB
2.8 KiB
SMB
Install SMB
sudo dnf install samba
sudo systemctl enable smb --now
firewall-cmd --get-active-zones
sudo firewall-cmd --permanent --zone=FedoraServer --add-service=samba
sudo firewall-cmd --reload
Create SMB User
# Add a linux user
sudo adduser --no-create-home --disabled-password --disabled-login sambauser
# Add the samba user with password
sudo smbpasswd -a sambauser
Create a SMB Share
# Create share
mkdir /srv/smb/sambauser
# Set proper selinux labels for samba
sudo semanage fcontext --add --type "samba_share_t" "/srv/smb(/.*)?"
# Run restorecon at the root of the btrfs subvolume
sudo restorecon -R /srv
Edit /etc/samba/smb.conf
[smb_sambauser]
comment = My Share
path = /srv/smb/sambauser
writeable = yes
browseable = yes
public = no
create mask = 0644
directory mask = 0755
write list = user
Then restart SMB
sudo systemctl restart smb
Create a SMB Share with Many Users
sudo groupadd myfamily
sudo useradd -G myfamily jack
sudo useradd -G myfamily maria
sudo smbpasswd -a jack
sudo smbpasswd -a maria
sudo mkdir /home/share
sudo chgrp myfamily /home/share
sudo chmod 770 /home/share
sudo semanage fcontext --add --type "samba_share_t" "/home/share(/.*)?"
sudo restorecon -R /home/share
[family]
comment = Family Share
path = /home/share
writeable = yes
browseable = yes
public = yes
valid users = @myfamily
create mask = 0660
directory mask = 0770
force group = +myfamily
- valid users: only users of the group family have access rights. The @ denotes a group name.
- force group = +myfamily: files and directories are created with this group, instead of the user group.
- create mask = 0660: files in the share are created with permissions to allow all group users to read and write files created by other users.
- directory mask = 0770: as before, but for directories.
Don't forget to restart smb
systemctl restart smb
Mount SMB Share at Boot
Make sure your install cifs-utils: dnf install cifs-utils
Create a password file at /etc/samba/credentials with contents like
username=USERNAME
password=PASSWORD
Then edit /etc/fstab to mount the share
# With login
//server_name/share_name /local_mount_point cifs _netdev,nofail,uid=1001,gid=1001,credentials=/etc/samba/credentials 0 0
# As guest
//server_name/share_name /local_mount_point cifs _netdev,nofail,guest 0 0