rootでログインすると

【以下の方法は警告メッセージを止めるので推奨はできない。】
Fedora 7の時は無かったが、Fedora 8からGNOME環境でログインしようとすると次のような警告メッセージを含むダイアログが出てくるので、これを止める方法を探した。

This session is running as a privileged user

Running a session as a privileged user should be avoided for security reasons. 
If possible, you should log in as a normal user.

          [Continue]           [QUIT]

ちなみに日本語では、

このセッションは特権ユーザが実行中です

特権ユーザが実行しているセッションはセキュリティの理由から対象から外した方が良いでしょう。
可能であれば、通常のユーザとしてログインして下さい。

          [続行する]          [中止する]

となる。*1

このメッセージはFedora 7からFedora 8の移行で、GNOMEのバージョンが2.18から2.20へ上がったために出るようになったようだ。

このようなダイアログが出るのはセキュリティの観点から良いことだと思う。しかし、私のような怠け者は一々suするのは面倒なので、ついついrootでログインしてしまう。(suでも面倒なのにsudoなどもってのほかと思っている。) 設定によって、この警告メッセージを出さない様にしたい。ということで、このダイアログを出さないようにする方法を探してみたが、ネットでは見つけられなかった。 世の中の人々は真面目に非特権ユーザでログインしてsudoで設定しているのか、と感心してしまった。

こうなるとソース見るのが早い。このメッセージはgnome-sessionというソフトウェアのmain.cに含まれていることが分かったので早速、ダウンロードして来た。

http://ftp.gnome.org/pub/GNOME/sources/gnome-session/2.20/gnome-session-2.20.2.tar.bz2

ソースコードを見て、ちょっとビックリ。このダイアログの出力は回避できないようになっている。つまりroot(正確には実効ユーザIDが「0」)でログインすると、必ず出される。該当するソースの部分は以下の通り(抜粋)。

static gboolean
gsm_check_for_root (void)
{
  GtkWidget *dlg;
  gint       response;

  if (geteuid () != 0)
    return FALSE;

  dlg = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING,
                                GTK_BUTTONS_NONE,
                                _("This session is running as a privileged user"));
          :
          :
  response = gtk_dialog_run (GTK_DIALOG (dlg));
  gtk_widget_destroy (dlg);

  return !(response == ROOTSESSION_RESPONSE_CONTINUE);
}

int
main (int argc, char *argv[])
{
          :
  if (gsm_check_for_root ())
    return 0;
          :
}

ソースを手直しするにはGNOMEコンパイル環境の構築からしなければならないので手間がかかりすぎる。しばらくは我慢して使うか.....、と諦めかけたが、バイナリにパッチを当てれば大した手間でもなさそうなので、次のような方法にトライした。

*1:これもちょっと日本語がヘン。訳すなら「このセッションは特権ユーザとして実行中です」の方が良いと思う。「特権ユーザが実行中です」だと違う意味に取れてしまう。実際、最初にこのメッセージを見たとき「あれ、俺以外にもrootでログインしているヤツがいるの?」とか思ってしまった。 理想的には「このセッションは特権ユーザとして実行しようとしています」の方が良いと思うが、これだと原文からちょっと意訳になってしまうので微妙。