パスワードなしでsuをする方法

sshでサーバにログインして管理をするときに、一般ユーザでログインをしてからsuでrootになるというのはよくあるパターンだと思います。

通常はそのときにrootのパスワードを入力する必要がありますが、パスワードを入力しなくてよいように設定することも可能です。毎回rootのパスワードを入力するのが面倒という場合にも適していますが、root権限は与えてもよいがrootパスワードは教えたくないユーザがいる場合にも活用できます。

必要な設定は次の二つです。まず該当するユーザをwheelグループに追加します。そのユーザのデフォルトのグループは/etc/passwdに設定されていますが、追加のグループは/etc/groupに設定があります。/etc/groupに以下のような行があると思います。これがwheelグループのメンバーです。最初はrootユーザだけのようです。この後ろにカンマで区切ってユーザ名を追加します。

次に/etc/pam.d/suを編集します。Linuxでは認証を行うのにPAMというモジュールが利用されていますが、このファイルはそのうちsuを行うときの設定になります。このファイルには以下のような行があると思います。

コメントにしたがってこの設定を有効にすると、めでたくwheelグループのユーザはパスワード入力なしにsuが可能となります。

CentOSをインストールして最初にする設定

サーバにOSをインストールしたあとで、最初にいろいろと設定が必要になります。サーバ自体の設定もありますが、管理を行うための環境の設定もあるでしょう。備忘のために今回行った設定を記録します。

CentOSは最初構成でインストールしていますので、必要なソフトはその都度yumでインストールします。最初からいろいろいれるより必要最低限にするがシンプルでよいと思います。yumでのインストールは非常に簡単ですし。

CentOS 6.0で驚いたのが最小構成にsshが含まれていないことです。もちろんsshサーバは含まれています。クライアントが含まれていないのでいきなりscpをしようとするとエラーになります。openssh-clientsパッケージをインストールします。

まずは環境を整えます。ログイン用の自分のアカウントを作成します。useradd -m hogeです。個人的なお勧め環境はscreenとzshです。エディタはemacsとvim-enhancedを両方入れておきます。そしてsshの鍵を~/.ssh/authorized_keysに追加します。

そしてネットワークの設定などをします。/etc/sysconfig/networkのHOSTNAMEにホスト名を設定します。/etc/hostsも変更します。/etc/resolv.confもインストール時にはひとつしか指定しないので追加します。IPv6は使えないみたいなので設定しませんが、デフォルトでついてるリンクローカルはそのままにしておきます。/etc/sysconfig/iptablesでiptablesの設定も変更します。最初はsshしか許可されていませんが、同様に他のサービスも許可とします。

selinuxは面倒なので使わないことにします。/etc/sysconfig/selinuxをdisabledに変更します。あとディスク容量は余裕があるので/etc/logrotate.confを変更してログの保存件数を増やします。デフォルトでは4週のローテートですが半年くらいに変更しておきます。

以上はさくらのVPSにインストールしたCentOS 6.0の作業ログですが、SaaSesのCentOS 5.6もほぼ同様にします。そして念のためユーザアカウントのuidをそろえておきます。SaaSesの環境にはデフォルトで作成されているユーザがあるので何も考えずにuseraddするとひとつずれてしまいますが、いったんデフォルトで作成されているユーザを削除してから作業します。