diff --git a/exec/classic_shell.js b/exec/classic_shell.js
index ba9cbf3fd8fee80e45c8902f66e86f8a5c37c6b1..f98fcc606fcd67695092bc2eb224b6b80798b747 100644
--- a/exec/classic_shell.js
+++ b/exec/classic_shell.js
@@ -162,7 +162,7 @@ while(1) {
 	}
 
 	// Sysop Menu
-	if(user.compare_ars("SYSOP or EXEMPT Q or I or N")) {
+	if(user.compare_ars("SYSOP or EXEMPT Q or I or N") || (bbs.sys_status&SS_TMPSYSOP)) {
 		switch(str) {
 			case '!':
 				bbs.menu("sysmain");
@@ -780,7 +780,7 @@ file_transfers:
 				continue file_transfers;
 		}
 
-		if(user.compare_ars("SYSOP")) {
+		if(user.compare_ars("SYSOP") || (bbs.sys_status&SS_TMPSYSOP)) {
 			switch(str) {
 				case '!':
 					bbs.menu("sysxfer");
diff --git a/exec/cshell.js b/exec/cshell.js
index afd91078e385add4add48f38427778681cff7e8f..c01716227707442ad6e2f320d63ae87c64a5c6da 100644
--- a/exec/cshell.js
+++ b/exec/cshell.js
@@ -78,7 +78,7 @@ function Main()
 								var str=console.getstr("",40,K_EDIT);
 								chatroom.Alert("Command (? For Help): ");
 								if(str=='?') {
-									if(!user.compare_ars("SYSOP"))
+									if(!user.compare_ars("SYSOP") || (bbs.sys_status&SS_TMPSYSOP))
 										str='HELP';
 								}
 								if(str=='?') {
diff --git a/exec/lbshell.js b/exec/lbshell.js
index 62d32b690d05375b65a70463a2f090de6d4b5606..3ec1e9f970e8ae0b64ebaa345cd5141dadcbdafc 100644
--- a/exec/lbshell.js
+++ b/exec/lbshell.js
@@ -117,7 +117,7 @@ function get_message()
 	}
 
 	/* Time left warning? */
-	if((bbs.time_left/60)<(5-console.timeleft_warning) && (!user.compare_ars("SYSOP"))) {
+	if((bbs.time_left/60)<(5-console.timeleft_warning) && !user.compare_ars("SYSOP") && !(bbs.sys_status&SS_TMPSYSOP)) {
 		console.timeleft_warning=5-(bbs.time_left/60);
 		rows+=MessageWindow.putmsg(1,MessageWindow.height,format(bbs.text(OnlyXminutesLeft),bbs.time_left/60+1,(bbs.time_left/60)?"s":""),MessageWindow_Attr,true);
 	}
@@ -617,7 +617,7 @@ while(bbs.online) {
 				var str=console.getstr("",40,K_EDIT);
 				clear_screen();
 				if(str=='?') {
-					if(!user.compare_ars("SYSOP"))
+					if(!user.compare_ars("SYSOP") && !(bbs.sys_status&SS_TMPSYSOP))
 						str='HELP';
 				}
 				if(str=='?') {
diff --git a/exec/load/chateng.js b/exec/load/chateng.js
index 3d7cdae616b3bfef4fee21bdd0ea116d0e0e544d..730199460562c694884f6e788c0de4750131dc17 100644
--- a/exec/load/chateng.js
+++ b/exec/load/chateng.js
@@ -312,7 +312,7 @@ function ChatEngine(root,name,logger,stream)
 			this.Send(message);
 			break;
 		case '@':
-			if(!user.compare_ars("SYSOP")) break;
+			if(!user.compare_ars("SYSOP") && !(bbs.sys_status&SS_TMPSYSOP)) break;
 		default:
 			if(key) this.Buffer(key);
 			break;
@@ -484,7 +484,7 @@ function ChatEngine(root,name,logger,stream)
 				
 				else console.gotoxy(this.x,this.y+parseInt(line,10));
 				var display=output[line];
-				if(user.compare_ars("SYSOP"))
+				if(user.compare_ars("SYSOP") || (bbs.sys_status&SS_TMPSYSOP))
 				{
 					if(display.indexOf('@')>=0) display=display.replace(/@/g,"?");
 				}
diff --git a/exec/postit.js b/exec/postit.js
index a572f71426995efb2c9d2532cabf3393849047cb..229d4ad48ec595e04fb6c2a62e2c86c882f17e77 100644
--- a/exec/postit.js
+++ b/exec/postit.js
@@ -58,7 +58,7 @@ var sysop_mode=false;
 
 function main()
 {
-	if(user.compare_ars("SYSOP"))
+	if(user.compare_ars("SYSOP") || (bbs.sys_status&SS_TMPSYSOP))
 	{
 		sysop_mode=true;
 		max_msg_length=20;
diff --git a/exec/str_cmds.js b/exec/str_cmds.js
index 0fb633ae1ef2b142de4ad6eb35769642bf5b19b4..bf66f7393b64a9ee7bb7e509385456d6ff2ef76a 100644
--- a/exec/str_cmds.js
+++ b/exec/str_cmds.js
@@ -54,7 +54,7 @@ function str_cmds(str)
 	if(str=="HELP")
 		write("\r\nAvailable STR commands (prefix with a semi-colon)\r\n\r\n");
 
-	if(user.compare_ars("SYSOP")) {
+	if(user.compare_ars("SYSOP") || (bbs.sys_status&SS_TMPSYSOP)) {
 		// Change node action to "sysop activities"
 		bbs.node_action=NODE_SYSP;
 		//sync