ubuntu トーシロメモ

※検索してこのページへ訪れた人へ。このブログ書いてる人は、Ubuntuは素人なので、あまり書いてある内容を信用しないでください。

最近Ubuntuのサーバをセットアップしています。何分初めてのOSなので手探り状態、このメモは自分のための備忘録みたいなもんです。

サーバとして使っていますが、わが家も役割ごとに使えるPCが余っているわけではないので、ウブンツがメイン仕様のデスクトップマシンとして使えるのか、の実験も兼ねています。


サーバ版をインストール。64bitのカーネルが入ったようである。

kk@saber:~$ more /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.04
DISTRIB_CODENAME=natty
DISTRIB_DESCRIPTION="Ubuntu 11.04"
kk@saber:~$ uname -a
Linux saber 2.6.38-8-server #42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

FTP系

man vsftpd.conf より

       cmds_allowed
              This options specifies a comma separated list of allowed FTP commands (post login.  USER,
              PASS and QUIT and others are always allowed pre-login). Other commands are rejected. This
              is   a   powerful   method   of   really   locking   down   an   FTP   server.   Example:
              cmds_allowed=PASV,RETR,QUIT

              Default: (none)

       cmds_denied
              This  options  specifies a comma separated list of denied FTP commands (post login. USER,
              PASS, QUIT and others are always allowed pre-login). If a command appears  on  both  this
              and cmds_allowed then the denial takes precedence. (Added in v2.1.0).

              Default: (none)

と書いてあるけど、なんかうまくいかんかった。やりたかったことはクライアントからdeleteやmdeteleを使えないようにしようとしたんだけど・・・。Windowsftpデーモンソフトならどれも簡単にできることがlinuxだと結構大変なのね・・・。
ただ、vsftpd、ログがEUCではかれるみたい。これは致命的。せっかくutf8でファイルアップロードしてもらっても、それが化けてて???になっとる。vsftpd却下!


つづきましてproftpd を試しました。

utf8の問題は解決。ログもちゃんとutf8ではかれる。
動作も良好。
confファイルもちょこっとの変更で使える。


が、ffftpでファイル一覧が取得できない。
パッチがあるようだ。(1.3.3d用) → http://cgi.s1.xrea.com/var/net/about_proftpd.html
パッチのあてかた → http://www.hayasoft.com/haya/linux/proftpd_nlst_patch.html

# tar zxf proftpd-1.2.10.tar.gz
# patch -p0 < proftpd-1.2.10-nlst-ffftp.patch
# cd proftpd-1.2.10
# ./configure ・・・・

ただ、トーシロのぼくにはやり方がよくわからん。たぶんproftpdの公式からソースもってきて、やるみたいだけど、それだとservice コマンドとかで管理できないんだよね、きっと。うーん、よくわからないからffftp側で対応しますか・・。

ffftpでも対策

☆before

☆after


◆proftpのログから、最近アップしてもらったものだけを抽出(2011/06/12追記)

# grep "i r" /var/log/proftpd/xferlog |awk '{ print $2 " " $3 " " $4 " " $5 " " $9 }'

 //出力結果
Jun 09 04:52:30 2011 /data/knftp/Video/Movie/洋画/the_movie.mp4

"i r" を "o r" に変えればダウンロードしたものを抽出。


結果の/dataという文字列を個人的に消したいので上のコマンドも「 | vi - 」にわたしてやって

:%s/\/data//g

にしてやる。ここでまた\が半角で打てないのでわざわざ「えんまーく」で辞書登録した\を使うことに。こんなの絶対おかしいよ。
で、2011のあとのスペースがタブの方が見やすそうなので、さらに

:%s/2011 /2011たぶ/g

っと。上の「たぶ」ってのは実際にはtabキーを押したって意味ですからね。そうすると以下のよう出力になって見栄えがいい。

Jun 09 04:52:30 2011        /knftp/Video/Movie/洋画/the_movie.mp4

うん、これでいいよ。

