2011年9月30日金曜日

pamとは

Linuxで認証系の設定をしようとすると避けては通れないPAMのメモ。
PAM:Pluggable Authentication Modulesということくらいは知っていたが、設定がよくわからなかった。

# cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
...

上記は、system-authの抜粋。

左から、
type control module module-arguments
という感じで記述する。
typeは、
auth, account, password, session
の4種類あって、
auth はその名の通り認証系の設定
account は、アカウントの有効期限が正しいか、有効か、などのチェック
password は、チャレンジレスポンス認証などの際に、トークンを更新するのに使う
session は、ロギング等に使う。

controlは、
required, requisite, sufficient, optional, include
の5種類。
required に設定されていると、モジュールを必ず通る
requisite は、requiredに似ているが、失敗するとそこで止まる。
sufficient は、成功するとそこで認証を終わる。

2011年9月1日木曜日

memcached を複数起動する方法

memcachedを複数動かしたいと言われたので対応。

■ /etc/sysconfig/memcached を適当にコピーして変更
# cp /etc/sysconfig/memcached /etc/sysconfig/memcached-2

PORT="11212"
USER="nobody"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
■ /etc/init.d/memcached を適当にコピーして変更

#! /bin/sh
#
# chkconfig: - 55 45
# description:  The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached

# Source function library.
. /etc/rc.d/init.d/functions

PORT=11212
USER=nobody
MAXCONN=1024
CACHESIZE=64
OPTIONS=""

if [ -f /etc/sysconfig/memcached ];then
    . /etc/sysconfig/memcached-2
fi

# Check that networking is up.
if [ "$NETWORKING" = "no" ]
then
    exit 0
fi

RETVAL=0
prog="memcached"

start () {
    echo -n $"Starting $prog: "
    # insure that /var/run/memcached has proper permissions
    chown $USER /var/run/memcached
    daemon memcached -d -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached-2.pid $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached-2
}
stop () {
    echo -n $"Stopping $prog: "
    killproc memcached
    RETVAL=$?
    echo
    if [ $RETVAL -eq 0 ] ; then
        rm -f /var/lock/subsys/memcached-2
        rm -f /var/run/memcached-2.pid
    fi
}

restart () {
    stop
    start
}


# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
    stop
    ;;
    status)
    status memcached
    ;;
    restart|reload)
    restart
    ;;
    condrestart)
    [ -f /var/lock/subsys/memcached-2 ] && restart || :
    ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
    exit 1
esac

exit $?
ロックファイルとpidファイルだけリネームしておけばよさそう。

■ chkconfigに登録と起動
# chkconfig --add memcached-2
# service memcached-2 start
※chkconfig動いてない場合は、普通に/etc/init.d/memcached-2 start で起動する

■ 変更したポートで動いてるか確認
# telnet localhost 11212
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set foo 0 100 4
test
STORED
get foo
VALUE foo 0 4
test
END
めでたし。