• EC-CUBEで商品情報が登録できなくなった

    快適な新サーバーが開通したので稼働中のEC-CUBEを新サーバーへ移管しました。そして今日、商品マスタを登録しようとしたところ次のようなエラーが発生し、登録できませんでした。

    システムエラーが発生しました。
    大変お手数ですが、サイト管理者までご連絡ください。

    data/logs/site.log を確認したところ、次のようなエラーメッセージが残されていました。

    INSERT INTO dtb_products(name,status,product_flag,main_list_comment,main_comment,point_rate,deliv_fee,comment1,comment2,comment3,comment4,comment5,comment6,sale_limit,sale_unlimited,deliv_date_id,note,update_date,creator_id,main_list_image,main_image,main_large_image,sub_image1,sub_large_image1,sub_image2,sub_large_image2,sub_image3,sub_large_image3,sub_image4,sub_large_image4,sub_image5,sub_large_image5,file1,file2,sub_title1,sub_comment1,sub_title2,sub_comment2,sub_title3,sub_comment3,sub_title4,sub_comment4,sub_title5,sub_comment5,create_date) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,Now(),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,Now())
    DB Error: constraint violation
    
    INSERT INTO dtb_products(name,status,product_flag,main_list_comment,main_comment,point_rate,deliv_fee,comment1,comment2,comment3,comment4,comment5,comment6,sale_limit,sale_unlimited,deliv_date_id,note,update_date,creator_id,main_list_image,main_image,main_large_image,sub_image1,sub_large_image1,sub_image2,sub_large_image2,sub_image3,sub_large_image3,sub_image4,sub_large_image4,sub_image5,sub_large_image5,file1,file2,sub_title1,sub_comment1,sub_title2,sub_comment2,sub_title3,sub_comment3,sub_title4,sub_comment4,sub_title5,sub_comment5,create_date) VALUES ('test','2','00000','test','test','11',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'11',NULL,'1',NULL,Now(),'2','07291930_4c51585f108ce.gif','07291931_4c51586425a77.gif',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,Now())
    [nativecode=1048 ** Column 'note' cannot be null]
    

    確認する限りだと  dtb_products テーブルの note という項目にNULLを入れよ

    うとして失敗しているように受け取れます。テーブル定義を調べたところ、note は NULLを許可していないご様子。 結果 mysql にキックされていたようです。

    旧サーバーの dtb_products テーブルを確認いたしましたところ、 note にはNULL ではなく ” (空) データが入ってました。

    たぶん、今まで ” が挿入されようとした時そのまま空データとして挿入されていたところ、データベース接続ライブラリのバージョンアップなどのせいで、” ではなく NULL を挿入するような仕様になってしまっていたのだと思います。

    dtb_products.note にNULLを許可するようにして対応しました。

    mysql> ALTER TABLE dtb_products CHANGE COLUMN note note text DEFAULT NULL;
    
    

  • MySQLでインポート/エクスポートするための権限付与

    MySQLのコンソールからCSVにエクスポート、CSVからインポートする際に権限が無い、と叱られたので、FILE権限を付与し、ディスクへのアクセス権限をあたえる。
     
    
    エラー内容。
    
    
     -> INTO OUTFILE "~/mst_item_single.csv" FIELDS TERMINATED BY ','
     -> OPTIONALLY ENCLOSED BY '"';</pre>
    ERROR 1045 (28000): Access denied for user 'eccubemanager'@'localhost' (using password: YES)
    mysql> ;
    ERROR:
    No query specified
    

    MySQL のコンソールにて。

    GRANT FILE
    ON *.*
    TO hogehoge@localhost;
    

  • Samba3で一般的なファイルサーバー構築完全版 – その他設定 p.3

    << | 1 | 2 | 3 |

    前回でSambaサーバー自体の設定は完了しました。

    今回は、iptables設定や自動起動スクリプトの設置等、まわりの設定を行っていきます。

    (CentOS / Fedora / RH*の方のみ)
    まずは、使用するポートを開けましょう。

    使用するポートは、次の4つです。

    nmbd : 137/UDP、138/UDP
    smbd : 139/TCP、445/TCP

    nmbdは、マイネットワークでマシンをブラウジングする機能を提供します。
    smbdは、本来のファイル転送の機能を提供します。
    ファイル転送のみであれば、139/TCP(もしくは445/TCP)のみを開けば機能します。

    私は普段NetBIOS over TCP/IPしか使わないので139/TCPのみしか開放していませんが、4つ全てのポートを開けておけば確実でしょう。今回は紹介しませんが、SWATを利用される場合は 901/TCP も開いておきましょう。

    ■ iptablesの設定 (CentOS / Fedora / RH*)

    # vi /etc/sysconfig/iptables
    

    この行を追加
    ・ /etc/sysconfig/iptables

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137:138 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139:445 -j ACCEPT
    -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
    

    SWAT利用の場合は901/TCPも

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137:138 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139:445 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 901 -j ACCEPT
    -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
    
    
    # service iptables restart
    
    

    ■ ライブラリのパスを通す (CentOS / Fedora / RH*)

    ここまで来たら後はsambaを起動するだけですが、configure オプションに –prefixを設定したのでライブラリのパスが通っていない可能性があります。

    試しに nmbd を起動してみて次のようなエラーが出たらパスを通しましょう。

    # /usr/local/samba3/sbin/nmbd
    /usr/local/samba3/sbin/nmbd: error while loading shared libraries: libtalloc.so.1: cannot open shared object file: No such file or directory
    

    ライブラリのパスを通す。

    (CentOS / Fedora / RH*)
    # echo "/usr/local/samba3/lib" > /etc/ld.so.conf.d/samba.conf # ライブラリのパスを設定
    # ldconfig # パスをキャッシュ化する。 # 設定したパスを通す
    

    パスを通したら起動できるかを確認。
    無事にライブラリが読み込まれると起動します。

    
    # /usr/local/samba3/sbin/nmbd
    
    

    何も表示されなければ起動してます。
    起動したら止めておいてください。

    
    # killall nmbd
    
    

    ■ 動作確認

    nmbd、smbd を起動します。

    # /usr/local/samba3/sbin/nmbd
    # /usr/local/samba3/sbin/smbd
    

    起動したらWindowsからアクセスしてみます。
    マイコンピュータかIEを開いてアドレスバーのところに次のように入力します。

    \\[sambaサーバーのIPアドレス]\

    既にファイルサーバーとして機能するはずです。

    プロセスは一度落としておきます。

    
    # killall nmbd smbd
    
    

    ■ 自動起動スクリプト

    ■ OS起動時に起動してくれさえすればいい場合 (RHクローン/*Linux/*BSD)

    ・ vi /etc/rc.local

    # nmbd
    if [ -x /usr/local/samba3/sbin/nmbd ]; then
      /usr/local/samba3/sbin/nmbd -D
    fi
    # smbd
    if [ -x /usr/local/samba3/sbin/smbd ]; then
      /usr/local/samba3/sbin/smbd -D
    fi
    

    ■ RHのクローンをお使いでchkconfigでプロセスを管理したい場合。

    chkconfig用の起動スクリプト作成。

    ・ vi /etc/rc.d/init.d/samba

    
    #!/bin/sh
    #
    # Startup script for samba
    #
    # chkconfig: 345 85 15
    # description: samba
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    SMBD='/usr/local/samba3/sbin/smbd'
    NMBD='/usr/local/samba3/sbin/nmbd'
    
    SMBPID='/usr/local/samba3/var/locks/smbd.pid'
    NMBPID='/usr/local/samba3/var/locks/nmbd.pid'
    
    case "$1" in
    start)
      echo -n "Starting samba"
      $SMBD -D
      $NMBD -D
      echo
      ;;
    stop)
      echo -n "Shutting down samba"
      PIDS=`cat $SMBPID`
      PIDS="${PIDS} `cat $NMBPID`"
      kill $PIDS
      echo
      ;;
    restart)
      $0 stop
      $0 start
      ;;
    *)
      echo "Usage: $0 {start|stop|restart}"
    
    exit 1
      esac
    
    exit 0
    
    # chmod +x /etc/rc.d/init.d/samba
    # chkconfig --add samba # chkconfigに追加
    # service samba start # 起動してみる
    # ps ax | grep samba # 起動できてる?
    1737 ? Ss 0:00 /usr/local/samba3/sbin/smbd -D
    1739 ? Ss 0:00 /usr/local/samba3/sbin/nmbd -D
    1740 ? S 0:00 /usr/local/samba3/sbin/smbd -D
    1742 pts/0 S+ 0:00 grep samba
    
    # chkconfig samba on  # OS 起動時に service samba start を実行
    

    これで一通り作業は終了です。

    # service samba start
    # service samba stop
    

    でプロセスを管理できます。

    << | 1 | 2 | 3 |


  • Samba3で一般的なファイルサーバー構築完全版 – smb.conf設定 p.2

    << | 1 | 2 | 3 | >>

    Samba サーバーの設定に入ります。
    前回で SWAT も同時にインストールしましたが使いません。

    今回は、基本的なファイルサーバーを構築するのに最低限必要なパラメータのみしか設定しませんので、空のファイルから作成します。サーバーアプリケーションの本質/構造を手っ取り早く理解する為にもそちらの方が良いです。

    英語で説明が書かれたサンプルも用意されています。
    ./samba-3.2.7/examples/smb.conf.default

    ■ Samba用UNIXユーザの追加

    ファイルサーバー用にUNIXユーザーを追加します。
    ここで追加するユーザーは、ファイルがアップロードされた時にそのファイルの所有者として設定されます。
    ファイルサーバーのパス(ドキュメントルート)もこのユーザのホームディレクトリ内に設置することとします。

    # adduser -u 200 -d /home/samba samba
    

    ・共有フォルダ作成

    # mkdir /home/samba/public
    # chown samba /home/samba/public
    # chgrp samba /home/samba/public
    

    もし /var/samba/public ディレクトリをファイルサーバーのドキュメントディレクトリとしたければ、samba ユーザのホームディレクトリを /var/samba としてください。

    (/var/samba/public をドキュメントルートとする場合)
    # adduser -u 200 -d /var/samba samba
    # mkdir /var/samba/public
    # chown samba /var/samba/public
    # chgrp samba /var/samba/public
    

    ■ ログディレクトリの作成

    # mkdir /var/log/samba
    

    ■ 設定ファイルの作成

    # vi /usr/local/samba3/lib/smb.conf
    

    取り合えず完成形。

    ・/usr/local/samba3/lib/smb.conf

    [global]
    workgroup = MYGROUP
    server string = Samba Server
    security = share
    hosts allow = 192.168.200.
    unix charset = UTF-8
    dos charset = CP932
    netbios name = linux
    guest account = samba
    log file = /var/log/samba/log.%m
    max log size = 50
    dns proxy = no
    
    [public]
    path = /home/samba/public
    public = yes
    only guest = yes
    writable = yes
    

    1つずつ説明していきます。

    smb.conf には、「セッション」と「パラメータ」との2種類の要素が存在します。

    上記の設定内容だとセッションは、[global] と[public]という部分に当てはまります。global は特殊なセッションで、Sambaサーバー全般に関わる設定を記述する部分です。public は、Windows共有でいうところの共有フォルダとなります。このセッション名は任意です。publicでもshareでもmyspace構いません。
    共有フォルダは後からいくつでも増やすことができ、それに対するパスも自由に指定できます。

    そして、パラメータとは、それらのセッションに対して値を設定していくものです。
    work group や path がそれに当たります。

    では、それぞれ設定していきます。
    まずは global セッションから。

    ■ 設定ファイルの修正 – [global]セクション

    ■ workgroup : ワークグループ名

    NetBIOS (Windowsネットワーク) のワークグループ名を指定します。既存のWindowsクライアントと設定を合わせてください。大体「WORKGROUP」とか「MYGROUP」とか「HOME」とかになってます。

    ・確認する方法

    マイコンピュータ、右クリック => プロパティ
    -> 「システムのプロパティ」ダイアログボックスが表示されます。
    「コンピュータ名」タブをクリック
    ->「ワークグループ」と表示されます。

    それがNetBIOSのワークグループ名です。
    わかりやすい名前に変更しても良いでしょう。

    ■ server string : サーバーの説明

    「マイネットワーク」でネットワーク上のマシンを一覧表示した時に、サーバー名の下に表示されるコメントっぽい文字列です。

    ■ security : セキュリティモード

    認証なしのゲストユーザーのみで使用する場合は「share」を指定してください。
    PAMやsambapass等によってユーザ単位の認証機能を利用する場合は「user」を指定してください。

    ■ hosts allow : 許可ホスト

    その名の通り、接続を許可するホストです。
    192.168.1.* からの接続を許可したい場合は次の様に指定する。

     hosts allow = 127. 192.168.1.
    

    ※)最後のドットを忘れない事! 基本的にSambaは、NetBIOS over TCP/IP をサポートしているので、制限を掛けずにグローバルに出すと、全世界からアクセスが可能になります。ローカルに設置したとしてもセキュリティの為に hosts allow は設定しておきましょう。

    ■ unix charset : Unix文字セット

    Unix上の文字コードです。 日本語等のマルチバイトを含む名前のファイルやディレクトリを受信した際に、どの文字コードを使ってファイルシステムへ保存するか、という指定になります。 (※ファイルの中身ではありません。ファイル名です。)

     unix charset = UTF-8
    

    と指定した場合、WindowsクライアントからSambaサーバーに「てすと.txt」というファイルがアップロードされる時、Sambaはそのファイル名をCP932(日本語Shift-JIS)からUTF-8へ変換してからファイルシステムへ保存します。 UNIX上ではUTF-8で「てすと.txt」と保存される事になります。 unix charset に関しては、OSごとに合わせれば良いのではないでしょうか。 CentOS、Fedora、RH*等、デフォルトのローケルにUTF-8が使われているOSならば「UTF-8」を、FreeBSD、NetBSD、 OpenBSD等、デフォルトのローケルにEUC-JPが使われているOSならば「EUC-JP」を指定します。 とは言っても、無理にローケルに合わせなくても正常に動作はします。ただ、ローケル以外の文字コードを指定した場合、ターミナルから ls とした時に日本語が文字化けします。

    ■ dos charset : Dos文字セット

    Sambaがクライアントにファイルの一覧を出力する時に、どの文字コードを使って出力するか。という指定になります。 Windowsクライアントからファイルを参照したい場合は、 CP932(日本語Shift-JIS)を指定する必要があります。 クライアントが*BSDのみとか、Linuxのみの場合は、UTF-8やEUC-JP等で良いと思います。 いちいちCP932にコンバートする必要がなくなりますから。

    ■ netbios name : NetBIOS名

    Sambaサーバーに割り当てるNetBIOS名(コンピュータ名)です。

    ■ guest account : ゲストアカウント

    「samba用UNIXユーザの追加」で追加したUNIXユーザ名を指定します。

     guest account = samba
    

    「user=guest : pass=なし」というアカウントでログインした時にマップされるUnixユーザです。 マップされたユーザは、ファイルやディレクトリを保存する時に、その所有者として設定されるユーザとなります。

    ■ log file : ログファイル

    ログファイルを指定します。

     log file = /var/log/samba/log.%m
    

    「%m」にNetBIOS名が置き換えられます。 接続、読み取り、書き込み等の記録を保存します。

    ■ max log size : 最大ログサイズ

    log file パラメータに指定したログファイルの最大サイズをKB単位で指定します。

    ■ dns proxy : DNSプロキシ

    NetBIOS名をDNS経由で解決するか。 今回は特にセキュリティに神経質ならなくても良いような内容なので、 no にしています。

    ■ 設定ファイルの修正 – [public]セクション

    public セッションの設定です。 「public」という文字は任意です。share や myspace 等に変更しても構いません。

    ■ path

    共有フォルダのパス(ドキュメントルート)。 アップロードされたファイルの保存場所となります。 guest account で指定したUNIXユーザが書き込み可能である場所を指定する必要があります。(security = share時)

    ■ public ( = guest ok )

    パスワードなしでのアクセスを認める。securityに share 以外のパラメータを指定した場合、無視されます。

    ■ only guest

    ゲストアカウントでのみ接続を許可する

    ■ writable

    書き込みを許すか。yesにしないとファイルをアップロードできません。 次回は、その他設定、動作確認と自動起動設定です。

    << | 1 | 2 | 3 | >>


  • Samba3で一般的なファイルサーバー構築完全版 – インストール p.1

    | 1 | 2 | 3 | >>

    OS : CentOS, Fedora, RH*, *BSD

    Sambaでファイルサーバーを構築しましょう。

    Samba3.2からActiveDirectoryやドメインへの参加機能の強化、VISTAへの対応の強化が行われました。
    しかし、ただのファイル置き場用途でしか利用しない私には新機能は不要です。
    今回は、最低限の機能しか付けないインストール方法をご紹介します。

    設定に関しても SWAT 等の設定ツールは利用せず、設定ファイルを修正して構築していきます。

    まずは、インストール。

    ・インストール

    # cd /usr/local/src/
    # wget ftp://ftp.samba.gr.jp/pub/samba/samba-3.2.7.tar.gz
    

    ※)公式FTPから最新のパッケージを選択してください。
    ftp://ftp.samba.gr.jp/pub/samba/
    (2008/01/13現在ではsamba-3.2.7.tar.gzが最新)

    ・コンパイル~インストール

    # tar zxvf samba-3.2.7.tar.gz
    # cd samba-3.2.7/source
    # ./configure --prefix=/usr/local/samba3 --with-pam --enable-swat
    # make
    # make install
    

    /usr/local/samba3 へインストールされます。

    「–enable-swat」は、私は明示的に指定しているだけですが、default=yesですので 特に指定なしでも問題ありません。
    そして、認証機能の為に「–with-pam」も基本的に指定が必要です。
    PAMのソースファイルも必要となります。インストールされていない場合は事前にインストールしてください。

    # yum install pam-devel
    

    (CentOS / Fedora / RH*)

    ・Samba3.2 – よく使われそうなconfigureオプション

    –enable-swat : swatの有効化
    WEBベースのsamba設定GUIツールのインストール
    default : yes

    –enable-cups : プリンタサポートの有効化
    default : auto

    –with-pam : PAMサポート
    PAMサポートの有効化。
    default : no

    –with-syslog : syslogのサポート
    syslogサポート。/var/log/message, secure等にエラーを出力。
    default : no

    –with-quotas : ディスククォータサポート
    容量制限
    default : no

    –with-sys-quotas : システムクォータサポート
    容量制限
    default : auto

    次はファイルサーバーの設定です。

    | 1 | 2 | 3 | >>


  • コメントに対して連番を振る WordPress プラグイン

    仕事で必要だったので、コメントに対して連番をふるための WordPressのプラグイン 「 comment-numbering 」 を作ってみました。

    動作確認済 : WordPress 3.0

    comment-numbering.tar.gz

    1. 展開してcomment-numberingディレクトリごと wp-content/plugins の中に設置。
    2. 管理画面からプラグインを有効にする。
    3. テンプレート修正。連番を表示したい箇所に追記。
      <?php echo $comment->ctnb_comment_number; ?>
      
    4. コメントする。
      コメントを投稿すると連番が振られていきます。

  • MySQL-rootユーザーにパスワードを設定する

    MySQLのrootユーザーにパスワードを設定する。
    
    
    # mysqladmin -u root password "<新しいパスワード>"
    #
    

  • MySQLのインストール (yum)

    yumを使ってCentOSにMySQLをインストールします。

    ・MySQLサーバーとクライアントをインストールします。

    # yum install -y mysql mysql-server
    

    ・/etc/my.cnf 編集

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Default to using old password format for compatibility with mysql 3.x
    # clients (those using the mysqlclient10 compatibility package).
    old_passwords=1
    
    # Disabling symbolic-links is recommended to prevent assorted security risks;
    # to do so, uncomment this line:
    # symbolic-links=0
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    ↓文字化け対策のため2行追加
    
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Default to using old password format for compatibility with mysql 3.x
    # clients (those using the mysqlclient10 compatibility package).
    old_passwords=1
    
    default-character-set=utf8  # デフォルトのキャラセットをutf8に設定
    skip-character-set-client-handshake  # 余計な文字コード変換しない
    
    # Disabling symbolic-links is recommended to prevent assorted security risks;
    # to do so, uncomment this line:
    # symbolic-links=0
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    

    ・MySQLサーバー起動

    # service mysqld start
    

    ・OS起動時にMySQLも起動する。

    # chkconfig mysqld on
    

    [/text]


  • Xen – ホストOSに割り当てるメモリを設定する方法

    XenのホストOS (domain0) に割り当てるメモリを設定する方法。

    OS起動時にホストOSのメモリを設定する方法。

    ・/boot/grub/grub.conf
    # grub.conf generated by anaconda
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
    #          initrd /initrd-version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18-164.15.1.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-164.15.1.el5
        module /vmlinuz-2.6.18-164.15.1.el5xen ro root=/dev/VolGroup00/LogVol00
        module /initrd-2.6.18-164.15.1.el5xen.img
    title CentOS (2.6.18-164.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-164.el5
        module /vmlinuz-2.6.18-164.el5xen ro root=/dev/VolGroup00/LogVol00
        module /initrd-2.6.18-164.el5xen.img
    

    ↓ 割り当てメモリを指定

    # grub.conf generated by anaconda
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
    #          initrd /initrd-version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18-164.15.1.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-164.15.1.el5 dom0_mem=300M
        module /vmlinuz-2.6.18-164.15.1.el5xen ro root=/dev/VolGroup00/LogVol00
        module /initrd-2.6.18-164.15.1.el5xen.img
    title CentOS (2.6.18-164.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-164.el5
        module /vmlinuz-2.6.18-164.el5xen ro root=/dev/VolGroup00/LogVol00
        module /initrd-2.6.18-164.el5xen.img
    

    そして再起動します。


  • rssh完全インストール – SCP/SFTPをchrootしよう!part.4ブロックデバイス

    << | 1 | 2 | 3 | 4 |

    最後にブロックデバイスを作成します。

    chroot に /dev/null と /dev/log が必要です。
    /dev/null は環境に合わせて mknod コマンドで作成します。

    # ls -lL /dev/null
    crw-rw-rw- 1 root root 1, 3 1月 8 18:26 /dev/null
    # mknod /usr/local/rsshchrootskel/dev/null c 1 3
    # chmod 666 /usr/local/rsshchrootskel/dev/null
    

    テストユーザーの方にも dev/null を反映させておきます。

    # cp -Rp /usr/local/rsshchrootskel/dev /home/hoge/
    

    リモートクライアントから転送してみます。

    $ scp -P 10022 scptest.txt hoge@jace:.
    hoge@jace's password:
    scptest.txt 100% 5 0.0KB/s 00:00
    

    成功です。

    最後に syslog の設定です。

    ■ syslog の設定

    syslogは、デーモンとしてシステムに常駐し、起動と共に /dev/log というソケットを用意します。
    各プログラムは /dev/log に記録したい情報を送信することで syslog を利用し、ロギングできます。
    rssh もsyslogを利用します。しかしながらchrootされた場合は /dev/log にはアクセスできません。
    そこで chroot/dev/log にもソケットを用意してやる必要があります。

    (CentOS 5.2)

    # service syslog stop
    カーネルロガーを停止中: [ OK ]
    システムロガーを停止中: [ OK ]
    # syslogd -a /home/hoge/dev/log
    

    これで /home/hoge/dev/log にsyslogのソケットが用意されるはずです。
    しかしこれでは /dev/log が消滅してしまいますし、serviceで起動した際は適用されません。
    syslogの設定ファイルを修正し対応します。

    # vi /etc/sysconfig/syslog
    

    修正前
    ・/etc/sysconfig/syslog

    SYSLOGD_OPTIONS="-m 0"
    

    ↓修正

    SYSLOGD_OPTIONS="-m 0 -a /home/hoge/dev/log"
    

    ・再起動

    # service syslog restart
    

    これで /dev/log を消滅させることなく /home/hoge/dev/log にsyslogのソケットを用意できます。
    新たなchroot ユーザーを追加するごとに -a オプションを追加することになります。

    最後に

    ■ etc/passwd ファイルについて

    mkchroot.sh によって/etc/passwd ファイルもchrootのスケルトンディレクトリにコピーされていますが、セキュリティの為利用ユーザー以外の情報は削除しておきましょう。

    ■ WinSCPを利用する場合

    WinSCPは内部コマンドを実行しているようですので、使う場合はsftpモードと設定して、SFTPでファイル転送を行わなければならないらしいです。

    << | 1 | 2 | 3 | 4 |