この台詞をいって、思わず目から涙が・・・。実際のところはこれをさらに自動化したいんだが・・・・、まーこんど暇なときググろう。


LAN内に複数の機器がある場合は、モデム(ルータ)の設定を変更して外部からのftpアクセスが届くようにしてあげないといけない。
例: Aterm BH812Vの場合、「詳細設定」→「ポートマッピング設定」→「NATエントリ」にエントリを入れる。

    • 変換対象プロトコル : TCP
    • 変換対象ポート : 20-21 (表示上は「ftpdata-ftp」)
    • 宛先アドレス : 192.168.1.3 (ftpサーバのLAN上のアドレス)

 


Ubuntuのバージョン確認

# more /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.04
DISTRIB_CODENAME=natty
DISTRIB_DESCRIPTION="Ubuntu 11.04"

IME 、親指シフト関係

IMEの辞書登録ソフトが入っていない
(サーバでインストール後に言語追加で日本語入れたから?)

  1. Ubuntuソフトウェアセンターから「kasumi」と入力
  2. Anthy辞書エディタ」が検索結果にあらわれるので「インストール」
  3. ファイルの検索で「kasumi」と入力すれば辞書ツールが立ち上がる
    1. anthyが有効になってれば Ctrl + F7で辞書ツールが起動すると書いてたが、うちの環境はAppleKeyboardだからか、失敗
    2. 仕方ないからIMEを再起動し、IMEツールバーに辞書ツールのアイコンが表示されるようになったから、それでよしとするか・・・
  4. 私辞書のデータは ユーザーのホーム/.anthy/private_words_default というテキストファイルに保存される

ファイルコピー とバックアップ

rsync もはや定番。リモートへのバックアップも可能。逆も。

# rsync -arv Sorce Dest

dump / restore (dumpでスライスor filesystem まるごとコピーして、リストアで吐き出し先を指定できる。テープとかにも)
デフォルトでは入ってなかったので、インストール。

↓は /dev/sdb3 の全データを /Dest ディレクトリ配下に全コピー。ファイル・ディレクトリーの個別コピーではないため、速い。/Destは、ソースである/dev/sdb3以外のスライスである必要がある。Windowsでいうイメージコピーに少し近いかな。今試してみる限り、ext4でもext3の時と同様にできるみたい。
コピー中は、うちのパソコンの環境だと結構全体的な動作がもっさりになった。load average: 2.93 くらい。
   

$ sudo su
# apt-get install dump  ← dumpをインストールするとrestoreもついてくる

# cd /Dest  ←/Dest配下にコピーしたいので
        あらかじめ移動しておく
# dump 0f - /dev/sdb3 | restore -rf -  ←/dev/sdb3の全内容を(0f)を
                    カレントディレクトリに(-)、全部リストアする(restore -rf - )
                    くらいの意味でしょうか。すいません適当です。
  DUMP: Date of this level 0 dump: Fri May 27 16:15:27 2011
  DUMP: Dumping /dev/sdb3 (/bkup) to standard output
  DUMP: Label: /bkup
  DUMP: Writing 10 Kilobyte records
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 473607464 blocks.
  DUMP: Volume 1 started with block 1 at: Fri May 27 16:15:27 2011
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: 5.22% done at 82380 kB/s, finished in 1:30
  DUMP: 10.79% done at 85156 kB/s, finished in 1:22
  DUMP: 16.06% done at 84522 kB/s, finished in 1:18
  DUMP: 21.28% done at 83979 kB/s, finished in 1:13
  DUMP: 25.51% done at 80542 kB/s, finished in 1:13
  DUMP: 30.39% done at 79965 kB/s, finished in 1:08
  DUMP: 35.55% done at 80172 kB/s, finished in 1:03
  DUMP: 40.94% done at 80795 kB/s, finished in 0:57
  DUMP: 46.33% done at 81274 kB/s, finished in 0:52
  DUMP: 51.57% done at 81417 kB/s, finished in 0:46
  DUMP: 56.81% done at 81531 kB/s, finished in 0:41
  DUMP: 61.95% done at 81498 kB/s, finished in 0:36
  DUMP: 67.02% done at 81381 kB/s, finished in 0:31
  DUMP: 72.14% done at 81346 kB/s, finished in 0:27
  DUMP: 77.11% done at 81158 kB/s, finished in 0:22
  DUMP: 82.06% done at 80971 kB/s, finished in 0:17
  DUMP: 86.75% done at 80559 kB/s, finished in 0:12
  DUMP: 91.64% done at 80375 kB/s, finished in 0:08
  DUMP: 96.57% done at 80239 kB/s, finished in 0:03
  DUMP: Volume 1 completed at: Fri May 27 17:54:08 2011
  DUMP: Volume 1 473598820 blocks (462498.85MB)
  DUMP: Volume 1 took 1:38:41
  DUMP: Volume 1 transfer rate: 79986 kB/s
  DUMP: 473598820 blocks (462498.85MB)
  DUMP: finished in 5921 seconds, throughput 79986 kBytes/sec
  DUMP: Date of this level 0 dump: Fri May 27 16:15:27 2011
  DUMP: Date this dump completed:  Fri May 27 17:54:08 2011
  DUMP: Average transfer rate: 79986 kB/s
  DUMP: DUMP IS DONE
  ↑
  450GBが約1時間40分くらいでコピーできました。

