[Mac] Macにsshpassをインストールする

Macにsshpassをインストールしようと思いHomebrewを使ってみたところ、

$ brew install sshpass

Error: No available formula for sshpass

We won’t add sshpass because it makes it too easy for novice SSH users to

ruin SSH’s security.

セキュリティーに問題があるので、やめとけと言われます。

とはいえ、sshpassを必要するソフトウェアはあるので、誰かが公開してくれたFormulaを利用させてもらいます。

$ brew install http://git.io/sshpass.rb

以上です。
ちなみにファイルに中身は、

require ‘formula’
class Sshpass < Formula
  url ‘http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz’
  homepage ‘http://sourceforge.net/projects/sshpass’
  sha256 ‘c3f78752a68a0c3f62efb3332cceea0c8a1f04f7cf6b46e00ec0c3000bc8483e’
  def install
    system “./configure”, “–disable-debug”, “–disable-dependency-tracking”,
    “–prefix=#{prefix}”
    system “make install”
  end

  def test
    system “sshpass”
  end
end

と単純なので、自分DL & ./configure & make installしてもOKですが、brewを使った方が管理しやすいので利用しました。

ntpの設定

ntpdateの設定

ntpの設定を行う前に、手動で時刻を合わせるためにntpdateをインストールします。

# yum install ntpdate

NTPでの時刻同期の際にサーバ内のハードウェアクロックを更新するために、次のように設定を変更しておきます。

# diff /etc/sysconfig/ntpdate.org /etc/sysconfig/ntpdate
5c5
< SYNC\_HWCLOCK=no
—
> SYNC\_HWCLOCK=yes

設定後、ntpdateを用いて手動更新しておく。

# ntpdate ntp.nict.jp

ntpの設定

ntpをインストールする。

# yum install ntp

外部からサーバのntpdサービスの利用を無効化するとともに、さくらインターネットの場合は、用意してくれているNTPサーバ ntp1.sakura.ad.jp を参照するように、次のようにntp.confを変更しておきます。

$ diff /etc/ntp.conf.org /etc/ntp.conf
8,9c8,11
< restrict default kod nomodify notrap nopeer noquery
< restrict -6 default kod nomodify notrap nopeer noquery
—
> #restrict default kod nomodify notrap nopeer noquery
> restrict default ignore
> #restrict -6 default kod nomodify notrap nopeer noquery
> restrict -6 default ignore
15a18
> restrict ntp1.sakura.ad.jp kod nomodify notrap nopeer noquery
22,24c25,28
< server 0.rhel.pool.ntp.org
< server 1.rhel.pool.ntp.org
< server 2.rhel.pool.ntp.org
—
> #server 0.rhel.pool.ntp.org
> #server 1.rhel.pool.ntp.org
> #server 2.rhel.pool.ntp.org
> server ntp1.sakura.ad.jp

ntpdを起動します。

# service ntpd start

ntpdがサーバ起動時に自動的に起動されるように設定しておきます。

# /sbin/chkconfig ntpd on

HDDのパーティションのUUIDの調べ方

HDDの各パーティションにはUUIDという固有の番号が振られていますが、これは以下のコマンドで調べることが出来ます。

$ sudo blkid /dev/sda1

/dev/sda1: UUID=”f014****-5fe1-****-bed5-****0346****” TYPE=”ext4″

最近のCentOSなどではfstabは以下のようになっていると思います。

/dev/mapper/centos-root / xfs defaults 0 0
UUID=f014****-5fe1-****-bed5-****0346**** /boot ext4 defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0

たまにfstabが壊れる時があると思いますが、再構築したい場合は上記のコマンドで調べたUUIDをfstabに記載すればfstabを再構築できます。

ちなみに、コマンドがない場合は、/dev/disk/by-uuidを見ると分かるかもしれない(こちらの方が楽?)

$ ls -l /dev/disk/by-uuid/
合計 0
lrwxrwxrwx. 1 root root 10 12月 21 12:23 f014****-5fe1-****-bed5-****0346**** -> ../../sda1

スパースバンドルディスクイメージの容量を増やす

スパースバンドルディスクイメージでは、ファイルを削減しても容量が増えません。

そのため、削減した分の領域を再利用できるように以下のコマンドを実行する必要があります。

$ hdiutil compact filename.sparseimage

SELinuxが有効な状態でのtar コピー

SELinuxが有効な状態ではディレクトリやファイルのリソースにはタイプが付与されており、通常のtar コマンドでは現在のタイプを保持したままコピーすることはできない。そのため、starコマンドを使用する必要がある。

$ sudo yum install star

starを入れた後、コピー元のディレクトリに移動し、

# star cvf – . -H=exustar -xattr | (cd コピー先; tar xvf -)

とするとコピーできる。

gitコマンドを使わず削除してしまったファイルの扱い

gitで管理されているファイルを普通にrmコマンドで削除してからcommitしようとすると次のようなメッセージが出てコミットの対象外になってしまいます。

$ git status
# On branch master
# Changes to be committed:
# (use “git reset HEAD <file>…” to unstage)
#
# modified: HogehogeApp/static/css/bootstrap.css
# new file: HogehogeApp/static/css/bootstrap.css.map
# modified: HogehogeApp/static/css/bootstrap.min.css
略
#
# Changed but not updated:
# (use “git add/rm <file>…” to update what will be mmitted)
# (use “git checkout — <file>…” to discard changes in working ectory)
#
# deleted: HogehogeApp/static/css/base.css
# deleted: HogehogeApp/static/css/changelists.css
# deleted: HogehogeApp/static/css/dashboard.css
# deleted: HogehogeApp/static/css/forms.css
略

