2007年8月29日水曜日

create maskを775にしたのに。

sambaでcreate maskを775にしたのに、何故か実行権限だけ外れてしまう。

この問題の解として、2ちゃんねるの過去ログで以下を見つけた。
http://www.kp2.jp/cgi-bin/2chbbs/test/read.cgi/nono/990671952/421-520
UNIX と DOS(Windows) のファイルモードの違いを吸収する
ためにそういうことが起こる。

(1) DOS には実行権限なんていうモードは存在しないので、
UNIX 側でも当然記録しない。
(2) 逆に DOS のアーカイブ属性は UNIX に存在しないので
samba はこれを UNIX 側ではファイル所有者の実行権限に
マッピングすることで、違いを吸収しようとする。

(1)と(2)の合わせ技で、mask が 777 のとき 766 になる。

問答無用で 777 にしたいなら、 smb.conf に
force create mode
force directory mode
あたりを設定すればいい。

普通はセキュリティのことも考えて 777 にはしないけど、
そうしないと不便だと文句いう奴らもいるからなあ。

なるほど。
ただ、force create modeやらを使うと、Windowsのファイルプロパティなどで設定する
「読み取り専用」だったり「隠しファイル」だったりを設定できなくなるので、実行権限は諦めることにした。

2007年8月20日月曜日

Sambaの接続エラー。

Aug 20 00:42:43 roserogue smbd[4367]: [2007/08/20 00:42:43, 0] lib/util_sock.c:get_peer_addr(1000)
Aug 20 00:42:44 roserogue smbd[4367]: getpeername failed. Error was Transport endpoint is not connected
Aug 20 00:42:44 roserogue smbd[4367]: [2007/08/20 00:42:44, 0] lib/util_sock.c:get_peer_addr(1000)
Aug 20 00:42:44 roserogue smbd[4367]: getpeername failed. Error was Transport endpoint is not connected
Aug 20 00:42:44 roserogue smbd[4367]: [2007/08/20 00:42:44, 0] lib/access.c:check_access(328)
Aug 20 00:42:44 roserogue smbd[4367]: [2007/08/20 00:42:44, 0] lib/util_sock.c:get_peer_addr(1000)
Aug 20 00:42:44 roserogue smbd[4367]: getpeername failed. Error was Transport endpoint is not connected
Aug 20 00:42:44 roserogue smbd[4367]: Denied connection from (0.0.0.0)
Aug 20 00:42:44 roserogue smbd[4367]: [2007/08/20 00:42:44, 0] lib/util_sock.c:get_peer_addr(1000)
Aug 20 00:42:44 roserogue smbd[4367]: getpeername failed. Error was Transport endpoint is not connected
Aug 20 00:42:44 roserogue smbd[4367]: Connection denied from 0.0.0.0
Aug 20 00:42:44 roserogue smbd[4367]: [2007/08/20 00:42:44, 0] lib/util_sock.c:write_socket_data(430)
Aug 20 00:42:44 roserogue smbd[4367]: write_socket_data: write failure. Error = Connection reset by peer
Aug 20 00:42:44 roserogue smbd[4367]: [2007/08/20 00:42:44, 0] lib/util_sock.c:write_socket(455)
Aug 20 00:42:44 roserogue smbd[4367]: write_socket: Error writing 5 bytes to socket 5: ERRNO = Connection reset by peer
Aug 20 00:42:44 roserogue smbd[4367]: [2007/08/20 00:42:44, 0] lib/util_sock.c:send_smb(647)
Aug 20 00:42:44 roserogue smbd[4367]: Error writing 5 bytes to client. -1. (Connection reset by peer)


というエラーメッセージがログに残る。
特に不具合はないのだけれども、どうも気になるので調べると

http://blog.hashimoto-clinic.jp/200611/article_7.html

http://www.kozupon.com/samba/samba2.html

原因:プリンタの設定をしていないにも関わらず、プリンタードライバの自動配布機能が動いてしまうから。

対策:[global]内に以下の2行を入れる。
load printers = no
disable spoolss = yes


らしい。
なるほど、納得。

2007年8月16日木曜日

ネットワークサーバから切断する方法

ファイルサーバなどで複数のIDをテストする場合、ネットワークサーバから切断を何度もしなければならない。
前は再起動を繰り返していたのだけれども、流石に面倒。

Windowsでは、コマンドラインでネットワークサーバから切断することが出来るのを発見。
NET USE \\XXX.XXX.XXX.XXX /DELETE /YES
(バックスラッシュは¥マーク)
XXX.XXX.XXX.XXXにはIPアドレスを記入する。

例:NET USE \\192.168.1.7 /DELETE /YES

2007年8月1日水曜日

sambaで待たされる(異常に遅い)現象について

samba(smbd)で、たとえばWindows機でアクセスし、右クリックしたときや、deleteキーを押したとき、
異常に遅い(待たされる)現象が起きた。

http://www.tac.tsukuba.ac.jp/~yamato/samba/14500/msg00443.html

たしかにmessagesにもiptablesがDROPしたログが残っている。
ということで、一度は無効化した設定を再度復活。


trusthost='192.168.168.0/24'
myhost='192.168.168.69'
any='0.0.0.0/0'
#################
#www ANY-> myhost
#################
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -s $trusthost -d $myhost --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -s $myhost --sport 80 -d $trusthost -j ACCEPT


80番を解放すればいいのね。

追記
sambaのチューニング(速度アップ)は
http://www.dd.iij4u.or.jp/~okuyamak/Documents/tuning.japanese.html
を参照すること。
手順は
tcpdumpでログ取り
#tcpdump > logfile
WIN機からsambaにアクセスし、共有フォルダに何かぶち込む(10MB程度のファイル)
tcpdumpをCTRL+cで止める
less logfile |grep mss
で、出てきた数値の2倍をsmb.confに書き込む
例:
06:57:43.422363 IP 192.168.1.14.ftp > 192.168.1.5.4834: S 3692312227:3692312227(0) ack 831951649 win 5840 <mss 1460,nop,nop,sackOK>

mssの1460の2倍(この場合2920)をyyyyにSO_SNDBUF=として書き込む
socket options = TCP_NODELAY SO_SNDBUF=yyyy
samba3.0だとSO_SNDBUF=は入っていたはずなので、修正になるのかな。

上記プラス、smb.conf の [global] 部の最後に以下を書く(いまいち意味が分かってない・・・)
include = /etc/samba/smb.conf.global.%a
include = /etc/samba/smb.conf.global.%M
include = /etc/samba/smb.conf.global.%a.%M

以上で130%位速くなる。(15mbpsだったのが20mbps位になる=winサーバと同等になる)