2014年9月16日火曜日
2014年8月26日火曜日
vim で samba 上のファイルを編集すると,ファイルのパーミッションが samba の create mode に戻されてしまう問題
Linux の samba サーバで公開されているファイルを,windows の vim で編集すると,ファイルのパーミッションが smb.conf の create mask で設定されるモードに戻されてしまう.
たとえば,create mode = 0664 の場合.
更に,編集したファイルがシンボリックリンクだったりした場合,リンクが消されて通常ファイルが作られるのでもっと困る.
vim の代わりに notepad を用いた場合は,編集の前後でパーミッションは保持される.
また,
ファイルのパーミッションだけでなくオーナーもユーザの物に戻ってしまっていることから,
vim でのファイルの保存時には,編集前のファイルの削除→編集後のファイルのセーブが行われている様に見える.
しかし,上記の chown root:root の操作に加え,chmod 555 . として,
カレントディレクトリの書き込み権限を落とすと,vim での編集後に,元のパーミッションが保持されたファイルがセーブされた.
一度削除していたら,書き込みエラーになるはずなのだが...
原因の調査は手に余るので,場当たり的だが今考えつく対処法はふたつ.
1.は,他のディレクトリに影響が出ないが,explorer から新規ファイル,フォルダが作成できなくなる.
2.は,共有全体で,テキストファイルを編集したときにも実行ビットが立つようになってしまう.
どちらも一長一短だが1の方がsafeかなと思う.
bkc が no だと,元のファイルをリネームして backupfile とし,編集後のテキストを新規ファイルに書き込む.まさに上の挙動.
ただし,この設定だけだと私の環境では期待通りに動作しなかった.
smb.conf で create mask や,force create mode などを設定しているとどうしても影響を受ける様子.
どうやら ACL (Access control list) が書き加えられている様子だが,トリガーが分からない.
たとえば,create mode = 0664 の場合.
$ touch hogeとなる.実行ビットが落ちてしまうので,スクリプトの編集中など非常に困る.
$ ls -l
合計 0
-rw-rw-r-- 1 nishi nishi 0 8月 26 01:28 hoge
$ chmod 777 hoge
$ sudo chown root:root hoge
$ ls -l
合計 0
-rwxrwxrwx 1 root root 0 8月 26 01:28 hoge*
### ここで windows から vim で hoge を編集 ###
$ ls -l
合計 4
-rw-rw-r-- 1 nishi nishi 5 8月 26 01:29 hoge
更に,編集したファイルがシンボリックリンクだったりした場合,リンクが消されて通常ファイルが作られるのでもっと困る.
vim の代わりに notepad を用いた場合は,編集の前後でパーミッションは保持される.
また,
std::ofstream ofp(argv[1]);という c++ プログラムを VC でコンパイルした物で試した場合もパーミッションは保持された.
ofp << "abc" << endl;
ofp.close();
ファイルのパーミッションだけでなくオーナーもユーザの物に戻ってしまっていることから,
vim でのファイルの保存時には,編集前のファイルの削除→編集後のファイルのセーブが行われている様に見える.
しかし,上記の chown root:root の操作に加え,chmod 555 . として,
カレントディレクトリの書き込み権限を落とすと,vim での編集後に,元のパーミッションが保持されたファイルがセーブされた.
一度削除していたら,書き込みエラーになるはずなのだが...
chmod -w . (新規ファイル作成不可)かつ,chown root:root *(パーミッション変更不可) とする.smb.conf で,force create mode = 775 にする.
解決編
:set backupcopy=yes
参考: :help bkc, :helpgrep samba\c など.bkc が no だと,元のファイルをリネームして backupfile とし,編集後のテキストを新規ファイルに書き込む.まさに上の挙動.
ただし,この設定だけだと私の環境では期待通りに動作しなかった.
smb.conf で create mask や,force create mode などを設定しているとどうしても影響を受ける様子.
; create mask = 770
; force create mode = 770
map archive = no
map system = no
map hidden = no
nt acl support = no
これで大抵は良くなったのだが,なんかの拍子で group のパーミッションが変わる時がある.どうやら ACL (Access control list) が書き加えられている様子だが,トリガーが分からない.
2014年4月17日木曜日
courier-imap-ssl cert
openssl の heartbleed 脆弱性とかの関係で courier-imap-ssl の鍵と証明書を作り直した。
というか、今まで動いてたのが courier-imad-ssl の deb に含まれてた imapd.pem でしかも有効期限切れみたいな状態だったので、正確には作り直したじゃなくて作った。
手順としては /etc/courier/imapd.cnf を編集して、/usr/sbin/mkimapdcert を実行するだけ。
このスクリプトだと、/usr/lib/courier に imapd.pem が出来るんだけど、元の状態は /etc/courier/imapd.pem から /usr/lib/courier/imapd.pem にリンクが貼られてた感じなので、その辺はよしなに。
imapd-ssl の設定ファイルが /etc/courier/imapd.pem を見てるので元の状態の方が正しい気がする。
出来る証明書の有効期限は365日で、スクリプト中にハードコーディングされているので、のばしたいならスクリプトを編集する必要あり。
まあ、自己署名だし、有効期限が切れたからと言ってどうと言うこともない。
サービスを再起動して、クライアントから証明書を表示して、新しいものになっていればOK。
これで、今後の imaps 通信が( heartbleed 脆弱性によって)盗聴されることは無いはず。
ただ、これまでにユーザのパスワードが抜かれた可能性はあるかもしれない(?)ので、変更しておいた方が無難。
でも、あちこちの端末のMUAで設定を変えなければならないので面倒なんだよね。
しばらく mail.log でもチェックして、身に覚えの無い端末からのログインが無ければいいことにする。
imapd-ssl の設定ファイルが /etc/courier/imapd.pem を見てるので元の状態の方が正しい気がする。
出来る証明書の有効期限は365日で、スクリプト中にハードコーディングされているので、のばしたいならスクリプトを編集する必要あり。
まあ、自己署名だし、有効期限が切れたからと言ってどうと言うこともない。
サービスを再起動して、クライアントから証明書を表示して、新しいものになっていればOK。
これで、今後の imaps 通信が( heartbleed 脆弱性によって)盗聴されることは無いはず。
ただ、これまでにユーザのパスワードが抜かれた可能性はあるかもしれない(?)ので、変更しておいた方が無難。
でも、あちこちの端末のMUAで設定を変えなければならないので面倒なんだよね。
しばらく mail.log でもチェックして、身に覚えの無い端末からのログインが無ければいいことにする。
2014年3月12日水曜日
biglobeの中継サーバがサービス終了
biglobe の中継サーバがサービス終了と言うことで postfix の設定を見直し。
http://scrawlpad.blogspot.jp/2008/11/postfix.html
- relayhost の宛先を [mail.biglobe.ne.jp]:587 に変更
- smtp_sasl_password_maps のファイルを作り直す
http://scrawlpad.blogspot.jp/2008/11/postfix.html
2013年9月18日水曜日
memory allocation error on cifs
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters
IRPStackSize DWORD 0x32
MaxMpxCt DWORD 0x0400
MaxWorkItems DWORD 0x1000
Size DWORD 3
コンピュータの管理>サービス>Server サービスの再起動
IRPStackSize DWORD 0x32
MaxMpxCt DWORD 0x0400
MaxWorkItems DWORD 0x1000
Size DWORD 3
コンピュータの管理>サービス>Server サービスの再起動
2013年9月10日火曜日
MD Detail 20130915
/dev/md0:
Version : 1.2
Creation Time : Thu Oct 20 16:40:21 2011
Raid Level : raid6
Array Size : 19535119360 (18630.14 GiB 20003.96 GB)
Used Dev Size : 1953511936 (1863.01 GiB 2000.40 GB)
Raid Devices : 12
Total Devices : 13
Persistence : Superblock is persistent
Update Time : Sun Sep 15 16:05:27 2013
State : clean, degraded, recovering
Active Devices : 11
Working Devices : 13
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 0% complete
Name : fs:0 (local to host fs)
UUID : 10314e2a:1b7d3110:a2228c28:1fdca881
Events : 91836
Number Major Minor RaidDevice State
16 8 177 0 spare rebuilding /dev/sdl1
1 8 97 1 active sync /dev/sdg1
2 8 113 2 active sync /dev/sdh1
14 8 209 3 active sync /dev/sdn1
9 8 33 4 active sync /dev/sdc1
8 8 49 5 active sync /dev/sdd1
7 8 65 6 active sync /dev/sde1
6 8 81 7 active sync /dev/sdf1
10 8 17 8 active sync /dev/sdb1
13 8 193 9 active sync /dev/sdm1
12 8 145 10 active sync /dev/sdj1
11 8 129 11 active sync /dev/sdi1
15 8 161 - spare /dev/sdk1
登録:
投稿 (Atom)