Backup Samba USER sids

Post date: Oct 21, 2016 1:22:21 PM

Simple bash script 

Requirements

samba_backup_users_sids.bash

#!/bin/bash

PDBEDIT=$(which pdbedit)

SQLITE=$(which sqlite3)

DB=/etc/samba/backup_users_sid.sqlite

function _create_db() {

 echo "CREATE TABLE users (uid INT primary key,sid);" | $SQLITE "${DB}"

}

if [ ! -e "${DB}" ]; then

 _create_db

fi

function _sid_lookup() {

 USERN=$1

 $PDBEDIT -L -v "${USERN}" | while IFS=":" read KEY VALUE; do

  case "${KEY}" in

   "User SID") echo "${VALUE// /}";;

  esac

 done

}

$PDBEDIT -L | while IFS=":" read USERN USERUID TRASH; do

 if [ "${USERN}" == "${USERN/\$/}" ]; then

  SID=$(_sid_lookup "${USERN}")

  echo "INSERT OR IGNORE INTO users (uid,sid) VALUES ('${USERUID}','${SID}');" | $SQLITE "${DB}"

 fi

done

Example restore

Example Restore

  if [ -e /etc/samba/backup_users_sid.sqlite ]; then

   SID=$(/usr/bin/sqlite3 /etc/samba/backup_users_sid.sqlite "SELECT sid FROM users WHERE uid=${uid}")

  else

   SID=""

  fi

  if [ -z "${SID}" ]; then

   (echo "${password}"; echo "${password}";) | /usr/bin/pdbedit -t -a -u "${username}" > /dev/null 2>&1

  else

   (echo "${password}"; echo "${password}";) | /usr/bin/pdbedit -t -a -U ${SID} -u "${username}" > /dev/null 2>&1

  fi