[samba-jp:19961] Re: デフォルトパーミッション特に実行フラグについて

Adachi Junichi adachi @ jomon.ne.jp
2007年 12月 30日 (日) 03:53:05 JST


安達です。
しらいさん,ありがとうございます。
>  [samba-jp:19551] でも書いたかと思いますが、mount.cifs って
> 全然実用的ではないので、機能は劣りますが mount.smbfs の方が
> まだ使いものになると思います。
>  もし mount.cifs の方を使いたいのであれば、[samba-jp:19617]
> で書いたように、unix extensions はむしろ No にすべきだと思い
> ます。
>  経験上、Samba と mount.cifs という組合せは使いものになりま
> せん。どちらも対向として Windows を前提に設計されているよう
> ですね。
[samba-jp:19946]で解決をご報告いたしました。
smb.confの設定で
unix extensions = Yes (デフォルトのままなので指定せず)
map archive = No      (デフォルトはYes)
create mask = 0700
としておけば、
新規ファイルは0600のパーミッションになりますし、
chmod u+x などで実行ビットをたてることもできます。
map archive はグローバルセクションでもいいそうですが,
私は[home]のセクションにcreate maskとともに並べました。

pam_mpint.confの設定は
http://www.kroon.co.za/howto.php?howto=cifs_pam_mount
の記述に従いましたが,
smbmount /bin/mount -t smbfs はやめて
smbmount /bin/mount -t cifs か
smbmount /usr/bin/mount.cifs に
するようにと書いてあり,
smbmount /usr/bin/smbmount   //%(SERVER)/%(VOLUME) %(MNTPT) -o
"username=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"
となっていた行を
smbmount /sbin/mount.cifs   //%(SERVER)/%(VOLUME) %(MNTPT) -o
"user=%(USER),iocharset=utf8,uid=%(USERUID),gid=%(USERGID)%(before=\",\"
OPTIONS)"
となおしています。
あわせて
smbumount /usr/bin/smbumount %(MNTPT)
を
smbumount /sbin/umount.cifs  -l %(MNTPT)
になおしています。

厳密に調べたわけではないですが,smbmountのままでは
所有者がログインしたユーザーにならずに失敗したり
iocharsetの指定が効かずにファイル名が文字化けしたり
しました。
ちなみに
cifsmount /bin/mount -t cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o
"user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"
というエントリもあるのですが,これは使われていません。
よくわかりませんが,
volume * smbfs jonah & /home/& file_mode=0600 - -
の smbfs によって,smbmount が選択されているのだろうと
思っています。
とりあえず,以下の2点の疑問の他はうまくいっています。
(1)ls -l の結果が,ディレクトリの部分のファイルサイズに
 あたる部分が必ず 0 になる。
(2)ログイン時に自動的にマウントポイントが作られるが
 ログアウト時に削除されない。
 (最近のアップデートで設定ファイルがpam_mount.conf.xml
  になったが,状況はおなじ。)

で,mount.cifsとmount.smbfsの違いですが,
これもよくわかりません。debianのパッケージ(lenny)で
smbfsをインストールすると、smbmount の他にmount.cifsが入っていた。
smbmountはいらないかとsmbfsをアンインストールするとmount.cifsもなくなった
という経験をしています。
ファィルとしては
-rwsr-xr-x 1 root root 22628 2007-09-12 04:04 sbin/mount.cifs
lrwxrwxrwx 1 root root    17 2007-09-26 20:22 /sbin/mount.smb ->
/usr/bin/smbmount
lrwxrwxrwx 1 root root    17 2007-09-26 20:22 /sbin/mount.smbfs ->
/usr/bin/smbmount
-rwsr-xr-x 1 root root    9832 2007-09-12 04:04 /usr/bin/smbmnt
-rwxr-xr-x 1 root root  884116 2007-09-12 04:04 /usr/bin/smbmount
-rwsr-sr-x 1 root root    6480 2007-09-12 04:04 /usr/bin/smbumount
となっています。
ですから,実体のファイル名としては
mount.cifs と smbmount
ということになります。
mount -t cifs は,mount.cifs で処理されると思っています。
従って私の経験上では,unix同士でのsmb(cifs?)マウントは
 smbmount ではだめで,mount.cifs なら使えた。
 unix extentionは On 以外は試していない。
ということになります。

>> mount時のfile_mode指定も無視されて,
>> smb.confの create mask の値になります。
>> もちろんunixの制限内でのことですが。
これは私が書いたことですが,「file_mode指定も無視され」るのは
そう書いてあるのでバグとは思っていません。
create mask の指定が新規ファイルのデフォルトでなく
制限として働くのも*私は*昔からそんなものだと思っていたので
バグという認識がありません。
ただ,unix同士でsmbで接続する場合のこの不具合は解消の方法が
考えられていてしかるべきと考えて質問いたしました。
> 
>  これって下記 URL の修正で fix されたバグじゃないんでしょう
> か。
> http://git.kernel.org/?p=linux/kernel/git/sfrench/cifs-2.6.git;a=commitdiff;h=f5c1e2ea71603bc2962041fef9dd902cb8626a1d
>  git に疎いのでこの修正がどの kernel から反映されるようにな
> るのか調べられないんですけど、少なくとも kernel-2.6.20.4 で
> はまだ採用されていませんでした。
ここを見ましたが,バグといっていることが何であるかも
私には理解できませんでした。

-- 
 安達 順一
  adachi @ jomon.ne.jp



samba-jp メーリングリストの案内