#!/bin/bash
# - bof - #



<<'comment'

sudo apt install curl -y;
curl -o ~/uSamba.sh https://www.u150.isdevelopment.us/Ubuntu.Img/SetupSecureNetworkFileSharingServer-Samba/Create_Samba_User-ExpressProcedure/uSamba.sh

chmod +x ~/uSamba.sh; ~/./uSamba.sh;

vim ~/uSamba.sh;



# :A
# -  - #
# - Download Arch.iso - #

# -  - #
# - Arch installation script - #

# - Method   # 1 - #
curl -o ~/uSamba.sh https://www.u150.isdevelopment.us/Ubuntu.Img/SetupSecureNetworkFileSharingServer-Samba/Create_Samba_User-ExpressProcedure/uSamba.sh
chmod +x ~/uSamba.sh; ~/./uSamba.sh;
vim ~/uSamba.sh;

# - Method   # 2 - #
curl -s https://www.u150.isdevelopment.us/Ubuntu.Img/SetupSecureNetworkFileSharingServer-Samba/Create_Samba_User-ExpressProcedure/uSamba.sh \
        -o ~/uSamba.sh && chmod +x ~/uSamba.sh && ~/./uSamba.sh

# - Method   # 3 - #
uS_=uSamba.sh;
curl -s https://www.u150.isdevelopment.us/Ubuntu.Img/SetupSecureNetworkFileSharingServer-Samba/Create_Samba_User-ExpressProcedure/uSamba.sh \
        -o ~/$uS_ && chmod +x ~/$uS_ && ~/./$uS_

# - Method   # 4 - #
uS_=uSamba.sh;
curl -o ~/$uS_  https://www.u150.isdevelopment.us/Ubuntu.Img/SetupSecureNetworkFileSharingServer-Samba/Create_Samba_User-ExpressProcedure/uSamba.sh
chmod +x ~/$uS_; ~/./$uS_;

# - Method   # 5 - #
cd ~/; rm -rf ~/uSamba.sh; vim ~/uSamba.sh;
copy & paste this content
chmod +x ~/uSamba.sh; ~/./uSamba.sh;



# - Configured - #

# -  - #
# - Vim commands - #
https://vim.rtorr.com/

rm -rf ~/.bashrc;
nvim ~/.bashrc;

rm -rf ~/.zshrc;
nvim ~/.zshrc;

ssh-keygen -R 192.168.1.1

# - On client - #
cd ~/.ssh;
ssh-keygen -t rsa;

cat ~/.ssh/id_rsa.pub;

# - On server - #
nvim ~/.ssh/authorized_keys;

sudo apt install curl git htop inxi net-tools ntp neovim tree -y;
sudo pacman -S curl git htop inxi net-tools ntp neovim tree --noconfirm --needed;

comment



aUsr_=($USER);
aPss_='Administrator2';



# -  - #
# - update_ - #
function update_(){
  echo -e "\n\nUpdating system...\n\n";
  sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y;        
  echo -e "\n\nSystem was updated...\n\n\n";
  sleep 10;
}



# -  - #
# - createSmbFolders_ - #
function createSmbFolders_(){
  echo -e "Creating samba folders...\n";

  mkdir -pv /Data/Documents/ToShare-FullAccess;
  mkdir -pv /Data/Documents/ToShare-JustRead;

  sudo chown -R $aUsr_:$aUsr_ /Data/Documents/ToShare-FullAccess;
  sudo chown -R $aUsr_:$aUsr_ /Data/Documents/ToShare-JustRead;

  chmod 777 /Data/Documents/ToShare-FullAccess;
  chmod 777 /Data/Documents/ToShare-JustRead;

  echo -e "\nSamba folders were created successfully...\n\n\n";
  sleep 10;
}



# -  - #
# - installSamba_ - #
function installSamba_(){
  echo -e "Installing samba...\n";

  sudo apt install samba -y;

  echo -e "\nSamba was installed successfully...\n\n\n";
  sleep 10;
}



