From 236d796455c44b0ca40ca6582ae1fbb614f8bf21 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Tue, 03 Jan 2012 06:08:04 -0500 Subject: [PATCH] Fixed: FS#1858 - Old SSH-RSA Public Key not deleted from authorized_keys when deleted or changed --- server/plugins-available/apache2_plugin.inc.php | 40 +++++++++++++++++++++++++++++++++------- 1 files changed, 33 insertions(+), 7 deletions(-) diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index bd93b51..3cba835 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -587,6 +587,7 @@ $app->system->add_user_to_group($groupname, escapeshellcmd($web_config['user'])); //* Chown all default directories + $this->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root'])); $this->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root'].'/cgi-bin')); $this->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root'].'/log')); $this->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root'].'/ssl')); @@ -610,11 +611,20 @@ } else { $this->_exec('chmod 755 '.escapeshellcmd($data['new']['document_root'])); - $this->_exec('chmod 755 '.escapeshellcmd($data['new']['document_root'].'/*')); - $this->_exec('chown root:root '.escapeshellcmd($data['new']['document_root'])); - + $this->_exec('chmod 755 '.escapeshellcmd($data['new']['document_root'].'/cgi-bin')); + $this->_exec('chmod 755 '.escapeshellcmd($data['new']['document_root'].'/log')); + $this->_exec('chmod 755 '.escapeshellcmd($data['new']['document_root'].'/ssl')); + $this->_exec('chmod 755 '.escapeshellcmd($data['new']['document_root'].'/web')); + // make temp directory writable for Apache and the website users $this->_exec('chmod 777 '.escapeshellcmd($data['new']['document_root'].'/tmp')); + + $this->_exec('chown root:root '.escapeshellcmd($data['new']['document_root'])); + $this->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root'].'/cgi-bin')); + $this->_exec('chown root:root '.escapeshellcmd($data['new']['document_root'].'/log')); + $this->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root'].'/tmp')); + $this->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root'].'/ssl')); + $this->_exec('chown '.$username.':'.$groupname.' '.escapeshellcmd($data['new']['document_root'].'/web')); } } @@ -1105,7 +1115,13 @@ if($apache_online_status_before_restart && !$apache_online_status_after_restart) { $app->log('Apache did not restart after the configuration change for website '.$data['new']['domain'].' Reverting the configuration. Saved non-working config as '.$vhost_file.'.err',LOGLEVEL_WARN); copy($vhost_file,$vhost_file.'.err'); - copy($vhost_file.'~',$vhost_file); + if(is_file($vhost_file.'~')) { + //* Copy back the last backup file + copy($vhost_file.'~',$vhost_file); + } else { + //* There is no backup file, so we create a empty vhost file with a warning message inside + file_put_contents($vhost_file,"# Apache did not start after modifying this vhost file.\n# Please check file $vhost_file.err for syntax errors."); + } $app->services->restartService('httpd','restart'); } } else { @@ -1325,12 +1341,18 @@ } //* Create the folder path, if it does not exist - if(!is_dir($folder_path)) exec('mkdir -p '.$folder_path); + if(!is_dir($folder_path)) { + exec('mkdir -p '.$folder_path); + chown($folder_path,$website['system_user']); + chgrp($folder_path,$website['system_group']); + } //* Create empty .htpasswd file, if it does not exist if(!is_file($folder_path.'.htpasswd')) { touch($folder_path.'.htpasswd'); chmod($folder_path.'.htpasswd',0755); + chown($folder_path.'.htpasswd',$website['system_user']); + chgrp($folder_path.'.htpasswd',$website['system_group']); $app->log('Created file '.$folder_path.'.htpasswd',LOGLEVEL_DEBUG); } @@ -1368,7 +1390,9 @@ //if(!is_file($folder_path.'.htaccess')) { $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$folder_path.".htpasswd\nrequire valid-user"; file_put_contents($folder_path.'.htaccess',$ht_file); - chmod($folder_path.'.htpasswd',0755); + chmod($folder_path.'.htaccess',0755); + chown($folder_path.'.htaccess',$website['system_user']); + chgrp($folder_path.'.htaccess',$website['system_group']); $app->log('Created file '.$folder_path.'.htaccess',LOGLEVEL_DEBUG); //} @@ -1480,7 +1504,9 @@ $ht_file = "AuthType Basic\nAuthName \"Members Only\"\nAuthUserFile ".$new_folder_path.".htpasswd\nrequire valid-user"; file_put_contents($new_folder_path.'.htaccess',$ht_file); chmod($new_folder_path.'.htpasswd',0755); - $app->log('Created file '.$new_folder_path.'.htaccess',LOGLEVEL_DEBUG); + chown($folder_path.'.htpasswd',$website['system_user']); + chgrp($folder_path.'.htpasswd',$website['system_group']); + $app->log('Created file '.$new_folder_path.'.htpasswd',LOGLEVEL_DEBUG); } //* Remove .htaccess file -- Gitblit v1.9.1