アクセス制御

UNIXのアクセス制御やパーミッションの考え方は難しいな。rwx だけってのは違和感がある。ウィンドウズみたいに書き込みはできるけど、削除はできない、とか指定したいんだけど・・・。

sambaでみせてるディレクトリは(ユーザ:AAA グループ:AAA)である。 
とあるディレクトリ(ユーザ:BBB グループ:BBB)をsambaで使いたい。
でも とあるディレクトリはとあるアプリで使うものだから、パーミッションやオーナーはかえたくない。
ためしにとあるディレクトリのグループをsambaグループのAAAにしてみた(BBB→AAA)
でも、やはりサンバからは見えてこない。
しかたなくsetfaclにたよることにした。こういうの一度設定しちゃうと、あとで存在わすれれててハマりポイントになるんだよねー。でもいたしかたなし。

☆デフォルトでインストールされていなかったので追加
$ sudo su
# apt-get install acl

☆/bkup をacl 対応にする
# umount /bkup
# vi /etc/fstab
# grep bkup /etc/fstab
  #LABEL=/bkup	/bkup		ext4	defaults	0	0	
  LABEL=/bkup	/bkup		ext4	acl	0	0	
# mount /bkup

☆acl変更前
# getfacl /bkup
getfacl: 絶対パス名から先頭の '/' を削除

# file: bkup
# owner: BBB
# group: BBB
user::rwx
group::---
mask::r--
other::---

☆sambaで使うユーザ(samba)で追加してやる
# setfacl -Rm u:samba:rx /bkup

☆acl変更後
# getfacl /bkup
getfacl: 絶対パス名から先頭の '/' を削除

# file: bkup
# owner: BBB
# group: BBB
user::rwx
user:samba:r-x
group::---
mask::r-x
other::---

これで無事、Windowssambaユーザーから /bkupディレクトリが見れるようになった。rだけだとフォルダが開けないので、rとxを指定するのがポイント。

Ubuntuはまったくのトーシロだけど、Redhatはちこっと触ったことがあるので、意外とナレッジを使いまわせることがわかってよかった。ただネットワーク関連のコンフィグファイルの置き場所とか、まだ慣れないなー・・・。いや、最近のCentOSでもIME Anthyデフォルトで親指シフトできるんで、つかいなれたCentくんでもよかったんだけど、やっぱりスタイリッシュじゃない。FB風にいえば「クールじゃない」ので、ubuntuにしたしだいです。

スクリーンショットとる

アプリケーション→スクリーンショットの取得
or
検索窓で「screen」と打つと候補ででてくる。

