From 2bbc4c7761a6d0e97cc8f22bccbea94835fcbc7d Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Fri, 28 Aug 2009 06:55:06 -0400 Subject: [PATCH] Add the website user and group also to the passwd and group files in chroot enviroment. --- server/plugins-available/shelluser_base_plugin.inc.php | 29 ++++++++++++++++++++++------- 1 files changed, 22 insertions(+), 7 deletions(-) diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php index 151dfda..3f86b42 100755 --- a/server/plugins-available/shelluser_base_plugin.inc.php +++ b/server/plugins-available/shelluser_base_plugin.inc.php @@ -77,16 +77,22 @@ $uid = intval($app->system->getuid($data['new']['puser'])); if($uid > $this->min_uid) { $command = 'useradd'; - $command .= ' --home '.escapeshellcmd($data['new']['dir']); - $command .= ' --gid '.escapeshellcmd($data['new']['pgroup']); - $command .= ' --non-unique '; - $command .= ' --password '.escapeshellcmd($data['new']['password']); - $command .= ' --shell '.escapeshellcmd($data['new']['shell']); - $command .= ' --uid '.escapeshellcmd($uid); + $command .= ' -d '.escapeshellcmd($data['new']['dir']); + $command .= ' -g '.escapeshellcmd($data['new']['pgroup']); + $command .= ' -o '; // non unique + if($data['new']['password'] != '') $command .= ' -p '.escapeshellcmd($data['new']['password']); + $command .= ' -s '.escapeshellcmd($data['new']['shell']); + $command .= ' -u '.escapeshellcmd($uid); $command .= ' '.escapeshellcmd($data['new']['username']); exec($command); + $app->log("Executed command: ".$command,LOGLEVEL_DEBUG); $app->log("Added shelluser: ".$data['new']['username'],LOGLEVEL_DEBUG); + + //* Create .bash_history file + exec('touch '.escapeshellcmd($data['new']['dir']).'/.bash_history'); + exec('chmod 755 '.escapeshellcmd($data['new']['dir']).'/.bash_history'); + exec('chown '.escapeshellcmd($data['new']['username']).':'.escapeshellcmd($data['new']['pgroup']).' '.escapeshellcmd($data['new']['dir']).'/.bash_history'); //* Disable shell user temporarily if we use jailkit if($data['new']['chroot'] == 'jailkit') { @@ -125,8 +131,17 @@ $command .= ' '.escapeshellcmd($data['old']['username']); exec($command); - // $app->log("Updated shelluser: $command ",LOGLEVEL_DEBUG); + $app->log("Executed command: $command ",LOGLEVEL_DEBUG); $app->log("Updated shelluser: ".$data['old']['username'],LOGLEVEL_DEBUG); + + + //* Create .bash_history file + if(!is_file($data['new']['dir']).'/.bash_history') { + exec('touch '.escapeshellcmd($data['new']['dir']).'/.bash_history'); + exec('chmod 755 '.escapeshellcmd($data['new']['dir']).'/.bash_history'); + exec('chown '.escapeshellcmd($data['new']['username']).':'.escapeshellcmd($data['new']['pgroup']).' '.escapeshellcmd($data['new']['dir']).'/.bash_history'); + } + } else { // The user does not exist, so we insert it now $this->insert($event_name,$data); -- Gitblit v1.9.1