Linuxはマルチユーザーシステムなので、ログイン時にユーザー名とパスワードを入力する。 これって当然のように見えるけれど、 家庭内で使っていて、特に1人で使っていて一般ユーザーでログインするのにパスワード入力しなければならない必然性なんて無いんじゃないか? あるいは家族で使うにしても共用みたいな部分は自動ログインできてもかまわないのではないか。 Mandralle Linux 8 にはこのような自動ログインのシステムがあります。 私が常用しているのはVine Linux 2.1.5ですが、これに自動ログイン機能を加えてみました。電源を入れるとXが立ち上がり、必要ならばアプリケーションの自動立ち上げも可能です。
RedHat系ではランレベル4が未定義なのでこれを自動ログインに割り当てます。
ランレベル5は従来どおりwdm(あるいはxdm)によるグラフィカルログインに残しておきます。
ランレベル4とランレベル5とで起動デーモンが変わらないように、
# ntsysv --level 45
などで自動起動の設定を確認あるいは再設定します。
とくにcanna, Wnnなどの日本語入力フロントエンド、
フォントサーバーのxfsとnetworkの起動は必須となります。
普段自分が使っているユーザーを自動ログイン設定するならばこのほかに別段の準備は要りません。 共用アカウントを新たに用意するならば、そのユーザーを作成し、いちおうパスワードも設定しておきます。 使用するウインドゥマネージャーや日本語入力フロントエンドなども設定しておきます。 Vineには setwm や setime などのコマンドがありますが、 いったんランレベル5でwdmログインのさいにそれらの設定をするのが簡単でしょう。 ウィンドウマネージャーは私の場合GNOME(+sawfish)としました。
今井さんのアイデアを基本にしましたが、'su - $USER' でログイン時の環境設定をさせることと、コンソールのロック設定とpam_consoleによるいくつかのデバイスの所有者変更を加えました。 スクリプトの名前や置き場所はどこでも良いのですが、 /etc/rc.d/rc.autox としました。実行属性を付けておきます。
#!/bin/bash # rc.autox 2006-09-10 by Masaki Shinomiya以上のスクリプトはVine Linux 2.6/3.2/4.0βでそれぞれ動作を確認しました。 USERとDEVSは適宜変更してください。# LICENSE: GPL2 USER=shino DEVS="dsp* mixer* video*" for LOCKDIR in /var/run /var/lock;do [ -d $LOCKDIR/console ] && break done for CONLOCKDIR in $LOCKDIR/console $LOCKDIR;do grep -q $CONLOCKDIR/console.lock /sbin/pam_console_apply 2>/dev/null && break done echo -n 1 > $LOCKDIR/console/$USER echo -n $USER > $CONLOCKDIR/console.lock chmod 600 $LOCKDIR/console/$USER $CONLOCKDIR/console.lock if [ -x /sbin/pam_console_apply ] ;then /sbin/pam_console_apply else cd /dev for i in $DEVS ;do chown $USER $i done fi (exec su - $USER -c /usr/X11R6/bin/startx &> /tmp/x.log) rm -f $CONLOCKDIR/console.lock rm -fR $LOCKDIR/console/* if [ -x /sbin/pam_console_apply ] ;then /sbin/pam_console_apply -r else cd /dev for i in $DEVS ;do chown root $i done fi
/etc/inittab の最初のほうに起動時のランレベルが記述されているので、それを4とします。
# Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - Auto login and startx # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:4:initdefault:
/etc/inittab の最後に ランレベル5でwdmあるいはxdmなどのグラフィカルログインを起動させる記述がありますので、その直前に さきの自動ログインの記述を加えます。
# Auto login in runlevel 4 ax:4:once:/etc/rc.d/rc.autoxこれでシャットダウン後にふたたび電源を入れると自動的にログインしXとウィンドウマネージャーが立ち上がります。 この設定ではログアウトするとランレベル3のようにテキストモードで別のユーザにログインできます。ログイン後、startxコマンドにより新しいユーザーでXが立ち上がります。 それはかったるいので新しいユーザーへのログインもグラフィカルにしたいという方は次の設定を。
/etc/inittabの最後の部分を次のようにすると、 最初の自動ログインのあとログアウトするとランレベル5と同じグラフィカルログインとなります。
# Auto login in runlevel 4 ax:4:wait:/etc/rc.d/rc.autox # Run xdm in runlevel 5 # xdm is now a separate service x:45:respawn:/etc/X11/prefdm -nodaemonこの設定ではランレベル4で自動ログインしたあとログアウトするまでinittabの次の行には進みませんので、これらはinittabの最後に記述するように気を付けなければなりません。
ウィンドウマネージャとしてsawfishを使う場合、 「コントロールセンター」の「スタートアップ」で自動的に起動するアプリケーションを設定することができます。
Vine 2.1.x では一般ユーザーでも停止・再起動ができるよう設定されています。 しかしここでわざわざ(一般ユーザーの)パスワードを入力するのは煩わしいだけです。 /etc/pam.d/の中のhaltとreboot, poweroffを次のようにpam_pwdb.soの行をコメントアウトすることで 一般ユーザーによる停止・再起動をパスワードなしで実行できます。
/etc/pam.d/halt, /etc/pam.d/reboot, /etc/pam.d/poweroff(いずれも同じ)
#%PAM-1.0
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_console.so
#auth required /lib/security/pam_pwdb.so
account required /lib/security/pam_permit.so
pam の新しいバージョンでは 'pam_stack.so' のある行をコメントアウト。
#%PAM-1.0
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_console.so
#auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_permit.so
電源の投入で自動ログインできるならばシャットダウンも電源スイッチだけでやりたいですよね。 その設定はこちらをご覧ください。 マザーボードによっては2度押しが必要な場合もあります。