Dice

  DiceはEUCで動くみたいなのでターミナルの文字コードをEUCにしておく。

  http://homepage3.nifty.com/sarad/diced01914.tar.gz からファイルをゲットしておく。
# cd /usr/local/bin
# tar xzf dice.tar.gz
# cd DiCE
# /usr/local/bin
/DiCE/diced
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

:setup
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:2>
(N)変更しない  (P)戻る
>0
                                                                                                • -
プライベートIPアドレスも検出対象ですか? (Y/N) <現在:はい> (P)戻る >n
                                                                                                • -
IPアドレスの検出をテストしますか? (Y/N) (P)戻る >y 検出IPアドレス>127.0.1.1 ★なぜかIP拾ってこない
                                                                                                • -
IPアドレスの検出をテストしますか? (Y/N) >p
                                                                                                • -
IPアドレスの検出方法を指定してください (0) 自動検出 (1) ローカルのネットワークアダプタから検出 (2) 外部のスクリプトから検出 <現在:0> (N)変更しない (P)戻る >2
                                                                                                • -
スクリプトのURLを入力してください <現在:http://www.ugtop.com/spill.shtml> (N)変更しない (P)戻る >http://info.ddo.jp/remote_addr.php
                                                                                                • -
プライベートIPアドレスも検出対象ですか? (Y/N) <現在:いいえ> (P)戻る >n
                                                                                                • -
IPアドレスの検出をテストしますか? (Y/N) (P)戻る >y 検出IPアドレス>xxx.xxx.xxx.xxx ★スクリプト使うと拾ってこれた。確認君とか。
                                                                                                • -
IPアドレスの検出をテストしますか? (Y/N) (P)戻る >n
                                                                                                • -
IPアドレスをチェックする間隔を指定してください(分) 設定可能範囲は5分以上です <現在:10> (N)変更しない (P)戻る >n ================================================= DNSサーバーの負荷を軽減するために頻繁なDNS更新を防ぐ必要があります 前回の更新から一定時間DNS更新処理を行わないように保護時間を設定して ください(分) 設定可能範囲は10分から1440分です <現在:10> (N)変更しない (P)戻る >n ================================================= 設定を保存しますか? (Y/N) (P)戻る >y 設定を保存しました ================================================= :list (No.) (イベント名) (スケジュール) (次回予定) 0 *! ieServer-sched IPアドレス変化時 (7日毎) 06/04 15:05 :ex 0 このイベントは 3 分前に実行されています 短時間に何度も実行するとDNSサイトに警告を受けることがあります 実行してもよろしいですか?(Y/N) >y
  • 5/28 15:08 にieServer-schedの実行に失敗しました
Error: リクエストに対してエラーが発生しました : : :?  *** 起動オプション *** diced [-s|-d|-h|-e] [-b] [-l] -s 起動と同時に開始します -d 起動と同時にバックグラウンドで開始します -h コマンドオプションを表示します -b イベント実行時にビープ音を鳴らします -l ログを作成します -e 指定のイベントを実行して終了します  *** コマンド一覧 *** exit DiCEを終了します start DiCEを開始します startd DiCEをバックグラウンドで開始します setup DiCEの環境設定を行います list 登録済のイベント一覧を表示します add イベントを追加します ed[it] <番号> イベントを編集します del <番号> イベントを削除します en[able] <番号> イベントを有効にします dis[able] <番号> イベントを無効にします ev[ent] <番号> イベントの情報を表示します ex[ec] <番号> イベントを今すぐ実行します logcr ログをクリアします :ed 0
                                                                                                • -
[イベント名 ] ieServer-sched [状態 ] 有効 [DNSサービス ] ieServer [更新ホスト ] .xxx.dip.jp [ユーザ名 ] xxxx [IPアドレス ] [スケジュール ] IPアドレス変化時 (7日毎) [次回更新日時 ] 2011年6月4日、15:08:28 [最終実行日時 ] 2011年5月28日、15:08:28 [最終更新IPアドレス] * [最終更新結果 ] Error: リクエストに対してエラーが発生しました
                                                                                                • -
