Difference between revisions of "Automatically setting quotaugidlimit"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
(Initial placeholder for page)
 
Line 1: Line 1:
Place holder for user MaddinXx to share their shell script.
+
If you are using second-level user/group quota for your containers, you have to take care that the value at every moment is high enough. Otherwise, newly created users and groups within the VE won't be able to own files.
 +
 
 +
Rather than checking these values from time to time by hand, you can use the shell script from below to automatically set the quotaugidlimit based on the needs of the individual containers. Just setup a cronjob for it.
 +
 
 +
<h2>Script</h2>
 +
 
 +
<pre>#!/bin/bash
 +
 
 +
# If one of these files does not exist then something
 +
# is really broken
 +
[ -d /etc/vz/conf ] || exit 1
 +
 
 +
# get all configured VEs
 +
FILES=/etc/vz/conf/*.conf
 +
 
 +
# loop through all VEs
 +
for file in $FILES
 +
do
 +
# source the config file
 +
. $file
 +
 
 +
# check if quotaugidlimit is set
 +
if grep -q "QUOTAUGIDLIMIT" $file
 +
then
 +
# get current quotaugidlimit
 +
STRING=`grep "QUOTAUGIDLIMIT" $file`
 +
VALUE=${STRING##*QUOTAUGIDLIMIT=\"}
 +
INT=${VALUE%?}
 +
 
 +
# check if quotaugidlimit is > 0
 +
if [ $INT != 0 ];
 +
then
 +
# get configfile name
 +
CONFFILE=`basename $file`
 +
VEID=${CONFFILE%.*}
 +
 
 +
# run commands "inside" the VE
 +
USERC=`cat $VE_PRIVATE$VEID/etc/passwd | wc -l`
 +
GROUPC=`cat $VE_PRIVATE$VEID/etc/group | wc -l`
 +
TOTAL=$(($USERC + $GROUPC + 15))
 +
 
 +
# set the new quotaugidlimit for container
 +
vzctl set $VEID --quotaugidlimit $TOTAL --save
 +
fi
 +
fi
 +
done
 +
</pre>
 +
 
 +
This will check for current users/groups count and increate the value by 15 - and set it as a new limit for the container.

Revision as of 22:47, 12 February 2013

If you are using second-level user/group quota for your containers, you have to take care that the value at every moment is high enough. Otherwise, newly created users and groups within the VE won't be able to own files.

Rather than checking these values from time to time by hand, you can use the shell script from below to automatically set the quotaugidlimit based on the needs of the individual containers. Just setup a cronjob for it.

Script

#!/bin/bash

# If one of these files does not exist then something
# is really broken
[ -d /etc/vz/conf ] || exit 1

# get all configured VEs
FILES=/etc/vz/conf/*.conf

# loop through all VEs
for file in $FILES
do
	# source the config file
	. $file

	# check if quotaugidlimit is set
	if grep -q "QUOTAUGIDLIMIT" $file
	then
		# get current quotaugidlimit
		STRING=`grep "QUOTAUGIDLIMIT" $file`
		VALUE=${STRING##*QUOTAUGIDLIMIT=\"}
		INT=${VALUE%?}

		# check if quotaugidlimit is > 0
		if [ $INT != 0 ];
		then
			# get configfile name
			CONFFILE=`basename $file`
			VEID=${CONFFILE%.*}

			# run commands "inside" the VE
			USERC=`cat $VE_PRIVATE$VEID/etc/passwd | wc -l`
			GROUPC=`cat $VE_PRIVATE$VEID/etc/group | wc -l`
			TOTAL=$(($USERC + $GROUPC + 15))

			# set the new quotaugidlimit for container
			vzctl set $VEID --quotaugidlimit $TOTAL --save
		fi
	fi
done

This will check for current users/groups count and increate the value by 15 - and set it as a new limit for the container.