# -  - #
# - creatingSambaUser_ - #
function creatingSambaUser_(){
  local smbGuest_='smbguest' \
        groupF_=/etc/group \
        passwdF_=/etc/passwd;

  echo -e "Crating & configuring samba user...\n";

  sudo adduser $smbGuest_ --shell=/bin/false --no-create-home --disabled-password --gecos "Samba guest user";
  #          'user:passwd                       user'
  echo $smbGuest_':'$smbGuest_ | sudo chpasswd $smbGuest_;

  echo -e "Adding samba user & administrator user to sambashare group...\n";
  sudo usermod -aG sambashare $smbGuest_;
  sudo usermod -aG sambashare $aUsr_;

  echo -e "Creating samba user password...\n";
  #      passwd                    passwd                              user
  (echo $smbGuest_; sleep 1; echo $smbGuest_ ) | sudo smbpasswd -s -a $smbGuest_;
  (echo $aPss_; sleep 1; echo $aPss_ ) | sudo smbpasswd -s -a $aUsr_;

  echo -e "Enabling samba user...\n";
  #                  user
  sudo smbpasswd -e $smbGuest_;
  sudo smbpasswd -e $aUsr_;

  cat $groupF_ | grep $smbGuest_;
  cat $groupF_ | grep $aUsr_;

  cat $passwdF_ | grep $smbGuest_;
  cat $passwdF_ | grep $aUsr_;

  echo -e "\n\nSamba user was created & configured successfully...\n\n\n";
  sleep 10;
}



# -  - #
# - configuringSambaFile_ - #
function configuringSambaFile_(){
  local sF_=/etc/samba/smb.conf \
        tSf_=~/Smb.tmp;

  echo -e "Configuring samba file...\n";

  sudo rm -rf $tSf_;



cat <<EOT >> $tSf_;

# -  - #
# - Samba configuration file location - #
# - sudo vim /etc/samba/smb.conf - #

# -  - #
# - Configured - #
# -  - #



[global]

   workgroup = L_IS
   wins support = yes
   name resolve order = lmhosts host wins bcast

   # - For full linux installation only - #
   # - Don't use this line in dedicated server - #
   security = user



#### Networking ####

;   interfaces = 127.0.0.0/8 eth0
;   bind interfaces only = yes



#### Debugging/Accounting ####

   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d



####### Authentication #######

   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



########## Domains ###########

;   logon path = \\%N\profiles\%U
;   logon drive = H:
;   logon script = logon.cmd
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
; add group script = /usr/sbin/addgroup --force-badname %g



############ Misc ############

;   include = /home/samba/etc/smb.conf.%m
;   idmap config * :              backend = tdb
;   idmap config * :              range   = 3000-7999
;   idmap config YOURDOMAINHERE : backend = tdb
;   idmap config YOURDOMAINHERE : range   = 100000-999999
;   template shell = /bin/bash



#======================= Share Definitions =======================

[homes]
   comment = Home Directories
   browseable = no
   read only = yes
   create mask = 0700
   directory mask = 0700
   valid users = %S

;[netlogon]
;   comment = Network Logon Service
;   path = /home/samba/netlogon
;   guest ok = yes
;   read only = yes

;[profiles]
;   comment = Users profiles
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700

[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
;  write list = root, @lpadmin



#======================= Personal shared folders =======================

[ToShare-FullAccess]
    comment = ToShare-FullAccess to everybody in the net
    path = /Data/Documents/ToShare-FullAccess
    writeable = yes
    browseable = yes
    guest ok = no
    create mask = 0777
    valid users = $aUsr_, smbguest

[ToShare-JustRead]
    comment = ToShare-JustRead to everybody in the net
    path = /Data/Documents/ToShare-JustRead
    writeable = no
    browseable = yes
    guest ok = no
    create mask = 0755
    valid users = $aUsr_, smbguest


EOT


  sed -i "s/adminUser_/"$aUsr_"/" $sF_;

  sudo rm -rf $sF_;
  sudo mv $tSf_ $sF_;



  echo -e "\nRestarting samba service...\n";
  sudo systemctl enable smbd.service nmbd.service;
  sudo systemctl start smbd.service nmbd.service;



  echo -e "\n\nSamba file was configured successfully...\n\n\n";
  sleep 10;
}



clear;
update_;
createSmbFolders_;
installSamba_;
creatingSambaUser_;
configuringSambaFile_;



echo -e "\n\nSystem shall restart to reflect changes...\n\n\n";
sleep 15;



sudo reboot now;



<<'comment'
cd ~/; rm -rf ~/uSamba.sh; vim ~/uSamba.sh;
copy & paste this content
chmod +x ~/uSamba.sh.sh; ~/./uSamba.sh;
comment



# eof #
