diff -u -r mediawiki-1.5.6/includes/Article.php codebase-1.5/includes/Article.php
--- mediawiki-1.5.6/includes/Article.php	2006-01-16 12:37:43.000000000 -0600
+++ codebase-1.5/includes/Article.php	2006-01-19 06:38:43.000000000 -0600
@@ -926,10 +926,30 @@
 	 * @return int     The newly created page_id key
 	 * @access private
 	 */
-	function insertOn( &$dbw, $restrictions = '' ) {
+	function insertOn( &$dbw, $restrictions = NULL ) {
+		global $wgDefaultRestrictions;
+	
 		$fname = 'Article::insertOn';
 		wfProfileIn( $fname );
 
+		if (! isset( $restrictions ) ) {
+			$restrictions = $wgDefaultRestrictions[$this->mTitle->getNamespace()];
+		}
+		
+		// check if $restrictions is still NULL. (i.e. missing entry in $wgDefaultRestrictions.)
+		if (! isset( $restrictions ) ) {
+			$restrictions = '';
+		}
+		
+		// The following code is equivalent to the previous two blocks,
+		// but requires PHP 4.1:
+		// if (! isset( $restrictions ) &&
+		// 	array_key_exists( $this->mTitle->getNamespace(), $wgDefaultRestrictions ) ) {
+		// 	$restrictions = $wgDefaultRestrictions[$this->mTitle->getNamespace()];
+		// } else {
+		// 	$restrictions = '';
+		// }		
+
 		$page_id = $dbw->nextSequenceValue( 'page_page_id_seq' );
 		$dbw->insert( 'page', array(
 			'page_id'           => $page_id,
diff -u -r mediawiki-1.5.6/includes/DefaultSettings.php codebase-1.5/includes/DefaultSettings.php
--- mediawiki-1.5.6/includes/DefaultSettings.php	2006-01-19 00:48:04.000000000 -0600
+++ codebase-1.5/includes/DefaultSettings.php	2006-01-19 06:38:43.000000000 -0600
@@ -1665,4 +1665,18 @@
  */
 $wgUseTrackbacks = false;
 
+/**
+ * Associative array of default restrictions for each namespace.
+ *
+ * The key is the numeric ID of the namespace (refer to Defines.php for a list
+ * of constants), and the value is the same format as the page_restrictions field
+ * (refer to loadRestrictions() in Title.php for details).
+ *
+ * Absence is equivalent to an empty string, i.e. no restrictions.
+ */
+
+$wgDefaultRestrictions = array(
+      NS_MEDIAWIKI => 'sysop'
+);
+
 ?>
diff -u -r mediawiki-1.5.6/includes/Title.php codebase-1.5/includes/Title.php
--- mediawiki-1.5.6/includes/Title.php	2005-10-29 20:30:44.000000000 -0500
+++ codebase-1.5/includes/Title.php	2005-11-04 04:09:14.000000000 -0600
@@ -1099,12 +1099,31 @@
 	 * @access public
 	 */
 	function getRestrictions($action) {
+		global $wgDefaultRestrictions;
+		
 		$id = $this->getArticleID();
-		if ( 0 == $id ) { return array(); }
 
 		if ( ! $this->mRestrictionsLoaded ) {
-			$dbr =& wfGetDB( DB_SLAVE );
-			$res = $dbr->selectField( 'page', 'page_restrictions', 'page_id='.$id );
+			// New article?
+			if ( 0 == $id ) {
+				$res = $wgDefaultRestrictions[$this->mNamespace];
+				
+				// check if $restrictions is still NULL. (i.e. missing entry in $wgDefaultRestrictions.)
+				if (! isset( $res ) ) {
+					$res = '';
+				}
+				
+				// The following code should be used instead if PHP 4.1 is available:
+				// if ( array_key_exists( $this->mNamespace, $wgDefaultRestrictions ) ) {
+				// 	$res = $wgDefaultRestrictions[$this->mNamespace];
+				// } else {
+				// 	$res = '';
+				// }
+			} else {
+				$dbr =& wfGetDB( DB_SLAVE );
+				$res = $dbr->selectField( 'page', 'page_restrictions', 'page_id='.$id );
+			}
+			
 			$this->loadRestrictions( $res );
 		}
 		if( isset( $this->mRestrictions[$action] ) ) {
