tbrehm
2012-01-03 236d796455c44b0ca40ca6582ae1fbb614f8bf21
Fixed: FS#1858 - Old SSH-RSA Public Key not deleted from authorized_keys when deleted or changed
2 files modified
49 ■■■■ changed files
server/plugins-available/shelluser_base_plugin.inc.php 23 ●●●● patch | view | raw | blame | history
server/plugins-available/shelluser_jailkit_plugin.inc.php 26 ●●●● patch | view | raw | blame | history
server/plugins-available/shelluser_base_plugin.inc.php
@@ -254,11 +254,27 @@
            $app->file->remove_blank_lines($sshkeys);
            $this->app->log("ssh-rsa authorisation keyfile created in ".$sshkeys,LOGLEVEL_DEBUG);
        }
        if ($sshrsa != ''){
            // Remove duplicate keys
        //* Get the keys
            $existing_keys = file($sshkeys);
            $new_keys = explode("\n", $sshrsa);
        $old_keys = explode("\n",$this->data['old']['ssh_rsa']);
        //* Remove all old keys
        if(is_array($old_keys)) {
            foreach($old_keys as $key => $val) {
                $k = array_search(trim($val),$existing_keys);
                unset($existing_keys[$k]);
            }
        }
        //* merge the remaining keys and the ones fom the ispconfig database.
        if(is_array($new_keys)) {
            $final_keys_arr = array_merge($existing_keys, $new_keys);
        } else {
            $final_keys_arr = $existing_keys;
        }
            $new_final_keys_arr = array();
            if(is_array($final_keys_arr) && !empty($final_keys_arr)){
                foreach($final_keys_arr as $key => $val){
@@ -271,9 +287,8 @@
            file_put_contents($sshkeys, $final_keys);
            $app->file->remove_blank_lines($sshkeys);
            $this->app->log("ssh-rsa key updated in ".$sshkeys,LOGLEVEL_DEBUG);
        }
        // set proper file permissions
        // exec("chown -R ".escapeshellcmd($this->data['new']['puser']).":".escapeshellcmd($this->data['new']['pgroup'])." ".$usrdir);
        exec("chown -R ".escapeshellcmd($this->data['new']['puser']).":".escapeshellcmd($this->data['new']['pgroup'])." ".$sshdir);
        exec("chmod 600 '$sshkeys'");
        
server/plugins-available/shelluser_jailkit_plugin.inc.php
@@ -91,7 +91,7 @@
                
                $this->_add_jailkit_user();
                
                // call the ssh-rsa update function
                //* call the ssh-rsa update function
                $this->_setup_ssh_rsa();
                
                $command .= 'usermod -s /usr/sbin/jk_chrootsh -U '.escapeshellcmd($data['new']['username']);
@@ -132,7 +132,7 @@
                $this->_setup_jailkit_chroot();
                $this->_add_jailkit_user();
                
                // call the ssh-rsa update function
                //* call the ssh-rsa update function
                $this->_setup_ssh_rsa();
                
                $this->_update_website_security_level();
@@ -392,11 +392,26 @@
            $app->file->remove_blank_lines($sshkeys);
            $this->app->log("ssh-rsa authorisation keyfile created in ".$sshkeys,LOGLEVEL_DEBUG);
        }
        if ($sshrsa != ''){
            // Remove duplicate keys
        //* Get the keys
            $existing_keys = file($sshkeys);
            $new_keys = explode("\n", $sshrsa);
        $old_keys = explode("\n",$this->data['old']['ssh_rsa']);
        //* Remove all old keys
        if(is_array($old_keys)) {
            foreach($old_keys as $key => $val) {
                $k = array_search(trim($val),$existing_keys);
                unset($existing_keys[$k]);
            }
        }
        //* merge the remaining keys and the ones fom the ispconfig database.
        if(is_array($new_keys)) {
            $final_keys_arr = array_merge($existing_keys, $new_keys);
        } else {
            $final_keys_arr = $existing_keys;
        }
            $new_final_keys_arr = array();
            if(is_array($final_keys_arr) && !empty($final_keys_arr)){
                foreach($final_keys_arr as $key => $val){
@@ -409,9 +424,8 @@
            file_put_contents($sshkeys, $final_keys);
            $app->file->remove_blank_lines($sshkeys);
            $this->app->log("ssh-rsa key updated in ".$sshkeys,LOGLEVEL_DEBUG);
        }
        // set proper file permissions
        // exec("chown -R ".escapeshellcmd($this->data['new']['puser']).":".escapeshellcmd($this->data['new']['pgroup'])." ".$usrdir);
        exec("chown -R ".escapeshellcmd($this->data['new']['puser']).":".escapeshellcmd($this->data['new']['pgroup'])." ".$sshdir);
        exec("chmod 700 ".$sshdir);
        exec("chmod 600 '$sshkeys'");