{"ReconnectionTime", store_time,ITEM(res_dir.reconnection_time), 0, ITEM_DEFAULT, 60 * 45},
{"AllowedBackupDirectories", store_alist_str, ITEM(res_dir.allowed_backup_dirs), 0, 0, 0},
{"ExlcudedBackupDirectories", store_alist_str, ITEM(res_dir.excluded_backup_dirs), 0, 0, 0},
- {"AllowedScriptDirectories", store_alist_str, ITEM(res_dir.allowed_script_dirs), 0, 0, 0},
+ {"AllowedScriptDirectories", store_alist_str, ITEM(res_dir.allowed_script_dirs), 0, 0, 0},
{"AllowedRestoreDirectories", store_alist_str, ITEM(res_dir.allowed_restore_dirs), 0, 0, 0},
+ {"BackupJobUser", store_str, ITEM(res_dir.backup_job_user), 0, 0, 0},
+ {"RestoreJobUser", store_str, ITEM(res_dir.restore_job_user), 0, 0, 0},
{NULL, NULL, {0}, 0, 0, 0}
};
if (res->res_dir.allowed_restore_dirs) {
delete res->res_dir.allowed_restore_dirs;
}
+ if (res->res_dir.backup_job_user) {
+ free(res->res_dir.backup_job_user);
+ }
+ if (res->res_dir.restore_job_user) {
+ free(res->res_dir.restore_job_user);
+ }
break;
case R_CONSOLE:
if (res->res_cons.dirinfo.password) {
dir->fsend(OKbackup);
Dmsg1(110, "filed>dird: %s", dir->msg);
+ /* Change the user if needed */
+ if (!set_job_user(jcr)) {
+ dir->fsend(BADcmd, "backup");
+ goto cleanup;
+ }
+
/*
* Send Append Open Session to Storage daemon
*/
}
cleanup:
+ /* Reset the user if */
+ reset_job_user(jcr);
#if defined(WIN32_VSS)
if (jcr->Snapshot) {
Win32ConvCleanupCache();
}
#endif
- set_job_user(jcr);
+ /* Change the user if needed */
+ if (!set_job_user(jcr)) {
+ dir->fsend(BADjob);
+ goto bail_out;
+ }
if (!jcr->is_canceled()) {
do_restore(jcr);