Fix system users: sudoers and nested sudo

This commit is contained in:
2026-06-06 18:43:24 -04:00
parent a55542564e
commit e0c4ec7a53

View File

@@ -1560,12 +1560,18 @@ class ServerController
}
$homeFlag = $createHome ? '-m' : '-M';
$cmd = "sudo useradd {$homeFlag} -p \$(sudo openssl passwd -6 '{$password}')";
$groupsFlag = '';
if (!empty($groups)) {
$sanitized = preg_replace('/[^a-z0-9_,-]/', '', $groups);
$cmd .= " -G {$sanitized}";
$groupsFlag = " -G {$sanitized}";
}
$cmd = "sudo useradd {$homeFlag}{$groupsFlag} {$username} 2>&1; echo EXIT:\$?";
$result = $ssh->exec($cmd);
$exitCode = (int) trim(explode('EXIT:', $result['output'] ?? 'EXIT:-1')[1] ?? '-1');
if ($exitCode === 0) {
$b64 = base64_encode("{$username}:{$password}");
$ssh->exec("echo {$b64} | base64 -d | sudo chpasswd 2>&1");
}
$cmd .= " {$username} 2>&1; echo EXIT:\$?";
$result = $ssh->exec($cmd);
$exitCode = (int) trim(explode('EXIT:', $result['output'] ?? 'EXIT:-1')[1] ?? '-1');