2013/12/28(土)Windows 8.1 の cygwin で group の permission が設定できない。
概要
chmod してもグループに対するアクセス権がrwxのまま変更できない話。
Windows 8.1 に cygwin x64 を入れたら起こった。
/etc/passwd の 自ユーザのグループが513(なし)になってる。
のを544(Administrators)か545(Users)に直す。
すでにできてしまったファイルやディレクトリはchgrpで戻す。
内容。
新たにWin8ノートパソコンを買ったので環境構築の一環でcygwin x64を入れた。
無事インストールして、いざ使うかーと思って screen を起動しようとしたら
tu-sa@t21 ~ $ screen Directory /tmp/uscreens/S-tu-sa must have mode 700.
ほう……。ならば?
tu-sa@t21 ~ $ ls -l /tmp/uscreens 合計 0 drwxrwx---+ 1 tu-sa なし 0 12月 28 05:21 S-tu-sa tu-sa@t21 ~ $ chmod 700 -R /tmp/uscreens/S-tu-sa tu-sa@t21 ~ $ ls -l /tmp/uscreens 合計 0 drwxrwx---+ 1 tu-sa なし 0 12月 28 05:21 S-tu-sa
はははこやつめ。
win8にcygwinを入れるとユーザのグループ設定がうまくいかず、
tu-saはグループ「なし」に所属してしまう。
その状態でファイルやディレクトリを作ると、
グループへのパーミッション設定がうまくいかない。
のでなおす。
まずは、/etc/passwdの自分のアカウントの行を確認する。
3カラム目がプライマリのグループIDを表しているのだけど、513になっている。
/etc/group を見ると513は「なし」として登録されている。
なし:S-1-5-21-ナントカカントカ-513:513:
ので、/etc/passwd側の513を、「なし」じゃない何かに変える。
/etc/groupに書いてある他のグループのIDを見ると、
root が 0 で、
Administrators 544 で、
Usersが 545 というのが目に入る。
WinXP時代は、ファイルのグループがAdministとか出てた気がするので、544にしとくかー。
というわけで、書き換えて保存し、もう一つ端末を立ち上げて*1ファイルを作ってみる。
うまくいけてるようだ。
※ なんか、tu-saとかいうグループもあったので試しに設定してみたが、
その状態だと、 chmod 700 は「なし」の時同様うまくいかなかった。
たぶん、「なし」同様に、それにひもづくWindows上のグループがないので、
ACLが設定できないのだろう?
あとは、既に作成されてしまったディレクトリのグループ・パーミッションを変更して完了。
自動的に作られることが分かっているディレクトリ・ファイルの場合は消してしまっても良いだろう。
tu-sa@t21 ~ $ chgrp -R Administrators /tmp/uscreens/S-tu-sa tu-sa@t21 ~ $ ls -l /tmp/uscreens 合計 0 drwxrwx---+ 1 tu-sa Administrators 0 12月 28 05:21 S-tu-sa tu-sa@t21 ~ $ chmod 700 -R /tmp/uscreens/S-tu-sa tu-sa@t21 ~ $ ls -l /tmp/uscreens 合計 0 drwx------+ 1 tu-sa Administrators 0 12月 28 05:21 S-tu-sa
screenが動くようになった。
.sshで憂き目を見ないようホームディレクトリも忘れずに。