FC2ブログ

yaroespage::weblog

自作パソコンとその他もろもろの、ヨモヤマバナシです。

--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-)
FC2 managemented

 <お詫び>
 第05話の初出では、今回のトラブルについて「他のユーザが作ったフォルダにアクセスできない」と記述していましたが、「他のユーザの作ったフォルダの中にファイルをコピーできない」が正解でした。
 ということで、第05話の終わりの部分を書き直しましたので、まずは第05話のここらへんから読み直していただければ幸いに存じます。

 前回はLinuxを入れ替えた「玄箱」にSambaを導入してWindowsとのファイル共通環境を整えたハズなのに、アクセスエラーが出たんだよぅド○えも~ん、てなハナシでした。

 とはいえ、うちにはホイホイと便利な道具を出してくれるネコ型ロボットはいませんから、自分のことは自分で解決しないといけません。

 ということで、冷静沈着に症状を整理してみましたところ、だいたい以下のようにまとめることができました。

  • デフォルトの共有フォルダ(Linux側から見て/mnt/share)は、どのWindows PCからでも読み書きできる。
  • そこには、Windows PCからフォルダを作ることができ、そのフォルダの中にファイルを転送することもできる。
  • その新しいフォルダに別のWindows PCからアクセスしてみると、ちゃんとフォルダを開くことができて、その中に保存されたファイルを読み出すことができるが、ファイルを転送(作成)したり削除したりしようとするとアクセスエラーが発生する。
  • 念のために逆のパターンを試しても、やっぱり他人の作ったフォルダを開くことはできても、ファイルの転送(作成)はできない。(読み取り専用になってる)。
  • 「それでは」と、Linuxにログインしてrootで新しいフォルダを作成してみたら、なんと全てのWindows PCからファイルの転送(作成)や削除できないフォルダができちゃった。

 愕然。

 でも、整理したおかげでだいたい分かってきましたよ。
 アクセス権限(パーミッション)の設定がウマくできてないんですね。

 ls -lsaしてみましょう。

 すると、俺PCで作成したフォルダは、

 drwxrwxr-x henry henry (サイズ) (作成日時) (フォルダ名)

 キティ鯖で作成したフォルダは、

 drwxrwxr-x kitty kitty (サイズ) (作成日時) (フォルダ名)

 玄箱のLinuxにログインして作成したフォルダは、

 drwxrwxr-x root root (サイズ) (作成日時) (フォルダ名)

 ・・・となってました。
 (henryは俺PCのユーザ名、kittyはキティ鯖のユーザ名でございます)。

 drwxrwxr-xというのがアクセス権です。
 この一見意味不明の文字列は4つの部分に切り分けることができます。
 最初のdはディレクトリ、つまりWindowsで言うところフォルダであるという意味です。
 残りの9文字は、所有者(作成者)のアクセス権3文字、グループのアクセス権3文字、その他大勢のアクセス権3文字となっています。
 rwxはReadable、Writable、eXecutableを意味しており、アクセスするユーザが読めるか、書けるか、実行できるかを意味しています。

 今回のようにdrwxrwxr-xとなっている場合は、まずディレクトリ(d)であって、所有者自身は読み書きソロバン、じゃなくて読み書き実行が可能(drx)で、所有者と同じグループも読み書き実行が可能(drx)で、よそ様は読みと実行だけ(r-x)という意味になります。

 また、この魔法の9文字の部分をビットで表すと111111101となりますが、これを8進数で表すと775になります。
 掲示板などのCGIを自分で設置したことがある人にとっては、パーミッションを775だの664だに変更するってのをやったことがあるハズです。
 そうです、アレってコレなんです。

 さて、ここで注目すべきは、ユーザ名が2ずつ表示されていることです。

 実はコレ、一見ふたつずつに見えるだけで、左のはユーザ名(UID)で、右のはグループ名(GID)なんです。
 要するに、ユーザ名とグループ名が同じ名称で登録されちゃってるよってことですね。

 玄箱側のユーザを作成するのにadduserコマンドを使ったんですが、コイツって新しいユーザを登録するときに、同時に(勝手に)新しいグループも作成しちゃうみたいで、そのときのグループ名をユーザ名と同じにしちゃうみたいなんです。

 そのせいで、私の意思に関係なく、henryはhenryグループ、kittyはkittyグループに所属させられたわけです。

 rootは最初から存在している特権ユーザ名で、最初からrootグループです。

 一方、Sambaには、Windows側からLinux側のHDDにファイルやフォルダが作成されたときに、どのような(Linux的な)パーミッションにするかを指定する項目があります。
 ファイルやフォルダに関するパーミッションの考え方が、LinuxとWindows NT系列とで結構違いますので、下手にすり合わせるより、Windowsから新規作成された場合のパーミッションを最初っから一意に決めておけばいいじゃんという考え方なんでしょう。

 ということで、玄箱にSambaをインストールした後でSWATを起動した時に、新規作成されるファイルは664(rw-rw-r--)、新規作成されるフォルダは775(rwxrwxr-x)というふうにしておいたんです。

 話をまとめますと、Windows側からSamba経由で作成されるフォルダのパーミッションは、所有者か所有者と同じグループのメンバでないとアクセスできない設定にしているくせに、Sambaユーザ(= Linuxユーザ)は全員が別々のグループに所属している(つまりよそ者同士とみなされる)ため、お互いが作成したフォルダの中が読み取り専用になり、ファイルを転送(作成)することができなかったのでした。

 ファイルのパーミッションは、よそ者には読み取り専用(r--)ですから、開くことはできます。
 なので、共有フォルダの直下に保存したテキストファイルはみんなが開けたんです。
 なまじ開けるために、このグループ設定のミスに気付くのが遅れたわけですね。

 ということで、

KURO-BOX:$ su -password:
KURO-BOX:#

 rootに変身!
 パスワードを入力し、プロンプトが“#”に変われば変身完了です。

KURO-BOX:# vi /etc/group

 グループ情報の設定ファイル/tec/groupを開いて不必要に増えたGIDを削除し、代わりに'users'というGIDを追加。

KURO-BOX:# vipw

 パスワードファイルを開いて、それぞれのユーザの属するGIDの部分を'users'のGIDに変更。

KURO-BOX:# chown -R henry:users /etc/share/*

 既に転送が完了したファイルやフォルダの所有者情報を、ユーザID→henry、グループID→usersに再設定。

 ・・・てな感じに作業。

 確認のために、ls- lsaしてみると、

 drwxrwxr-x henry users (サイズ) (作成日時) (フォルダ名)

 になりました。

 これで、少なくとも我が家のPCのユーザであるかぎり、誰かが作成(転送)したフォルダやファイルを誰もががアクセスできるようになりました。

 おめでとう、俺!
 ありがとう、私!

 パチ、パチ、パチ。

 ああ、楽しかった。

初出:2004/12/16

スポンサーサイト
FC2 managemented

このコメントは管理者の承認待ちです

2014.01.28 17:49  | # [ 編集 ]

このコメントは管理者の承認待ちです

2014.02.06 07:43  | # [ 編集 ]












管理者にだけ表示

トラックバックURL↓
http://yaroespage.blog121.fc2.com/tb.php/6-bb36488b

| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。