Skip to content

Commit 4f5967a

Browse files
author
Till Brehm
committed
Fixed #4721 Wrong permissions when renaming shell user
1 parent 14a1204 commit 4f5967a

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

server/plugins-available/shelluser_base_plugin.inc.php

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,9 @@ function update($event_name, $data) {
226226
$homedir_old = $data['old']['dir'].'/home/'.$data['old']['username'];
227227
}
228228

229+
$app->log("Homedir New: ".$homedir, LOGLEVEL_DEBUG);
230+
$app->log("Homedir Old: ".$homedir_old, LOGLEVEL_DEBUG);
231+
229232
// Check if the user that we want to update exists, if not, we insert it
230233
if($app->system->is_user($data['old']['username'])) {
231234
//* Remove webfolder protection
@@ -246,16 +249,27 @@ function update($event_name, $data) {
246249
$app->log("Executed command: $command ",LOGLEVEL_DEBUG);
247250
*/
248251
//$groupinfo = $app->system->posix_getgrnam($data['new']['pgroup']);
249-
if($homedir != $homedir_old && !is_dir($homedir)){
252+
if($homedir != $homedir_old){
250253
$app->system->web_folder_protection($web['document_root'], false);
251-
if(!is_dir($data['new']['dir'].'/home')){
254+
// Rename dir, in case the new directory exists already.
255+
if(is_dir($homedir)) {
256+
$app->log("New Homedir exists, renaming it to ".$homedir.'_bak', LOGLEVEL_DEBUG);
257+
$app->system->rename(escapeshellcmd($homedir),escapeshellcmd($homedir.'_bak'));
258+
}
259+
/*if(!is_dir($data['new']['dir'].'/home')){
252260
$app->file->mkdirs(escapeshellcmd($data['new']['dir'].'/home'), '0750');
253261
$app->system->chown(escapeshellcmd($data['new']['dir'].'/home'),escapeshellcmd($data['new']['puser']));
254262
$app->system->chgrp(escapeshellcmd($data['new']['dir'].'/home'),escapeshellcmd($data['new']['pgroup']));
255263
}
256264
$app->file->mkdirs(escapeshellcmd($homedir), '0755');
257265
$app->system->chown(escapeshellcmd($homedir),'root');
258-
$app->system->chgrp(escapeshellcmd($homedir),'root');
266+
$app->system->chgrp(escapeshellcmd($homedir),'root');*/
267+
268+
// Move old directory to new path
269+
$app->system->rename(escapeshellcmd($homedir_old),escapeshellcmd($homedir));
270+
$app->file->mkdirs(escapeshellcmd($homedir), '0750');
271+
$app->system->chown(escapeshellcmd($homedir),escapeshellcmd($data['new']['puser']));
272+
$app->system->chgrp(escapeshellcmd($homedir),escapeshellcmd($data['new']['pgroup']));
259273
$app->system->web_folder_protection($web['document_root'], true);
260274
} else {
261275
if(!is_dir($homedir)){

server/plugins-available/shelluser_jailkit_plugin.inc.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,11 @@ function _add_jailkit_user()
350350

351351
//add the user to the chroot
352352
$jailkit_chroot_userhome = $this->_get_home_dir($this->data['new']['username']);
353+
if(isset($this->data['old']['username'])) {
354+
$jailkit_chroot_userhome_old = $this->_get_home_dir($this->data['old']['username']);
355+
} else {
356+
$jailkit_chroot_userhome_old = '';
357+
}
353358
$jailkit_chroot_puserhome = $this->_get_home_dir($this->data['new']['puser']);
354359

355360
if(!is_dir($this->data['new']['dir'].'/etc')) mkdir($this->data['new']['dir'].'/etc', 0755);
@@ -398,13 +403,19 @@ function _add_jailkit_user()
398403

399404
$this->app->log("Added jailkit user to chroot with command: ".$command, LOGLEVEL_DEBUG);
400405

401-
if(!is_dir($this->data['new']['dir'].$jailkit_chroot_userhome)) mkdir(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), 0755, true);
406+
if(!is_dir($this->data['new']['dir'].$jailkit_chroot_userhome)) {
407+
if(is_dir($this->data['old']['dir'].$jailkit_chroot_userhome_old)) {
408+
$app->system->rename(escapeshellcmd($this->data['old']['dir'].$jailkit_chroot_userhome_old),escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome));
409+
} else {
410+
mkdir(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), 0750, true);
411+
}
412+
}
402413
$app->system->chown(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), $this->data['new']['username']);
403414
$app->system->chgrp(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_userhome), $this->data['new']['pgroup']);
404415

405416
$this->app->log("Added created jailkit user home in : ".$this->data['new']['dir'].$jailkit_chroot_userhome, LOGLEVEL_DEBUG);
406417

407-
if(!is_dir($this->data['new']['dir'].$jailkit_chroot_puserhome)) mkdir(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_puserhome), 0755, true);
418+
if(!is_dir($this->data['new']['dir'].$jailkit_chroot_puserhome)) mkdir(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_puserhome), 0750, true);
408419
$app->system->chown(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_puserhome), $this->data['new']['puser']);
409420
$app->system->chgrp(escapeshellcmd($this->data['new']['dir'].$jailkit_chroot_puserhome), $this->data['new']['pgroup']);
410421

0 commit comments

Comments
 (0)