2011年 10月 の記事

CentOS 5 で ipv6 を無効にする方法

CentOS 5で ipv6 を無効にする方法は以下の通り。

/etc/modprobe.conf に以下の一行を追加。

install ipv6 /sbin/modprobe -n -i ipv6

参考:

以下の方法ではうまくいかなかった。

/etc/sysconfig/network

NETWORKING_IPV6=no

/etc/sysconfig/network-scripts/ifcfg-eth0

IPV6INIT=no
IPV6_AUTOCONF=no

/etc/modprobe.conf

alias ipv6 off
alias net-pf-10 off

環境:
CentOS 5.7 (x86)

uidNumber, gidNumber に比較演算子を使用する方法

ldap 検索時に、nidNumber をイコール(=) で検索していれば思う通りの結果が得られるが
小なりイコール( LE / ≦ / <=) や大なりイコール( GE / ≧ / >= )で検索すると思うように結果を
得られなかった。

# ldapsearch -LLL -x "uidNumber=10000" uid
dn: uid=Administrator,ou=Users,dc=example,dc=com
uid: Administrator
# ldapsearch -LLL -x "uidNumber=10001" uid
dn: uid=guest,ou=Users,dc=example,dc=com
uid: guest
# ldapsearch -LLL -x "uidNumber=10002" uid
dn: uid=user01,ou=Users,dc=example,dc=com
uid: user01
# ldapsearch -LLL -x "uidNumber=10003" uid
dn: uid=user02,ou=Users,dc=example,dc=com
uid: user02
# ldapsearch -LLL -x "uidNumber=10004" uid
dn: uid=user03,ou=Users,dc=example,dc=com
uid: user03
# ldapsearch -LLL -x "uidNumber>=10002" uid

以下の2つの方法で比較演算子を使用したldap検索が可能かを確認した。

1. nis.schema の builtin 属性の設定を変更
2. schema_prep.c を変更

1. nis.schema の builtin 属性の設定を変更
この方法はうまくいかなかったので参考として記述
/etc/openldap/schema/nis.schema の uidNumber と gidNumber に関する記述をコメントイン。
かつ、ORDERING を追加した。

