2014-11-26

rbash

この記事にて rbash を使ったユーザのコマンド制限方法が紹介されている.
以下のように .bash_profile を設定する.
# cd /home/foo
# chown root:root .bash_profile
# chmod 755 .bash_profile 
この部分なのだが, たとえ所有者をrootにしても, ディレクトリの所有者がrootでないと, このファイルの削除や移動は可能. 従って, FTPやrsync (over SSH) でアクセス可能であれば上書き可能.

.bash_profile を上書き

remote $ rsync .bash_profile foo@host1.example.net:
Rsyncなどのサブシステムを使用不可能にしておく, ホームディレクトリの書き込み権限も取っておくなどすると, この攻撃はできなくなる.

2014-11-19

ホスティングサービス Coreserver のアカウントを作ってみた

そろそろ自宅のサーバとかを何とかしようとおもって, ホスティングサーバのアカウントを作った. 比較的安く, データベースもいくつか使えて, CronやSSHログインもできるところというわけで, Coreserver にした.

Valueserver が出て Coreserver を使う価値はないという人もいるけれど, いくつかのウェブサイトを1アカウントで運営したい場合, Coreserver の方が良いかも.

どのサーバを契約したかまでは公開できないが, 主なスペックを以下にあげておく.

CPUXeon E5-2670
メモリ8GB
DistributionSUSE LINUX 10.0 (i586)
OSLinux version 2.6.32.61-smp

Pythonのライブラリがあまり整っていなくて, MySQL や PostgreSQL にアクセスできない. もちろん, PHP からは MySQL も PostgreSQL も使用可能.

それから, ls をうつと,

rbash: /bin/ls: restricted: cannot specify `/' in command names
と出てくる. ログインシェルを rbash にするなら, これくらいはなんとかしておいてほしい. 以下のように, unaliasしておくと良い.
unalias ls
getent passwdしてみると, どうやらほとんどのユーザはログインシェルをbashに変更済みのようだ.

Cronが不安定

しばらく使っていたが, ときどき, cron のジョブが実行されていないと思われる状況がある. 失敗した時は標準出力へ出しているので, メールが届くはずなのだが, それも来ない.

RPMのスペックファイルを自動修正

あるサーバでは, httpd の SUEXEC_UID_MIN を 500 より小さく設定しなければならず, httpd が更新されるたびに RPM をビルドしなおしている. 修正するスクリプトを作ってみた.
#! /bin/bash

date="$(LANG=C date +'%a %b %d %Y')"

sed -i.suexec \
 -e 's/^Release: \(.*\)/Release: \1o/' \
 -e 's/--with-suexec-uidmin=500/--with-suexec-uidmin=499/' \
 -e '/^%changelog/a\'"* $date Our Auto Patch Script \n- change SUEXEC_UID_MIN 500 -> 499\n" httpd.spec

2014-11-13

F-05D を Linuxマシンに接続しMTPでファイルをやりとりする

Fedora にて, 携帯電話とMTPでファイルのやり取りをする方法をメモする.

まずは simple-mtpfsをインストールし, UDEVの設定をする.

  1. $ sudo yum install simple-mtpfs
  2. lsusb で, VIDとPIDを調べておく.
  3. /usr/lib/udev/rules.d/51-android.rulesに以下の1行を書く.
    SUBSYSTEM=="usb", ATTR{idVendor}=="04c5", ATTR{idProduct}=="1335", MODE="0666"
  4. udevadm control --reload
  5. 携帯電話を一度抜き, もう一度さす. これで, 新しいルールでディバイスファイルが設定される.
マウントする.
$ mkdir mtp.d
$ simple-mtpfs mtp.d

参考にしたページ

  • MTP - Arch Linux
  • 2014-11-06

    Python: 正規表現でUTFの韓国語を検索

    UTF-8で, 韓国語が含まれるかどうかを検索する場合, Python では, 以下の正規表現を使えば良い.
     u"[\uac00-\ud7af\u3200-\u321f\u3260-\u327f\u1100-\u11ff\u3130-\u318f\uffa0-\uffdf\ua960-\ua97f\ud7b0-\ud7ff]"
    
    Unicode Character Name Index から作った.

    日本語・韓国語まじりのUnicode文字列から, 韓国語だけを除去する場合, 以下のようにすればよいだろう.

    >>> s_with_korean = u'こんにちは。안녕하세요. Hello.'
    >>> r = re.compile(u"[\uac00-\ud7af\u3200-\u321f\u3260-\u327f\u1100-\u11ff\u3130-\u318f\uffa0-\uffdf\ua960-\ua97f\ud7b0-\ud7ff]+[\\s\.,]*")
    >>> s_without_korean = re.sub(r, u'', s_with_korean)
    >>> print (s_without_korean)
    こんにちは。Hello.
    
    Python 2.7 と 3.3 で確認した.