vsftpd 2.3.2でlocal_umask=022がうまく動かない

/etc/vsftpd.confにlocal_umask=0022を設定しても、アップロードしたファイルのパーミッションが0700になってしまう。

# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=0022

umask=0077で0700になるのであれば基準となるパーミションは0777であり、umask=0022に設定すれば0755となると思っていたのだけれど、VSFTPD.CONFのマニュアルによると、ディレクトリ/ファイルが「アップロードで作成された場合」はこの限りではなく、デフォルトは0666である様子。

file_open_mode
The permissions with which uploaded files are created. Umasks are applied on top of this value. You may wish to change to 0777 if you want uploaded files to be executable.
Default: 0666

よって同ファイルにfile_open_mode=0777を追加することで解決した。

# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=0022
file_open_mode=0777

ファイルを「vsftpdを通しながらアップロード以外で作成する」という場面が思いつかず、こうすればとりあえず使える的な内容に。お恥ずかしい限り。

zfs/raidz1のディスクを交換する(2ヶ月でorz…)

購入したHDDが2ヶ月ほどでお亡くなりに。ディスク自体は保証期間内なので何とかするとして、せっかく組んだzfsで早くもディスク交換を実行することに。手順は次の通り。

  1. ディスクをofflineに変更
  2. シャットダウン後にディスクを取り替える
  3. ディスクをonlineに変更
  4. 同期

状況確認。ada0がREMOVE状態になっている。ソフトウェア上はオンラインだがハードウェア上では「ディスクが外された」状態ということか。

# zpool status
  pool: zpool0
 state: DEGRADED
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zpool0      DEGRADED     0     0     0
          raidz1    DEGRADED     0     0     0
            ada0    REMOVED      0     0     0
            ada1    ONLINE       0     0     0
            ada2    ONLINE       0     0     0
            ada3    ONLINE       0     0     0

errors: No known data errors

ディスクをofflineに変更。ソフトウェアにも「外したよ」と伝える。

# zpool offline zpool0 ada0
# zpool status
  pool: zpool0
 state: DEGRADED
status: One or more devices has been taken offline by the administrator.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Online the device using 'zpool online' or replace the device with
        'zpool replace'.
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zpool0      DEGRADED     0     0     0
          raidz1    DEGRADED     0     0     0
            ada0    OFFLINE      0     0     0
            ada1    ONLINE       0     0     0
            ada2    ONLINE       0     0     0
            ada3    ONLINE       0     0     0

errors: No known data errors

シャットダウン後にディスクを取り替えて状況確認。

# zpool status
  pool: zpool0
 state: DEGRADED
status: One or more devices has been taken offline by the administrator.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Online the device using 'zpool online' or replace the device with
        'zpool replace'.
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zpool0      DEGRADED     0     0     0
          raidz1    DEGRADED     0     0     0
            ada0    OFFLINE      0     0     0
            ada1    ONLINE       0     0     0
            ada2    ONLINE       0     0     0
            ada3    ONLINE       0     0     0

errors: No known data errors

ディスクをonlineに変更。onlineにすること自体は成功するが状況がUNAVAILとなる(これは正常)。

# zpool online zpool0 ada0
warning: device 'ada0' onlined, but remains in faulted state
use 'zpool replace' to replace devices that are no longer present

# zpool status
  pool: zpool0
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-4J
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zpool0      DEGRADED     0     0     0
          raidz1    DEGRADED     0     0     0
            ada0    UNAVAIL      0     0     0  corrupted data
            ada1    ONLINE       0     0     0
            ada2    ONLINE       0     0     0
            ada3    ONLINE       0     0     0

errors: No known data errors

データのリプレイス。

#zpool replace zpool0 ada0

リプレイスの途中経過。

# zpool status
  pool: zpool0
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
 scrub: resilver in progress for 0h0m, 1.04% done, 1h25m to go
config:

        NAME            STATE     READ WRITE CKSUM
        zpool0          DEGRADED     0     0     0
          raidz1        DEGRADED     0     0     0
            replacing   DEGRADED     0     0     0
              ada0/old  UNAVAIL      0     0     0  cannot open
              ada0      ONLINE       0     0     0  1.28G resilvered
            ada1        ONLINE       0     0     0
            ada2        ONLINE       0     0     0
            ada3        ONLINE       0     0     0

errors: No known data errors

1時間21分でで完了です。

# zpool status
  pool: zpool0
 state: ONLINE
 scrub: resilver completed after 1h21m with 0 errors on Tue Nov  1 00:27:20 2011
config:

        NAME        STATE     READ WRITE CKSUM
        zpool0      ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            ada0    ONLINE       0     0     0  123G resilvered
            ada1    ONLINE       0     0     0
            ada2    ONLINE       0     0     0
            ada3    ONLINE       0     0     0

errors: No known data errors

rsyncとsshを利用してファイルのバックアップ(同期)を行う

rsyncを利用してファイルのバックアップを行う。sshdおよびrsyncはインストール済みとする。

サーバー側のsshdの設定を行う。下記2行の#を外して再起動する。

#PubkeyAuthentication yes
#AuthorizedKeysFile      .ssh/authorized_keys
userTo:~$ /etc/init.d/sshd restart

