[Samba] 3.6.9 samba does not propagate (or show) Linux quota for windows users to see it
Karel Lang AFD
lang at afd.cz
Tue Sep 30 06:43:53 MDT 2014
Thanks Rowland again for much helping out!
Your script looks more tidy :].
It works nicely and if i run it on unix level, then it reports all the
values in one row to CLI and to log file.
But again, when i log in onto windows workstation, and select
'properties' on my (or anybody) HOME folder then (mapped as H:), again i
get reported the used / free space of whole filesystem and not of the
user quota that is forced upon his home folder :[
I have to be missing something or maybe the samba in CentOS is not
compiled with quota support...?
Karel
On 09/30/2014 11:56 AM, Rowland Penny wrote:
> On 30/09/14 10:33, Karel Lang AFD wrote:
>> Hi Rowland,
>> thanks for excellent suggestion - should have thought of it myself.
>> I redirected the "echo $RET" in my script to file to:
>> /tmp/user.quota.log
>>
>> Strange thing is, if I right-click on Windows workstation on my
>> "H:\username" homefolder and pick "properties", than the log show
>> exactly 4 empty rows.
>>
>> Nothing in there, nothing at all, just 4 empty rows
>>
>> cat user.quota.log | wc -l
>> 4
>>
>> Not sure if it would tell you - or anybody anything, but i'm out of
>> ideas ..:[
>>
>> Karel
>>
>>
>>
>> On 09/29/2014 08:00 PM, Rowland Penny wrote:
>>> On 29/09/14 15:03, Karel Lang AFD wrote:
>>>>
>>>> Hi list,
>>>> perhaps someone can help me out?
>>>>
>>>> fact:
>>>> - samba 3.6.9 plus CentOS 6.5
>>>>
>>>> - i have user quotas set up on their HOME directories, which resides
>>>> in the "/home" filesystem
>>>>
>>>> - on windows workstation their disk quota is not shown, instead they
>>>> see whole filesystem free/taken space (which generate much grumbling)
>>>>
>>>>
>>>> After searching lists, googling etc., i decided to give a try the
>>>> "smb.conf" option:
>>>> "get quota command" and written a script to back it up.
>>>>
>>>> so i have got in "smb.conf":
>>>> get quota command = /usr/local/bin/query_quota.sh
>>>>
>>>>
>>>> Script (based on the script that was written by Rick Brown back in
>>>> 2005 that i dug out of samba list):
>>>> ************************************************************************
>>>>
>>>> #!/bin/bash
>>>> PATH=/usr/bin:/usr/sbin:/bin
>>>>
>>>> IAM=`id -un`
>>>>
>>>> # find the user's home file system.
>>>> DIR="home"
>>>>
>>>> #check and see if they're over quota, as it will affect output
>>>> # user with reached quota has 9 fields in row, 'ok' user only 8
>>>> OVER=`/usr/bin/sudo /usr/sbin/repquota /$DIR | grep -w $IAM | wc -w`
>>>>
>>>> # over quota
>>>> if [ $OVER -eq 9 ]; then
>>>> RET=`/usr/bin/sudo /usr/sbin/repquota /$DIR | grep -w $IAM |
>>>> awk -F" " '{print "2 "$3" "$4" "$5" "$7" "$8" "$9}'`
>>>> else
>>>> # not over quota
>>>> RET=`/usr/bin/sudo /usr/sbin/repquota /$DIR | grep -w $IAM |
>>>> awk -F" " '{print "2 "$3" "$4" "$5" "$6" "$7" "$8}'`
>>>> fi
>>>> echo $RET
>>>> ************************************************************************
>>>>
>>>>
>>>> script output if run by user on linux:
>>>> 2 2494580 3300000 3500000 3444 0 0
>>>>
>>>>
>>>> Which should be about right - according to the Manpage of smb.conf
>>>> that says:
>>>>
>>>> "This script should print one line as output with spaces between the
>>>> arguments.
>>>> The arguments are:
>>>>
>>>> · Arg 1 - quota flags (0 = no quotas, 1 = quotas enabled,
>>>> 2 = quotas enabled and
>>>> enforced)
>>>>
>>>> · Arg 2 - number of currently used blocks
>>>>
>>>> · Arg 3 - the softlimit number of blocks
>>>>
>>>> · Arg 4 - the hardlimit number of blocks
>>>>
>>>> · Arg 5 - currently used number of inodes
>>>>
>>>> · Arg 6 - the softlimit number of inodes
>>>>
>>>> · Arg 7 - the hardlimit number of inodes
>>>>
>>>> · Arg 8(optional) - the number of bytes in a
>>>> block(default is 1024)
>>>>
>>>>
>>>> But still i see only report of free / used space on the whole
>>>> Filesystem, that i mapped to windows as H:\username
>>>>
>>>> Anybody could share some insight on this matter?
>>>>
>>>> Thanks a LOT.
>>>>
>>>> Karel Lang
>>>
>>> Hi Karl, have you tried altering the script to dump $RET to a file in
>>> /tmp, this will show you just what the script is actually producing
>>> in use.
>>>
>>> Rowland
>>>
>>
> Hi Karl, I tried your script and I couldn't get it to output anything to
> a temp file until I altered it to this:
>
> #!/bin/bash
> # /usr/local/bin/query_quota.sh
>
> PATH=/usr/bin:/usr/sbin:/bin
>
> IAM=`id -un`
>
> # find the user's home file system.
> DIR="home"
>
> #check and see if they're over quota, as it will affect output
> # user with reached quota has 9 fields in row, 'ok' user only 8
> OVER=$(/usr/sbin/repquota /$DIR | grep -w $IAM | wc -w)
>
> # over quota
> if [ "$OVER" = "9" ]; then
> RET=$(/usr/sbin/repquota /$DIR | grep -w $IAM | awk -F" " '{print
> "2 "$3" "$4" "$5" "$7" "$8" "$9}')
> else
> # not over quota
> RET=$(/usr/sbin/repquota /$DIR | grep -w $IAM | awk -F" " '{print
> "2 "$3" "$4" "$5" "$6" "$7" "$8}')
> fi
>
> echo "$RET"
> echo "$RET" > /tmp/results.txt
>
> exit 0
>
> I also ran these two commands:
>
> chmod +r /home/aquota.group
> chmod +r /home/aquota.user
>
> With the above alterations, I get this in /tmp/results.txt:
>
> 2 157536380 0 0 134072 0 0
>
> Which I think is what you require ;-)
>
> Rowland
More information about the samba
mailing list