イベントを編集します DynamicDNSサービス名を入力してください <現在:ieServer> "?"で対応しているサービスを一覧表示します (N)変更しない (P)戻る >N
                                                                                                • -
<< ieServer Project >> URL: http://www.ieserver.net/
情報 ***
IPアドレスはサーバー側で自動検出します。 IPアドレスの指定は出来ません。 (入力しても無視されます) ================================================= ドメイン名を入力してください <現在:xxxxxxxxxx.dip.jp> "?"でドメイン一覧を表示します (N)変更しない (P)戻る >dip.jp ================================================= ホスト名を入力してください <現在:> (N)変更しない (P)戻る >xxxx ================================================= ログインユーザ名を入力してください <現在:kitakiyo> (N)変更しない (P)戻る >N ================================================= ログインパスワードを入力してください (N)変更しない (P)戻る >xxxxxxxxx ================================================= 登録するIPアドレスを入力してください <現在:自動> 空白にすると現在のIPアドレスを自動検出します (N)変更しない (P)戻る > ================================================= このイベントに題名を付けてください <現在:ieServer-sched> (N)変更しない (P)戻る >N ================================================= このイベントを実行するスケジュールを設定します
                                                                                                • -
実行する頻度を指定してください (番号入力) <現在:5> (0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回 (4)その他の周期 (5)IPアドレス変化時 (6)起動時 (N)変更しない (P)戻る >n
                                                                                                • -
IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると アカウントを削除されてしまうことがあります IPアドレスの変化が無い時に実行する間隔を指定してください <現在:0> (0)7日毎 (1)14日毎 (2)21日毎 (3)28日毎 (4)35日毎 (5)56日毎 (6)84日毎 (N)変更しない (P)戻る >n ================================================= 詳細オプションを設定します
                                                                                                • -
[ オフライン ] (0)No (1)Yes 番号>0 ================================================= このイベントを有効にしますか? (Y/N) (イベントの有効/無効は"EN/DIS"コマンドで切替えられます) >y ================================================= イベントを保存しますか? (Y/N) >y イベント"ieServer-sched"を保存しました ================================================= :list (No.) (イベント名) (スケジュール) (次回予定) 0 *! ieServer-sched IPアドレス変化時 (7日毎) 06/04 15:10 : :ex 0 このイベントは 1 分前に実行されています 短時間に何度も実行するとDNSサイトに警告を受けることがあります 実行してもよろしいですか?(Y/N) >y
  1. 5/28 15:10 にieServer-schedが実行されました
IPアドレスを更新しました :exit E# vi /etc/rc.local root@saber:/usr/local/bi n/DiCE# root@saber:/usr/local/bin/DiCE# root@saber:/usr/local/bin/DiCE# tail !$ tail /etc/rc.local # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /usr/local/bin/DiCE/diced -d -l exit 0
( 2011/09/11追記 : diced -d -l の 「-d」はデーモン起動、「-l」はログ記録、らしい。dicedとめるには # pkill -9 diced )

 ssh のポート番号変更

# vi /etc/ssh/sshd_config 
# grep Port !$
grep Port /etc/ssh/sshd_config
Port 2222
# /etc/init.d/ssh restart
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service ssh restart
# ssh localhost -p 22
ssh: connect to host localhost port 22: Connection refused
# ssh localhost -p 2222
root@localhost's password: 
ついでにiPhoneアプリ TouchTerm SSH (450円)をダウンロードしたら外出先からもサーバいじれて幸せになれた。事前にルータでport2222がUbuntu向くようにしとかないといけない。 ちなみに、sshできるユーザを指定したい場合は、sshd_configに AllowUsers 許可するユーザ 許可するユーザ のように、スペースで区切っていけばいい。許可されていないユーザがsshしてもパスワード認証のところまではいくが、正しいパスワードをいれてもはじかれるって仕組み。

Vi で改行コードを消す

scriptなどでログをとって、あとでviで見返したりすると^Mみたいな改行コードが入っていて邪魔い。そんなときは 置換で消す。
:%s/^M//g
ポイントは^Mは手動でうってもダメってこと。Ctrl+Vでビジュアル矩形選択→Ctrl+Mというコンボでやらないといけない。参考: http://www.atmarkit.co.jp/flinux/rensai/linuxtips/164linendm.html

Docky

画面左のメニューもかっこいいけど、Dockyというマック風のランチャーを入れてみました。マウスオーバーで拡大したり、横にぐりぐり動いたりしてかっこいい!

便利なキーボードショートカット(Unity用)

  • Ctrl+Alt+T 端末を起動する。
  • Super+A アプリケーションの検索ウィンドウを開く。
  • Super+F ファイルの検索ウィンドウを開く。
  • Super+D すべてのウィンドウを最小化する。もう一度押すと元に戻る。
  • Super+S ワークスペースの一覧を表示する。
  • Ctrl+Alt+L 画面をロックする。

gvim

  • ソフトウェアセンターからインストール
  • terminal から gvim で起動
  • .gvimrc とか使えたけど、以下のオプションが有効にならなくてガッカリ
    • :set guioptions+=a
    • :set clipboard+=unnamed
      • ぐぐってみたけど、よくわからん。どうもWindowsでいうクリップボードubuntuでいうクリップボードは違うもんらしい。レジスタだとかなんだとか、トーシロには分からないはなしばかりでちとこまった。
      • しかたないから代替策で。Ctrl+Vでビジュアル選択して 、「 "+y 」でいけました。ちと手間はかかるが、マウス使わなくていい唯一の方法。いまんとこ。これだとvimでもgvimでもできたし、いちいちsetしなくていいから、良い、とてもよい、ムイビエンだ!と自分に言い聞かせて使うことにした。
      • ぎゃくにfirefoxとかでコピーしたもんをviにはるにはpじゃなくて「"+p」でがんす。フンガー。
    • 小技: ls -l |vim - とか。コマンドの結果を直接vimで見れるってすごい。もう何も怖くない。こんなにうれしいことはない、ぼくにはvimがあるんだ。

cron

まずデフォルトのエディタがnanoになっていたので、使い方わからないのでvimにする。下の例はrootで実行。
# more .selected_editor 
# Generated by /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/vim"
すでにcronの設定をしていないか確認。
# crontab -l
no crontab for root
無いっすってでました。ので新規に編集します。
# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
root@saber:~# crontab -l
# m h  dom mon dow   command
3 3 * * * /root/rsync.sh
毎朝03:03にrysync.sh というシェルを実行します。 crontab -lで設定が入っていることを確認します。
# crontab -l
# m h  dom mon dow   command
3 3 * * * /root/rsync.sh
ここで入って入れば、とくに再起動したりとかは不要です。設定した時間になれば勝手にうごきます。

terminalでバックスラッシュ(\)がうてない

(2011/06/04 追記) なぜだ!terminal上でうつと全角の¥になる・・・。 しかたないからanthyの辞書登録でその辺のサイトから半角¥をコピーしてきてつかうことに。ほんとはもっとスマートな打ち方があるんだろうが・・・。 しかしUbuntuさん、デフォルトでこれなんて辛いっすね。grepで* を検索したいとき「\*」としないといけないのに、その度に日本語入力onにしたりとかって・・・大変だ・・・。

電卓

(2011/06/09 追記) winddowsだとファイル名の実行から "calc"と打つだけで簡単に電卓が開いたけど、ubuntuだと、gcalctool となる。unityは、スタイリッシュだけどデフォルトではいってるアプリをさがすのが不便だな。

ubuntu のパッケージ管理

(2011/06/22 追記) dpkg -l : インストールされたすべてのパッケージの情報(= rpm -qa )  (例) dpkg -l |grep ibus ( パッケージ名や説明にibusを含むものを表示) dpkg -L パッケージ名 :指定されたパッケージに含まれるファイルの一覧を出力 (参考) http://thinkit.co.jp/images/article/435-101.png (随時更新してきます・・・)