Kali Linux Setup Samba Share for Home LAN: Difference between revisions

From WikiMLT
m (Text replacement - "mlw-continue" to "code-continue")
 
(30 intermediate revisions by the same user not shown)
Line 2: Line 2:


== Install Samba ==
== Install Samba ==
<syntaxhighlight lang="shell" line="1" class="mlw-continue">
<syntaxhighlight lang="shell" line="1" class="code-continue">
sudo apt install samba smbclient nautilus-share
sudo apt install samba smbclient nautilus-share
</syntaxhighlight><syntaxhighlight lang="shell" line="1" class="mlw-continue mlw-shell-gray">
</syntaxhighlight><syntaxhighlight lang="shell" line="1" class="code-continue mlw-shell-gray">
sudo usermod -aG sambashare $USER  
sudo usermod -aG sambashare $USER  
</syntaxhighlight>
</syntaxhighlight>


== Samba Basic Setup ==
== Samba Basic Setup ==
Add or modify the following lines within <code>smb.conf</code>.<syntaxhighlight lang="shell" line="1" class="mlw-continue">
Add or modify the following lines within <code>smb.conf</code>.<syntaxhighlight lang="shell" line="1" class="code-continue">
sudo nano /etc/samba/smb.conf
sudo nano /etc/samba/smb.conf
</syntaxhighlight><syntaxhighlight lang="shell" line="1" class="mlw-continue mlw-shell-gray">
</syntaxhighlight><syntaxhighlight lang="shell" line="1" class="code-continue mlw-shell-gray">
cat /etc/samba/smb.conf | grep -Pv '^(;|\s*#)' | sed '/^$/d'
cat /etc/samba/smb.conf | grep -Pv '^(;|\s*#)' | sed '/^$/d'
</syntaxhighlight><syntaxhighlight lang="terraform" class="mlw-pre-max-height-320" highlight="2-5,17,18" line="1">
</syntaxhighlight><syntaxhighlight lang="terraform" class="mlw-pre-max-height-320" highlight="2-5,17,18" line="1">
Line 54: Line 54:
   guest ok = no
   guest ok = no


</syntaxhighlight>
</syntaxhighlight>Notes:
 
* For ''client/server min protocol'' you can try also with <code>NT1</code> or <code>SMB2</code>.
* For ''client/server min protocol'' you can try also with <code>NT1</code> or <code>SMB2</code>.
* The following is not listed default value from the <code>[global]</code> section: <code>usershare path = /var&shy;/&shy;lib&shy;/&shy;samba&shy;/&shy;user&shy;shares</code>.
* The following is not listed default value from the <code>[global]</code> section: <code>usershare path = /var&shy;/&shy;lib&shy;/&shy;samba&shy;/&shy;user&shy;shares</code>.


Restart the Samba and NetBIOS services.<syntaxhighlight lang="shell" line="1" class="mlw-continue">
Restart the Samba and the NetBIOS services.<syntaxhighlight lang="shell" line="1" class="code-continue">
sudo systemctl restart smbd.service nmbd.service
sudo systemctl restart smbd.service nmbd.service
</syntaxhighlight>
</syntaxhighlight>