解決策は簡単で数が少ないときは、deletedで示されたファイルを

$ git rm HogehogeApp/static/css/base.css

としてからcommitすればOKなのですが、数が多いと都度rmするのは大変なので、

$ git status | grep deleted | awk ‘{print $3}’ | xargs git rm
$ git commit

と一括で削除してからcommitしましょう。

拡張子の一括変更の仕方

Macではファイル名にスペースが含まれる場合があるので、そのままでは簡単に変更できない。
また、iTunesでは同じフォーマットでも拡張子によってオーディオブック形式になり倍速再生が可能になったりする。

変更したいファイルが同一のフォルダにある場合は次のコマンドで一括変更が可能。(例:m4a → m4b)

$ for i in *.m4a; do mv “$i” “${i%.m4a}.m4b”; done

inの後ろはlsではなく*にするのがポイント。lsではスペースが上手く処理できない。

Postfixの設定

postfixのインストール

古いCentOSやFedoraには標準状態ではMTAとしてsendmailが導入されています。

sendmailは非常に歴史は古いですが使い勝手が悪いため、Postfixがインストールされていない場合は、以下のインストール手順でインストールします。

# yum install postfix

postfixのインストールに成功したら、sendmailの削除を行います
(順序を間違えると依存関係でcrontabsなど必要なソフトまで削除される)

# yum remove sendmail

管理者用メールアドレスの変更

サーバー内のサービス用のアカウント(wwwとかftpとか)のエラーメールは全てrootに届くようにaliasが設定されている。

これを適切な管理者に設定しておかないとエラーメールがローカルに貯まってしまう。

/etc/aliasesの最下行に

root: hoge@hogehoge.com

といった管理者のメアドを追加し、

# newaliases

コマンドを実行して、設定内容を反映させておく。

全般設定

以下のように設定を変更します。
グローバルインターフェースにてSMTPをlistenする
(以下、diffの形式で変更点を記載しています。)

# diff main.cf.org main.cf

115,116c115,116
< #inet\_interfaces = $myhostname, localhost
< inet\_interfaces = localhost
—
> inet\_interfaces = $myhostname, localhost
> #inet\_interfaces = localhost

IPv4のみ使用するように設定

119c119
< inet\_protocols = all
—
> inet\_protocols = ipv4

メールボックスの形式としてMaildirを使用

419c419
< #home\_mailbox = Maildir/
—
> home\_mailbox = Maildir/

不必要なバナー表示を行わない

570a571
> smtpd\_banner = $myhostname ESMTP

送信元ホスト名やサイズのチェックを行う。

676a678,686
>
> disable\_vrfy\_command=yes
> smtpd\_helo\_required=yes
> mailbox\_size\_limit=1024000
> message\_size\_limit=1024000

サービスの起動設定

postfixの起動設定を以下のコマンドで確認

# /sbin/chkconfig –list postfix

現在のランレベルがonになっていることを確認する。

以下のコマンドでpostfixのプロセスを起動させる

# /etc/init.d/postfix start

なお、プロセスが起動しないと、mailコマンドでメール送信しようとした時に以下のエラーが出るので注意。

$ postdrop: warning: unable to look up public/pickup: No such file or directory

GNU Screenにパスワードを設定する

サーバーを管理する際にGNU Screenを使うと作業を中断せずにサーバから一時的に切断することが出来て便利です。

しかし、rootで作業したままセッションを切断すると、ユーザーのアカウントが何らかの原因で使われた際に即rootになれるので危険です(sudo使えって話かもしれませんが^^;)

そのため、GNU Screenにパスワードを設定します。
まず、一旦screenを起動します。

$ screen

次に暗号化パスワード作成します。

$ ctrl-a :password
New screen password: 入力
Retype new password: 確認のために再入力

デフォルトのコマンド文字はctrl-aですが、.screenrcでコマンド文字を変更している場合はctrl-aの部分を設定したコマンド文字に変更してください。

コマンド文字の後で「:」を打つと画面下に文字入力できますので、「password」と打ち込んで、設定するパスワードを確認も含めて2度打ち込んでください。

$ ctrl-a ]
$ erNqsdebEHp

ctrl-aの後]を入力すると、画面に暗号化されたパスワードが表示されますので、これをメモしておきます。そして、.screenrcに

password erNqsdebEHp

を記入すると、再度screenにアタッチする際にパスワードを聞いてくるようになります。

Linux(Cent OS)上のParallels Toolsをアンインストールする

急にParallels Toolsがおかしくなって、Xの起動時に画面が真っ暗になって起動しなくなりました。

Parallels Toolsを再インストールしようとしても、「処理」メニューには「Parallels Toolsの再インストール」ってメニューは 表示されるものの、選択してもイメージはマウントされず、困り果ててました。

いろいろ調べたところ、以下のコマンドでParallels Toolsをアンインストール出来ました。

$ sudo /usr/lib/parallels-tools/install -r

uninstallに成功後に再起動すると、再度「処理」メニューに「Parallels Toolsのインストール」が表示されるようになり、一からインストールすることが出来ました。