キーペアをクライアント側で作成する。このときにpassphraseは空白のままにしておく。もし入力をするとsshの実行時にパスワードを聞かれるため、自動実行が不可能になる。

userFrom:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user_from/.ssh/id_rsa):
/home/userFrom/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):(空白にする)
Enter same passphrase again:(空白にする)
Your identification has been saved in /home/userFrom/.ssh/id_rsa.
Your public key has been saved in /home/userFrom/.ssh/id_rsa.pub.
The key fingerprint is:
05:41:78:63:93:3c:65:e1:66:85:b3:dd:28:3a:57:9f userFrom@server

公開鍵をサーバー側のauthorized_keysへ追加する。

userTo:~$ cat id_rsa.pub >> /home/userFrom/.ssh/authorized_keys

sshのテストを行う。下記のコマンドを実行した際にパスワードは聞かれずにログインできれば問題ない。

userFrom:~$ ssh 192.168.1.***

rsyncを開始する。nohupを付けることにより、処理をユーザーがログアウト後も実行し続ける。

userFrom:~$ nohup rsync -avz -e ssh /path/to/files 192.168.1.***:/home/userTo/backup&
nohup: appending output to `nohup.out'
[1] 1333

場合により –delete を付けてバックアップを行う。バックアップ先に存在しないファイルはバックアップ元でも削除される。上記のように付けない場合には単純にコピーを行う。

userFrom:~$ nohup rsync -avz -delete -e ssh /path/to/files 192.168.1.***:/home/userTo/backup&

参考:rsyncとsshで別のマシンにバックアップ

zfs/raidz on FreeBSD

zpoolの作成からファイルシステムの作成とマウント、それぞれの削除、アンマウントまでのコマンド備忘録。

ada0からada3までを使ってraidzのzpoolを作成する。

#zpool create zpool0 raidz ada0 ada1 ada2 ada3

作成したzpoolの状態はzpool statusコマンドで表示する。

#zpool status
	NAME	STATE	READ	WRITE	CKSUM
	zpool0	ONLINE	 0	0	0
	 raidz1	ONLINE	 0	0	0
	  ada0	ONLINE	 0	0	0
	  ada1	ONLINE	 0	0	0
	  ada2	ONLINE	 0	0	0
	  ada3	ONLINE	 0	0	0

zfsのファイルシステムの状態はzfs listコマンドで表示する。

#zfs list
        USED	AVAIL	REFER	MOUNTPOINT
zpool0	155K	5.34T	31.4K	/zpool0
zpool0/storage	31.4K	5.34T	31.4K	/zpool0/storage

zpool0以下にstorageという名前のファイルシステムを作成する。

#zfs create zpool0/storage
#zfs list
        USED	AVAIL	REFER	MOUNTPOINT
zpool0	155K	5.34T	31.4K	/zpool0
zpool0/storage	31.4K	5.34T	31.4K	/zpool0/storage

作成したzpool0/storageを/mnt/storageにマウントする。

#mkdir /mnt/storage
#zfs set mountpoint=/mnt/storage zpool0/storage
#zfs list
        USED	AVAIL	REFER	MOUNTPOINT
zpool0	155K	5.34T	31.4K	/zpool0
zpool0/storage	31.4K	5.34T	31.4K	/mnt/storage

マウントポイントを消去する。

#zfs set mountpoint=none zpool0/storage
#zfs list
        USED	AVAIL	REFER	MOUNTPOINT
zpool0	155K	5.34T	31.4K	/zpool0
zpool0/storage	31.4K	5.34T	31.4K	none

ファイルシステムを消去する。

#zfs destroy zpool0/storage
#zfs list
        USED	AVAIL	REFER	MOUNTPOINT
zpool0	155K	5.34T	31.4K	/zpool0

その他1:zpool0を消去する。

#zpool destroy zpool0

その他2:ada0とada1を使ってmirrorのzpoolを作成する。

#zpool create zpool0 mirror ada0 ada1

xargs

grepの効率の良い使い方を探していたらxargsを見つけました。標準入力からのファイル名に対してコマンドを実行してくれるようです。

たとえば、複数のディレクトリにまたがったhtmlファイル中の<title>タグに対してgrepしたいときなどに便利です。

% find -name '*.html' | xargs grep '<title>'

参考

1234567890

UNIXTIMEは1970年1月1日からの秒数を延々と数え上げているわけですが、その数字が近々1234567890となる模様。参考記事のスクリプトを走らせたところ「Sat Feb 14 08:31:30 2009」にその時を迎えるようです。だからなんだと言えばそれまでですが、こういった数字の並びは純粋に美しいです。

でも、土曜日だからその時間には布団の中にいるような。。。

perl -e 'print scalar localtime(1234567890),"\n";'

参考

unixでテキストファイルなどの行数を確認する。

コマンドラインからテキストファイルなどの行数を確認する。他のコマンドからの出力をカウントすることができるので、ファイル数、ディレクトリ数を確認するのに便利かも。

$ wc

次のようなオプションもある。

  • -l(行数を表示する)
  • -w(単語数を表示する)
  • -c(ファイルサイズ(byte数)を表示する)