# cd /etc/openldap/schema/
# cp -p nis.schema nis.schema.org
# vi nis.schema
attributetype ( 1.3.6.1.1.1.1.0 NAME 'uidNumber'
       DESC 'An integer uniquely identifying a user in an administrative domain'
       EQUALITY integerMatch
       ORDERING integerOrderingMatch
       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.1.1.1.1 NAME 'gidNumber'
       DESC 'An integer uniquely identifying a group in an administrative domain'
       EQUALITY integerMatch
       ORDERING integerOrderingMatch
       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
# slaptest
/etc/openldap/schema/nis.schema: line 42: Duplicate attributeType: "1.3.6.1.1.1.1.0"
slaptest: bad configuration file!

builtin の属性の変更方法が不明、あきらめて設定を戻す。

# mv nis.schema.org nis.schema

2. schema_prep.c を変更
次に、ソースから手がかりを入れるため、openldap のsrc.rpm を取得。

# wget http://vault.centos.org/5.7/os/SRPMS/openldap-2.3.43-12.el5_6.7.src.rpm

ディレクトリが存在しない場合は作成。

# mkdir /usr/src/redhat/

展開。

# rpm -i openldap-2.3.43-12.el5_6.7.src.rpm

ソースを変更する。

# cd /usr/src/redhat/SOURCES
# tar zxvf openldap-2.3.43.tgz
# vi openldap-2.3.43/servers/slapd/schema_prep.c
{ "uidNumber", /* for ldapi:// */
 "( 1.3.6.1.1.1.1.0 NAME 'uidNumber' "
 "DESC 'An integer uniquely identifying a user "
 "in an administrative domain' "
 "EQUALITY integerMatch "
 "ORDERING integerOrderingMatch "
 "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )",
{ "gidNumber", /* for ldapi:// */
 "( 1.3.6.1.1.1.1.1 NAME 'gidNumber' "
 "DESC 'An integer uniquely identifying a group "
 "in an administrative domain' "
 "EQUALITY integerMatch "
 "ORDERING integerOrderingMatch "
 "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )",
# mv openldap-2.3.43.tgz openldap-2.3.43.tgz.org
# tar zcvf openldap-2.3.43.tgz openldap-2.3.43/*
# rpmbuild -ba ../SPECS/openldap.spec
# (cd ../RPMS/x86_64/ ; 
 rpm -Uvh openldap-*rpm compat-openldap-2.3.43_2.2.29-12.7.x86_64.rpm)

比較演算子を使用して検索。

# ldapsearch -LLL -x "uidNumber>=10002" uid
dn: ou=Idmap,dc=example,dc=com

dn: uid=user01,ou=Users,dc=example,dc=com
uid: user01

dn: uid=user02,ou=Users,dc=example,dc=com
uid: user02

dn: uid=user03,ou=Users,dc=example,dc=com
uid: user03

これが正解かは不明だが、検索できるようになった。

環境:
CentOS 5.7 (x86_64)
OpenLDAP 2.3.43-12

NFS でマウントした Samba のシャドウコピーが見えない

Sambaのシャドウコピーを別のサーバで作成し、NFSでマウントしたが、シャドウコピークライアントから
アクセスすると、沈黙→タイムアウト→何も表示されず、といった結果になった。

smb.conf ( [global] )へ以下の設定を追記することで見えるようになった。

    kernel oplocks = no

他にも、シンボリックリンク先のシャドウコピーを見せようとした時も失敗した。これは、以下の設定を追記する
ことで見えるようになった。samba からシンボリックリンク先を見せるには必要な設定とのこと。

    follow symlinks = yes

環境:
CentOS 5.7 (x86_64)
Samba 3.5.4-0.83

Samba のシャドウコピーを日付でソートする方法

Sambaのシャドウコピーが日付ごとに並ばず、find コマンドの検索結果と同じ順でならんでしまった。
これを日付でソートする、ありがたいパッチが存在した。

Samba shadow_copy2 Enhancements

パッチをあてると、以下の設定できれいに並ぶようになった。

    vfs objects = shadow_copy2
    shadow: snapdir = /var/samba/.snapshot/public
    shadow: basedir = /var/samba/public
    shadow: sort = desc

環境:
CentOS 5.7 (x86_64)
Samba 3.5.4-0.83

Samba でシャドウコピーを有効にする方法

Sambaでシャドウコピーを有効にする方法は以下の通り。

1. 共有フォルダ設定へ以下を追記。今回は [public] へ追記した。

    vfs objects = shadow_copy2
    shadow: snapdir = /var/samba/.snapshot/public
    shadow: basedir = /var/samba/public

2. シャドウコピー用のディレクトリを作成。

# VSS_DIR='@GMT-'`TZ=GMT date +%Y.%m.%d-%H.%M.%S`
# mkdir -p /var/samba/.snapshot/public/${VSS_DIR}

4. データをコピー。

# rsync -avA /var/samba/public/ /var/samba/.snapshot/public/${VSS_DIR}
# unset VSS_DIR

2回目以降は –link-dest オプションをつけると、差分コピーになる。

# rsync -avA --link-dest=<最新シャドウコピーディレクトリ> <共有フォルダ> <新規シャドウコピーディレクトリ>

最新のシャドウコピーと、共有フォルダの内容を比較して、変化のないファイルはハードリンクとして
新規シャドウコピーディレクトリに作成される。変化のあるファイルはコピーされる。ext3でそのまま
rsyncするよりLVMスナップショットを使用して、整合性のある状態でrsyncした方が安心できた。
LVMスナップショットを使用しないrsyncでのコピーでも作成は可能だった。

シェルスクリプトで1日に1~2回実行すれば、とても便利になる、かもしれない。

環境:
CentOS 5.7 (x86_64)
Samba 3.5.4-0.83

参考:

Sambaのシャドウコピーが日付ごとに並ばない。
NFSマウント領域のSambaのシャドウコピーが見えない。

Samba の動的な WINS エントリを複製する方法

SambaのWINSエントリを複製する方法は以下の通り。

Samba のための簡易 WINS 複製機能 – wins-push

コマンドラインから動的に登録できます。

追加

# wins-push add DUMMY01 20 0 192.168.1.200
/usr/local/sbin/wins-push: INFO: push to 192.168.1.103: op=add, name=DUMMY01#01, ttl=0, ip=192.168.1.200

リフレッシュ

# wins-push refresh DUMMY01 20 0 192.168.1.200
/usr/local/sbin/wins-push: INFO: push to 192.168.1.103: op=refresh, name=DUMMY01#20, ttl=0, ip=192.168.1.200

削除

# wins-push delete DUMMY01 20 0 192.168.1.200
/usr/local/sbin/wins-push: INFO: push to 192.168.1.103: op=delete, name=DUMMY01#20, ttl=0, ip=192.168.1.200

Samba の WINS 機能に静的エントリを追加する方法

SambaのWINS機能に静的エントリを追加する方法は以下の通り。

1. nmbd を停止。

# /etc/init.d/nmb stop

2. /var/lib/samba/wins.dat へ追記。

# cat wins.dat
VERSION 1 0
"SAMBA01#00" 1317384093 192.168.1.101 66R
"EXAMPLE#1b" 1317384093 192.168.1.101 64R
"EXAMPLE#00" 1317384093 0.0.0.0 e4R
"EXAMPLE#1c" 1317384093 192.168.1.101 e4R
"SAMBA01#03" 1317384093 192.168.1.101 66R
"EXAMPLE#1e" 1317384093 0.0.0.0 e4R
"SAMBA01#20" 1317384093 192.168.1.101 66R

1317384093 の部分を 0 にすると無期限に登録される。
#00, #1b (NetBIOS サフィックス) が持つ意味

【例】

"SAMBA02#00" 0 192.168.1.102 64R

3. nmbd を起動。

# /etc/init.d/nmb start

環境:
CentOS 5.7 (x86_64)
Samba 3.5.4-0.83

CentOS 5 に PEAR をインストールする方法

CentOS 5にPEARをインストールする方法は以下の通り。

# yum -y install php-pear
# pear list
Installed packages, channel pear.php.net:
=========================================
Package        Version State
Archive_Tar    1.3.1   stable
Console_Getopt 1.2     stable
PEAR           1.4.9   stable
XML_RPC        1.5.0   stable

proxy環境の場合は、以下のコマンドを実行。

アドレス、ポート番号は環境にあわせて設定する。

# pear config-set http_proxy http://proxy01.example.com:3128

Net_LDAP2を追加インストール。

# pear install pear/Net_LDAP2

失敗。

WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
pear/Net_LDAP2 requires PEAR Installer (version >= 1.5.0), installed version is 1.4.9
pear/Net_LDAP2 requires PHP extension "ldap"
No valid packages found
install failed
# yum -y install php-ldap

PEARのバージョンを1.5.0以上にする必要がある。

# pear channel-update pear.php.net
# pear upgrade --force pear/Console_Getopt
# pear upgrade --force pear/Archive_Tar
# pear upgrade pear/PEAR
# pear install pear/Net_LDAP2
# pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.7   stable
Console_Getopt   1.3.1   stable
Net_LDAP2        2.0.11  stable
PEAR             1.9.4   stable
Structures_Graph 1.0.4   stable
XML_RPC          1.5.0   stable
XML_Util         1.2.1   stable

MDB2追加

# yum -y install php-mysql
# pear install pear/MDB2

Net_SMTP追加

# pear install --alldeps pear/Net_SMTP

アップグレード

# pear upgrade-all

削除する時は以下のように実行する。

# pear uninstall pear/MDB2

wget コマンドでうまくダウンロードできない時は

wgetコマンドでうまくダウンロードできない時は、ダブルクォートで囲うと解決できる場合がある。

【変更前】

$ wget http://www.example.com/index.html

【変更後】

$ wget "http://www.example.com/index.html"

proxy 環境で yum を使用する方法

proxy環境でyumを使用する方法は以下の通り。

/etc/yum.conf  に以下の設定を追記。

proxy=http://proxy01.example.com:3128

IPアドレスでも可。

proxy=http://192.0.2.101:8080

あわせてタイムアウトも設定しておくといいかもしれない。

timeout=300

IPアドレスやポート番号、タイムアウト時間(秒)は環境にあわせて設定する。

TOP

INFORMATION

当サイトは備忘録であり、その内容を保証するものではありません。 当サイトまたはリンク先によるいかなるトラブルや損害に関しても、一切の責任を負いかねます。 当サイトの内容を無断で転用したり、転載する等の行為はおやめください。