Task: Apply ZFS user quota to Smaba
Source:
zpool with samba user home folders: poolz2/samba/usersAllow request about quota for everyone:
zfs allow everyone userquota,userused poolz2/samba/users
Set usrer quota 120G for domain user : DOMAIN\username
zfs set userquota@"DOMAIN\username"=120G poolz2/samba/users
Tune SAMBA, /usr/local/etc/smb4.conf:
get quota command = /mnt/poolz2/home/scripts/quota_get.sh %U %D
Reload SAMBA:
killall -HUP smbd
Or change via GUI of FreeNAS
| Example of GUI of SMB Services (FreeNAS11.2), add quota. |
Soulution:
Script for get quota data: /mnt/poolz2/home/scripts/quota_get.sh#!/bin/sh
rtype=$4
if [ "${rtype}" == -1 ]; then
exit
fi
username=$1
if [ ! -z "$username" ]; then
domainname=$2
requestpath=${PWD}
DATASETNAME=`/bin/df -l ${requestpath} | /usr/bin/tail -n 1 | /usr/bin/awk '{ print $1 };'`
info=`/sbin/zfs userspace -Hp ${DATASETNAME} | /usr/bin/grep -i ${domainname}'\\\\'${username}`
usedbytes=`echo ${info}| /usr/bin/awk '{ printf "%.f", $4/1024 };'`;
quotabytes=`echo ${info}| /usr/bin/awk '{ if ( $5 == "none" ) { print "0"} else { printf "%.f", $5/1024 } };'`;
if [ "$quotabytes" != 0 ]; then
echo 2 $usedbytes $quotabytes $quotabytes $usedbytes $quotabytes $quotabytes
fi
fi
exit
| Example of GUI of Sharing SMB (FreeNAS11.2). |
#!/bin/sh
USERS_DATASET=poolz2/samba/users
DOMAINNAME=SOMEDOMAIN
DEFAULT_QUOTA=80G
/sbin/zfs allow everyone userquota,userused ${USERS_DATASET}
mountpoint=`/bin/df -l ${USERS_DATASET} | /usr/bin/tail -n 1 | /usr/bin/awk '{ print $6 };'`
for file in ${mountpoint}/*; do
USERNAME=$(/usr/bin/basename "$file")
LOGON=${DOMAINNAME}\\${USERNAME}
QUOTA=`/sbin/zfs get -H "userquota@${LOGON}" ${USERS_DATASET} | /usr/bin/awk '{ print $3 };'`
#echo ${LOGON} : ${QUOTA}
if [ "$QUOTA" == "none" ];then
/sbin/zfs set "userquota@${LOGON}=${DEFAULT_QUOTA}" ${USERS_DATASET}
#echo Was set default quota ${DEFAULT_QUOTA} for ${LOGON}
fi
done
#/sbin/zfs userspace ${USERS_DATASET}
More:
Немає коментарів:
Дописати коментар