SuexecUserGroup on Apache 2.0 and 'User cannot occur' error

dwm

Verified User
Joined
Dec 4, 2007
Messages
65
Location
Netherlands
I am using Apache 2.0. After i added users the system did a rewrite of the ips.conf and that config is using an if/else procedure. Check the default template:

cp /usr/local/directadmin/data/templates/ips_virtual_host.conf /usr/local/directadmin/data/templates/custom/ips_virtual_host.conf

pico /usr/local/directadmin/data/templates/custom/ips_virtual_host.conf
<VirtualHost |IP|:80>
ServerName shared.domain
ScriptAliasMatch ^/~([^/]+)/+cgi-bin/+(.*) /home/$1/public_html/cgi-bin/$2
AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2
DocumentRoot |DOCROOT|
|*if APACHE_VER="2.0"|
SuexecUserGroup |USER| |GROUP|
|*else|
User |USER|
Group |GROUP|
|*endif|
CustomLog /var/log/httpd/homedir.log homedir
</VirtualHost>

<VirtualHost |IP|:443>
SSLEngine on
SSLCertificateFile |CERT|
SSLCertificateKeyFile |KEY|
ServerName shared.domain
ScriptAliasMatch ^/~([^/]+)/+cgi-bin/+(.*) /home/$1/public_html/cgi-bin/$2
AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2
DocumentRoot |DOCROOT|
|*if APACHE_VER="2.0"|
SuexecUserGroup |USER| |GROUP|
|*else|
User |USER|
Group |GROUP|
|*endif|
CustomLog /var/log/httpd/homedir.log homedir
</VirtualHost>

You can configure your apache version if it is incorrect defined in your config by editing /usr/local/directadmin/custombuild/options.conf . I use the 2.0 version, so you would expect DirectAdmin should write 'SuexecUserGroup customer' instead of 'User customer
Group customer'. But that is not true. For some reason DirectAdmin writes the last one if you are using the 2.0 version.

# /etc/init.d/httpd start
Starting httpd: Syntax error on line 15 of /etc/httpd/conf/ips.conf:
User cannot occur within <VirtualHost> section

I cant get this to work so i just deleted the if/else/endif from the template. Now Directadmin doesnt have to make choices anymore and my config is always correct for the time i use apache 2.0.

My new template looks like this:
<VirtualHost |IP|:80>
ServerName shared.domain
ScriptAliasMatch ^/~([^/]+)/+cgi-bin/+(.*) /home/$1/public_html/cgi-bin/$2
AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2
DocumentRoot |DOCROOT|
SuexecUserGroup |USER| |GROUP|
CustomLog /var/log/httpd/homedir.log homedir
</VirtualHost>

<VirtualHost |IP|:443>
SSLEngine on
SSLCertificateFile |CERT|
SSLCertificateKeyFile |KEY|
ServerName shared.domain
ScriptAliasMatch ^/~([^/]+)/+cgi-bin/+(.*) /home/$1/public_html/cgi-bin/$2
AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2
DocumentRoot |DOCROOT|
SuexecUserGroup |USER| |GROUP|
CustomLog /var/log/httpd/homedir.log homedir
</VirtualHost>
 
Last edited:
After half an our i added a subdomain, and then the problem occured again. For workaround i changed all templates and replaced the User/Group with:
SuexecUserGroup |USER| |GROUP|

All templates i copied:
cp /usr/local/directadmin/data/templates/virtual_host*.conf /usr/local/directadmin/data/templates/custom/

cp /usr/local/directadmin/data/templates/redirect_virtual_host.conf /usr/local/directadmin/data/templates/custom/redirect_virtual_host.conf

All templates i changed:
/usr/local/directadmin/data/templates/custom/ips_virtual_host.conf
/usr/local/directadmin/data/templates/custom/redirect_virtual_host.conf
/usr/local/directadmin/data/templates/custom/virtual_host2.conf
/usr/local/directadmin/data/templates/custom/virtual_host2_secure.conf
/usr/local/directadmin/data/templates/custom/virtual_host2_secure_sub.conf
/usr/local/directadmin/data/templates/custom/virtual_host2_sub.conf
/usr/local/directadmin/data/templates/custom/virtual_host.conf
/usr/local/directadmin/data/templates/custom/virtual_host_secure.conf
/usr/local/directadmin/data/templates/custom/virtual_host_secure_sub.conf
/usr/local/directadmin/data/templates/custom/virtual_host_sub.conf

After that a rewrite:

cd /usr/local/directadmin/custombuild/
./build rewrite_confs
/etc/init.d/httpd stop
killall httpd
/etc/init.d/httpd start

And for now it works again :)
 
Last edited:
If anyone has this problem, just do:
Code:
echo "action=rewrite&value=ips" >> /usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq

And it should work :)
 
Back
Top