それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Cygwinを移動したら/etc/passwdの再生成を

CygwinはZIPで固めて何処でも動かせる。cygwin1.dllが互換レイヤなので、これさえあればcygwinを動かすことが出来る。dllが必須条件なので、cygwinにはインストールもいらないし、cygwin には管理者権限もいらない。ディレクトリを丸々コピーすると動きます。

移動先で不整合のエラー?


CygwinはZIPファイルに展開してそのまま持っていけるけど、持っていった先で /etc/passwdの不整合が起こります。Cygwinを丸コピーすると、ユーザーIDやグループIDに不整合が起こります。

次のようなメッセージが出てくる

takuya@demo ~
$ source /etc/profile

Your group is currently "mkpasswd".  This indicates that your
gid is not in /etc/group and your uid is not in /etc/passwd.

The /etc/passwd (and possibly /etc/group) files should be rebuilt.
See the man pages for mkpasswd and mkgroup then, for example, run

mkpasswd -l [-d] > /etc/passwd
mkgroup  -l [-d] > /etc/group

Note that the -d switch is necessary for domain users.

メッセージの大まかな意味は

mkpasswdで得られるUID/GIDと、/etc/passwdと/etc/groupの記載と違う。だから一致させてねということです。

つまり、uid/gidが不整合を起こしているので、修正するべきなんですね。

修正はかんたん

簡単に修正できる。

ターミナルで次のコマンドをコピペする。

mkpasswd -l > /etc/passwd
mkgroup  -l > /etc/group


先ほどのメッセージにあるとおりに打ち込んで。修正してね!ってことですね


不整合だと何が起きるか。

通常ちょこっと使うぶんには問題無いです。ただ、私の場合 ssh サーバーを起動しようとしてエラーになっていました。


ssh-host-confgコマンドで Administrator ID が間違ってると言われる原因を調べたら、上記の問題に行き当たりました。

ssh-host-confgがエラーになる。

Problem with LocalSystem or Administator IDs


この場合は mkpasswd mkgroup を実行して、/etc/passwd /etc/groupを上書きし、cygwinターミナル(mintty.exe)を再起動すれば解決する。uid/gid問題で AdministatorsのIDが実際とファイルとで一致してないってことです。


参考資料

具体的にはCygwinのFAQで参照できる

http://www.zieg.com/faqs/cygwin/