2013/12/28(Sat)Windows 8.1 の cygwin で group の permission が設定できない。

はてブ数 2013/12/28 6:25 計算機な日記::ボクと計算機 つーさ

概要
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で憂き目を見ないようホームディレクトリも忘れずに。

*1 : 書き換えをミスってログアウトしてしまうと二度とログインできなくなるので、ログイン状態のセッションを切らずに、もう一つ端末を立ち上げるようにしよう。もし入れなくなってしまっていても、元に戻す機会が与えられる