== Share a Directory via CLI ==
== Share a Directory via CLI ==
One way is to edit the file <code>smb.conf</code> and add a section, as the shown below, at the very bottom of the file. Then restart the Samba service.<syntaxhighlight lang="shell" line="1" class="mlw-continue">
'''1.''' One option is to edit the file <code>smb.conf</code> and add a section, as the shown below, at the very bottom of the file. Then restart the Samba and the NetBIOS services.<syntaxhighlight lang="shell" line="1" class="code-continue">
sudo nano /etc/samba/smb.conf
sudo nano /etc/samba/smb.conf
</syntaxhighlight><syntaxhighlight lang="terraform" class="mlw-pre-max-height-320"  line="1" start="40">
</syntaxhighlight><syntaxhighlight lang="terraform" class="mlw-pre-max-height-320"  line="1" start="40">
Line 77: Line 76:
* The section name <code>[Share]</code> is matter of you choice - this will become the name of the shared folder.
* The section name <code>[Share]</code> is matter of you choice - this will become the name of the shared folder.
* The directory provided as <code>path</code> value, <code>/home/share</code> in this case, must have enough permissions.
* The directory provided as <code>path</code> value, <code>/home/share</code> in this case, must have enough permissions.
'''2.''' Another option is to use the <code>[https://manpages.ubuntu.com/manpages/jammy/en/man8/net.8.html net usershare]</code> tool in a way as the the following to create or remove a network share.<syntaxhighlight lang="shell" line="1" class="code-continue">
net usershare add Git /home/$USER/Git "$USER's git projects" Everyone:F guest_ok=y
</syntaxhighlight><syntaxhighlight lang="shell" line="1" class="code-continue mlw-shell-gray">
net usershare delete Git
</syntaxhighlight>The above command will share the user's <code>~/Git</code> directory and will grant it guest access. The command actually creates a file entry in <code>/var&shy;/&shy;lib&shy;/&shy;samba&shy;/&shy;user&shy;shares</code>.<syntaxhighlight lang="shell" line="1" class="code-continue">
cat /var/lib/samba/usershares/git
</syntaxhighlight><syntaxhighlight lang="terraform" class="mlw-pre-max-height-320" line="1" start="1">
#VERSION 2
path=/home/<user>/Git
comment=<user>'s git projects
usershare_acl=S-1-1-0:F
guest_ok=y
sharename=Git
</syntaxhighlight>Notes:
* <code>[https://manpages.ubuntu.com/manpages/jammy/en/man8/net.8.html man net]/usershare</code>: The optional "acl" field specifies which users have read and write access to the entire share. Note that guest connections are not allowed unless the smb.conf parameter "usershare allow guests" has been set. The    definition of a user defined share acl is: "user:permission", where user is a valid username on the system and    permission can be "F", "R", or "D".
** "F" stands for "full permissions", ie. read and write permissions.
** "D" stands for "deny" for a user, ie. prevent this user from accessing this share.
** "R" stands for "read only", ie. only allow read access to this share (no creation of new files or directories or writing to files).
* In addition the user must have enough filesystem permissions to the directory, for example yf you really want to allow everyone to write to the directory you may need to <code>chmod o+rwx ~/Git</code>.
== Share a Directory via Nautilus ==
It is much comfortable to share directories via the context menu (right mouse button) within the Nautilus file explorer. Unfortunately, in Kali Linux 2022, the package <code>nautilus-share</code> suffers from a known bug that causes the following error message: <code>''"net usershare" has returned error 255...''</code>
This bug is fixed within some other distributions and as workaround we can use the <code>libnautilus-share.so</code> file from the [https://launchpad.net/ubuntu/+source/nautilus-share Ubuntu 22.04's package]. <syntaxhighlight lang="shell" line="1" class="code-continue">
cd /tmp
wget https://launchpad.net/ubuntu/+archive/primary/+files/nautilus-share_0.7.3-2ubuntu6_amd64.deb
ar x "nautilus-share_0.7.3-2ubuntu6_amd64.deb" "data.tar.zst"
tar --strip-components=6 -xvf "data.tar.zst" \
./usr/lib/x86_64-linux-gnu/nautilus/extensions-3.0/libnautilus-share.so
</syntaxhighlight><syntaxhighlight lang="shell" line="1" class="code-continue mlw-shell-gray">
sudo mv /usr/lib/x86_64-linux-gnu/nautilus/extensions-3.0/libnautilus-share.so{,.default}
</syntaxhighlight><syntaxhighlight lang="shell" line="1" class="code-continue">
sudo mv libnautilus-share.so /usr/lib/x86_64-linux-gnu/nautilus/extensions-3.0/
sudo chown root:root /usr/lib/x86_64-linux-gnu/nautilus/extensions-3.0/libnautilus-share.so
</syntaxhighlight><syntaxhighlight lang="shell" line="1" class="code-continue mlw-shell-gray">
pkill -9 nautilus
</syntaxhighlight>After restarting Nautilus you will see at {{Media-cite|sf|1}} position {{Pti|s=1|i=A|c=green}} after applying the above steps the label in the Nautilus' context menu is changed from ''Sharing Options'' to ''Local Network Share''. Now everything should work fine.
{{sform|1|Kali-linux--libnautilus-share.so--change.png
| m = {{pt|s=1|i=A|c=green|a=270|x=726|y=350|z=1}}
| s = 0.9
| t = 16
| side = 16
}}


== References ==
== References ==


* ...
=== General Samba Refs ===
* SAMBA: [https://www.samba.org/samba/docs/ Documentation] | [https://wiki.samba.org/index.php/Main_Page '''Wiki''']
* Linux Hint: [https://linuxhint.com/install_samba_ubuntu/ How to Install Samba on Ubuntu]
* Kali Linux Docs: [https://www.kali.org/docs/general-use/samba-configuration/ Samba Configuration]
* DigitalOcean: [https://www.digitalocean.com/community/tutorials/how-to-set-up-a-samba-share-for-a-small-organization-on-ubuntu-16-04 How To Set Up a Samba Share For A Small Organization on Ubuntu 16.04]
* Red Hat  Blog: [https://www.redhat.com/sysadmin/samba-file-sharing How to share files with Samba]
* Red Hat  Blog: [https://www.redhat.com/sysadmin/samba-windows-linux Mounting and mapping shares between Windows and Linux with Samba]
* Raspberry Pi SE: [https://raspberrypi.stackexchange.com/q/84565/59699 Samba - How to Disable LAN Samba Server Discovery]
 
===== Nautilus Troubleshooting =====
 
* '''I should report the issue on: [https://bugs.kali.org/view_all_bug_page.php?refresh=true Kali Linux Bug Tracker]'''
* Manjaro GitLab: [https://gitlab.manjaro.org/packages/community/xfce/thunar-shares-plugin/-/issues/1 <nowiki>Please update this package, it is outdated and broken [Calling "net usershare" created error 255]</nowiki>]
* Manjaro Support: [https://forum.manjaro.org/t/cant-share-directory-through-nautilus/87517 Can’t share directory through nautilus] | [https://forum.manjaro.org/t/thunar-shares-plugin-net-usershare-error-255/93591 Thunar Shares Plugin ‘net usershare’ error 255]
* Ubuntu Mate Support: [https://ubuntu-mate.community/t/net-usershare-has-returned-error-255/25667 “net usershare” has returned error 255]
* Ubuntu Mate Support: [https://ubuntu-mate.community/t/sharing-public-folders-between-computers-over-the-network/25431 Sharing Public folders between computers over the network]
* Ask Ubuntu: [https://askubuntu.com/questions/798928/nautilus-share-message-called-net-usershare-info-but-it-failed Nautilus-Share-Message: Called "net usershare info" but it failed]


* ...
===== Debian packages manipulation =====


* Ubuntu on Launchpad: [https://launchpad.net/ubuntu/+source/nautilus-share Nautilus-share package in Ubuntu]
*Ask Ubuntu: [https://askubuntu.com/a/30581/566421 Is there an apt command to download a deb file from the repositories to the current directory?]
*FAQforge.com: [https://www.faqforge.com/linux/how-to-download-and-extract-a-deb-package-on-ubuntu-or-debian-linux/ '''How to download and extract a .deb package on Ubuntu or Debian Linux''']
*LinuxConfig.org: [https://linuxconfig.org/how-to-extract-file-from-debian-package-archive-deb '''How to extract files from Debian package archive DEB''']
*NixCraft: [https://www.cyberciti.biz/faq/linux-unix-extracting-specific-files/ Tar Extract a Single File(s) From a Large Tarball]
*Stack Overflow: [https://stackoverflow.com/a/845601/6543935 '''How do I untar a subdirectory into the current directory?''']
*Unix and Linux: [https://unix.stackexchange.com/q/61461/201297 How to extract specific file(s) from tar.gz]
<noinclude>
<noinclude>
<div id='devStage'>
<div id='devStage'>
{{devStage  
{{devStage  
  | Прндл  = Linux Desktop
  | Прндл  = Linux Desktop
  | Стадий = 3
  | Стадий = 6
  | Фаза  = Разработване
  | Фаза  = Утвърждаване
  | Статус = Разработван
  | Статус = Утвърден
  | ИдтПт  = Spas
  | ИдтПт  = Spas
  | РзбПт  = {{REVISIONUSER}}
  | РзбПт = Spas
| АвтПт  = Spas
| УтвПт = {{REVISIONUSER}}
  | ИдтДт  = 14.09.2022
  | ИдтДт  = 14.09.2022
  | РзбДт  = {{Today}}
  | РзбДт = 14.09.2022
| АвтДт  = 14.09.2022
| УтвДт = {{Today}}
  | ИдтРв  = [[Special:Permalink/31489|31489]]
  | ИдтРв  = [[Special:Permalink/31489|31489]]
  | РзбРв  = {{REVISIONID}}
  | РзбРв = [[Special:Permalink/31533|31533]]
| АвтРв  = [[Special:Permalink/31535|31535]]
| УтвРв = {{REVISIONID}}
}}
}}
</div>
</div>
</noinclude>
</noinclude>

Latest revision as of 08:29, 26 September 2022

In­stall Sam­ba

sudo apt install samba smbclient nautilus-share
sudo usermod -aG sambashare $USER

Sam­ba Ba­sic Set­up

Add or mod­i­fy the fol­low­ing lines with­in smb.conf.

sudo nano /etc/samba/smb.conf
cat /etc/samba/smb.conf | grep -Pv '^(;|\s*#)' | sed '/^$/d'
[global]
   client min protocol = LANMAN1
   server min protocol = LANMAN1
   workgroup = WORKGROUP
   interfaces = 127.0.0.0/8 eth0 br0
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
   usershare owner only = false
[homes]
   comment = Home Directories
   browseable = no
   read only = yes
   create mask = 0700
   directory mask = 0700
   valid users = %S
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no

Notes:

  • For client/​​​server min pro­to­col you can try al­so with NT1 or SMB2.
  • The fol­low­ing is not list­ed de­fault val­ue from the [glob­al] sec­tion: user­share path = /​​​var­/​​​­lib­/​​​­samba­/​​​­user­shares.

Restart the Sam­ba and the Net­BIOS ser­vices.

sudo systemctl restart smbd.service nmbd.service

Share a Di­rec­to­ry via CLI

1. One op­tion is to ed­it the file smb.conf and add a sec­tion, as the shown be­low, at the very bot­tom of the file. Then restart the Sam­ba and the Net­BIOS ser­vices.

sudo nano /etc/samba/smb.conf
[Share]
   comment = Shared filews
   path = /home/share
   public = yes
   writable = yes

Notes:

  • The sec­tion name [Share] is mat­ter of you choice – this will be­come the name of the shared fold­er.
  • The di­rec­to­ry pro­vid­ed as path val­ue, /​​​home/​​​share in this case, must have enough per­mis­sions.

2. An­oth­er op­tion is to use the net user­share tool in a way as the the fol­low­ing to cre­ate or re­move a net­work share.

net usershare add Git /home/$USER/Git "$USER's git projects" Everyone:F guest_ok=y
net usershare delete Git

The above com­mand will share the user's ~/​​​Git di­rec­to­ry and will grant it guest ac­cess. The com­mand ac­tu­al­ly cre­ates a file en­try in /​​​var­/​​​­lib­/​​​­samba­/​​​­user­shares.

cat /var/lib/samba/usershares/git
#VERSION 2
path=/home/<user>/Git
comment=<user>'s git projects
usershare_acl=S-1-1-0:F
guest_ok=y
sharename=Git

Notes:

  • man net/​​​usershare: The op­tion­al "acl" field spec­i­fies which users have read and write ac­cess to the en­tire share. Note that guest con­nec­tions are not al­lowed un­less the smb.conf pa­ra­me­ter "user­share al­low guests" has been set. The de­f­i­n­i­tion of a user de­fined share acl is: "user:permission", where user is a valid user­name on the sys­tem and per­mis­sion can be "F", "R", or "D".
    • "F" stands for "full per­mis­sions", ie. read and write per­mis­sions.
    • "D" stands for "de­ny" for a user, ie. pre­vent this user from ac­cess­ing this share.
    • "R" stands for "read on­ly", ie. on­ly al­low read ac­cess to this share (no cre­ation of new files or di­rec­to­ries or writ­ing to files).
  • In ad­di­tion the user must have enough filesys­tem per­mis­sions to the di­rec­to­ry, for ex­am­ple yf you re­al­ly want to al­low every­one to write to the di­rec­to­ry you may need to chmod o+rwx ~/​​​Git.

Share a Di­rec­to­ry via Nau­tilus

It is much com­fort­able to share di­rec­to­ries via the con­text menu (right mouse but­ton) with­in the Nau­tilus file ex­plor­er. Un­for­tu­nate­ly, in Kali Lin­ux 2022, the pack­age nau­tilus-share suf­fers from a known bug that caus­es the fol­low­ing er­ror mes­sage: "net user­share" has re­turned er­ror 255…

This bug is fixed with­in some oth­er dis­tri­b­u­tions and as workaround we can use the libnautilus​-share​.so file from the Ubun­tu 22.04's pack­age.

cd /tmp
wget https://launchpad.net/ubuntu/+archive/primary/+files/nautilus-share_0.7.3-2ubuntu6_amd64.deb
ar x "nautilus-share_0.7.3-2ubuntu6_amd64.deb" "data.tar.zst"
tar --strip-components=6 -xvf "data.tar.zst" \
./usr/lib/x86_64-linux-gnu/nautilus/extensions-3.0/libnautilus-share.so
sudo mv /usr/lib/x86_64-linux-gnu/nautilus/extensions-3.0/libnautilus-share.so{,.default}
sudo mv libnautilus-share.so /usr/lib/x86_64-linux-gnu/nautilus/extensions-3.0/
sudo chown root:root /usr/lib/x86_64-linux-gnu/nautilus/extensions-3.0/libnautilus-share.so
pkill -9 nautilus

Af­ter restart­ing Nau­tilus you will see at Screen 1 po­si­tion A af­ter ap­ply­ing the above steps the la­bel in the Nau­tilus' con­text menu is changed from Shar­ing Op­tions to Lo­cal Net­work Share. Now every­thing should work fine.

Screen 1. Kali Lin­ux 2022: the re­plac­ing of libnautilus​-share​.so, in or­der to fix the bug "net user­share" has re­turned er­ror 255, caus­es a change of the la­bel in the Nau­tilus' con­text menu. Screen 1. Kali Linux 2022: the replacing of libnautilus-share.so, in order to fix the bug "net usershare" has returned error 255, causes a change of the label in the Nautilus' context menu.

Ref­er­ences

Gen­er­al Sam­ba Refs

Nau­tilus Trou­bleshoot­ing
De­bian pack­ages ma­nip­u­la­tion