プルルル~
自分「はい、淘屋です」
相手「当社は AI を使った◯◯というサービスを提供していましてそのご提案です!」
自分「あなたは AI ですか?」
という質問をしてみようかな。。。
そんな時代が来るのでしょうか?
プルルル~
自分「はい、淘屋です」
相手「当社は AI を使った◯◯というサービスを提供していましてそのご提案です!」
自分「あなたは AI ですか?」
という質問をしてみようかな。。。
そんな時代が来るのでしょうか?
先日クレジットカード会社から電話があり、
「○○というサイトで先月25日の朝5時頃お買い物をしましたか?」
と聞かれ「いいえ」と答えました。
すると。。。
「お客様のクレジットカードが不正利用されました。
現在クレジットカードを停止しております。
新しいカードを発行します。」
とかなり省略しましたが、大体こんな感じだったかと思います。 ❗
犯人があるECサイトでセキュリティナンバーを入力しようとして失敗したらしく、
その痕跡があり不正利用が発覚したそうです。
実際には被害は無くて良かったです。 🙂
こういう体験は初めてで、一番心配だったのが、法人カードだったので、
利用しているサービスが停止されてしまう事でした。
新しいカードが届くまでの間はカード決済ができませんが、
毎月決済している大半は新しいカードに引き継ぎできると言われました。
一部引き継げないといわれたのがネット系の会社でした。。。
某サーバーホスティングサービス、某国内最大級のドメイン登録サービス。
そして、先程新しいカードが届いたので色々なサイトでカード番号を変更しているところです。
どこでカード番号が他人に渡ったのでしょうか?
怪しいお店でカードを利用した覚えはありませんが。。。
dmesg にタイムスタンプが表示されるように printk_time に 1 をセットする方法があります。
root# echo 1 > /sys/module/printk/parameters/printk_time
確認するには以下のようにやれば良いのかな?
root# echo "TEST" >/dev/kmsg root# dmesg | tail -1 [3182488.266874] TEST
OS 起動時にセットするにはいろんな方法があると思いますが、
grub.conf の kernel に printk.time=1 を追記すれば良いみたいです。
そして、表示されたタイムスタンプを人間が理解できるように変換できるようです。
http://d.hatena.ne.jp/flalin/20110417/1303025836
なるほど。
ですが、おおまかに時刻が分かればよいので syslog の mark.debug のように
定期的にタイムスタンプを書き込んでおけば良いので cron で date を書き込むようにしました。
root# cat /etc/cron.d/mark_dmesg 0 * * * * root date > /dev/kmsg
ただし、cron が正常に動くのが前提なので、最初に書いた printk_time もセットしておいた方が良いです。
個人的に root になれない状況があまり無いのであまりこういった状況は無いのですが。。。
サーバに pear はインストールされているけど root になれない場合に使いたいモジュールをインストールする方法です。
/home/hoge/pear に pear::pager をインストールする場合の例です。
インストール前の状態
$ 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 |
pear::pager の install
$ mkdir /home/hoge/pear $ cd /home/hoge/pear $ pear config-create /home/hoge .pearrc Configuration (channel pear.php.net): ===================================== Auto-discover new Channels auto_discover <not set> Default Channel default_channel pear.php.net HTTP Proxy Server Address http_proxy <not set> PEAR server [DEPRECATED] master_server <not set> Default Channel Mirror preferred_mirror <not set> Remote Configuration File remote_config <not set> PEAR executables directory bin_dir /home/hoge/pear PEAR documentation directory doc_dir /home/hoge/pear/docs PHP extension directory ext_dir /home/hoge/pear/ext PEAR directory php_dir /home/hoge/pear/php PEAR Installer cache directory cache_dir /home/hoge/pear/cache PEAR data directory data_dir /home/hoge/pear/data PHP CLI/CGI binary php_bin <not set> PEAR test directory test_dir /home/hoge/pear/tests Cache TimeToLive cache_ttl <not set> Preferred Package State preferred_state <not set> Unix file mask umask <not set> Debug Log Level verbose <not set> PEAR password (for password <not set> maintainers) Signature Handling Program sig_bin <not set> Signature Key Directory sig_keydir <not set> Signature Key Id sig_keyid <not set> Package Signature Type sig_type <not set> PEAR username (for username <not set> maintainers) User Configuration File Filename /home/hoge/pear/.pearrc System Configuration File Filename #no#system#config# Successfully created default configuration file "/home/hoge/pear/.pearrc" |
設定の確認
$ pear -c .pearrc config-show |
作成した pear 環境のインストール状況を確認。
$ pear -c .pearrc list (no packages installed from channel pear.php.net) |
pear::pager のインストール
$ pear -c .pearrc install pager downloading Pager-2.4.9.tgz ... Starting to download Pager-2.4.9.tgz (36,055 bytes) ..........done: 36,055 bytes install ok: channel://pear.php.net/Pager-2.4.9 |
インストールできたか確認
$ pear -c .pearrc list Installed packages, channel pear.php.net: ========================================= Package Version State Pager 2.4.9 stable |
インストールした pear::pager を使う方法
php の include_path に /home/hoge/pear/php を追加する。 ini_set('include_path', '/home/hoge/pear/php'.PATH_SEPARATOR.ini_get('include_path')); |
そして、インストール先を apache が参照できるよう chmod などする。
$ chmod -R g+rx /home/hoge $ chgrp -R apache /home/hoge |
Hyper Estraier で WordPress をクロールしようとしたところ
redirected: 301 されてしまいインデックスされない 🙁
$ estwaver crawl -revcont casket 2014-05-15T03:40:17Z INFO DB-EVENT: status: name=casket/_index dnum=0 wnum=0 fsiz=9259055 crnum=0 csiz=0 dknum=0 2014-05-15T03:40:17Z INFO crawling started (revcont) 2014-05-15T03:40:17Z INFO fetching: 0: https://www.yonageya.com/ 2014-05-15T03:40:17Z INFO seeding: 1.000: https://www.yonageya.com/ 2014-05-15T03:40:17Z INFO [1]: fetching: 0: https://www.yonageya.com/ 2014-05-15T03:40:18Z INFO [2]: fetching: 1: https://www.yonageya.com/blog/ 2014-05-15T03:40:18Z INFO [2]: redirected: 301: https://www.yonageya.com/blog/ 2014-05-15T03:40:18Z INFO waiting for threads: 0 2014-05-15T03:40:18Z INFO crawling finished 2014-05-15T03:40:18Z INFO DB-EVENT: flushing index words: name=casket/_index dnum=1 wnum=1 fsiz=9262217 crnum=670 csiz=45533 dknum=0 2014-05-15T03:40:18Z INFO DB-EVENT: flushing auxiliary keywords: name=casket/_index dnum=1 wnum=639 fsiz=9262217 crnum=31 csiz=2182 dknum=0 2014-05-15T03:40:18Z INFO DB-EVENT: closing: name=casket/_index dnum=1 wnum=639 fsiz=9274906 crnum=0 csiz=0 dknum=0 2014-05-15T03:40:18Z INFO finished successfully
301 部分だけ抜き出すと
[2]: redirected: 301: https://www.yonageya.com/blog/
ネットで調べたところ同じ状況の方がいらっしゃいました。
ヒントにさせていただき、調べてみたところ wp-includes/canonical.php に辿り着きました。
/** * Filter the canonical redirect URL. * * Returning false to this filter will cancel the redirect. * * @since 2.3.0 * * @param string $redirect_url The redirect URL. * @param string $requested_url The requested URL. */ $redirect_url = apply_filters( 'redirect_canonical', $redirect_url, $requested_url ); if ( !$redirect_url || $redirect_url == $requested_url ) // yes, again -- in case the filter aborted the request return false; if ( $do_redirect ) { // protect against chained redirects if ( !redirect_canonical($redirect_url, false) ) { wp_redirect($redirect_url, 301); exit(); } else { // Debug // die("1: $redirect_url<br />2: " . redirect_canonical( $redirect_url, false ) ); return false; } } else { return $redirect_url; }
$redirect_url と $requested_url を比較して同じだったらリダイレクトしないようですが、
実際に $redirect_url と $requested_url を調べてみたところ、
$redirect_url: https://www.yonageya.com/blog/ $requested_url: https://www.yonageya.com:80/blog/
とウチのブログの場合、$requested_url にポート番号がくっついていました ❗
ポート番号をくっつけているのは、同じ wp-includes/canonical.php の以下です。
if ( !$requested_url ) { // build the URL in the address bar $requested_url = is_ssl() ? 'https://' : 'http://'; $requested_url .= $_SERVER['HTTP_HOST']; $requested_url .= $_SERVER['REQUEST_URI']; }
ウチのブログの場合 $_SERVER[‘HTTP_HOST’] にポート番号がくっついていました。
そして、同じ状況の方と同じように $requested_url .= ‘www.yonageya.com’ とすると解決する事も確認しました。
それで、どうやって解決するか対応方法に悩みましたが、functions.php に以下を追加して対応しました。
function my_redirect_canonical($redirect_url, $requested_url) { if (preg_match('/^HyperEstraier/', $_SERVER['HTTP_USER_AGENT'])) { return false; } } add_filter('redirect_canonical', 'my_redirect_canonical');
強引ですが
とある事情からメールアドレス毎にメールサーバを分ける事になったので、その時のメモ。
MTA が postfix の場合です。
transport にアドレスと送信先をセットするだけです。
ドメイン名を example.com で説明すると。。。
example.com を受信するように設定したメールサーバを 2 台作成します。
mail1.example.com(192.168.0.1), mail2.example.com(192.168.0.2) とします。
MX は mail1.example.com を設定しておき、example.com 宛てのメールは
mail1.example.com で一旦全て受けるようにしておきます。
メールアドレスと送信先メールサーバは以下とします。
mail1.example.com の transport
user2@example.com smtp:[192.168.0.2] |
mail2.example.com の transport
user1@example.com smtp:[192.168.0.1] |
アドレスを追加する場合はどっちのサーバで受信するかを指定しないといけないのでメンドイです。 😥
cron.daily の実行時に警告が出ているらしく、以下のようなメールが来ました。
/etc/cron.daily/logrotate: WARNING 'action' not defined in 'php-url-fopen'. Using default value WARNING 'action' not defined in 'lighttpd-auth'. Using default value WARNING 'action' not defined in 'lighttpd-fastcgi'. Using default value |
最初原因がさっぱりわかりませんでしたが、ちょうど最近 fail2ban をインストールしたサーバだったのでもしかしたら?と jail.conf を見てみました。
すると、php-url-fopen, lighttpd-auth, lighttpd-fastcgi のところに action の定義がありませんでした。
この3つは利用していないのですが、警告が出ちゃうみたいですね。
それぞれの箇所に以下の action を追加して fail2ban を再起動したところ警告が出なくなりました。 🙂
action = sendmail[name=Postfix, dest=you@example.com] |
ftp の一部のコマンドを使えないようにする設定のメモです。
ディレクトリ削除コマンド rmdir を使えなくしてみます。
まずは、コマンド一覧と rmdir が使える状態である事を確認します。
ftp> help Commands may be abbreviated. Commands are: ! cr mdir proxy send $ delete mget sendport site account debug mkdir put size append dir mls pwd status ascii disconnect mode quit struct bell form modtime quote system binary get mput recv sunique bye glob newer reget tenex case hash nmap rstatus trace ccc help nlist rhelp type cd idle ntrans rename user cdup image open reset umask chmod lcd passive restart verbose clear ls private rmdir ? close macdef prompt runique cprotect mdelete protect safe (rmdir がありますね) ftp> mkdir testdir1 257 "/testdir1" created ftp> dir 227 Entering Passive Mode (127,0,0,1,234,141) 150 Here comes the directory listing. drwxrwsr-x 2 14 50 4096 Sep 06 11:55 testdir1 226 Directory send OK. ftp> rmdir testdir1 250 Remove directory operation successful. ftp> dir 227 Entering Passive Mode (127,0,0,1,234,153) 150 Here comes the directory listing. 226 Directory send OK. ftp> (rmdir コマンドが実行できます) |
次に vsftpd.conf に cmds_allowed を追加します。
version 2.1 からは cmds_denied が使えるみたいです。
cmds_allowed=ABOR,ACCT,ALLO,APPE,CDUP,CWD,DELE,HELP,LIST,MKD,NLLST,NOOP,MODE,PASV,PORT,PWD,QUIT,REIN,REST,RETR,RNFR,RNTO,SITE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,LPRT,LPSV,ADAT,AUTH,CCC,CONF,ENC,MIC,PBSZ,FEAT,OPTS,EPRT,EPSV,LANG,MDTM,MLSD,MLST,SIZE |
こんなに要らない? 🙂
vsftpd.conf を変更したので vsftpd を再起動します。
root# service vsftpd restart |
rmdir が使えなくなった事を確認します。
ftp> mkdir testdir2 257 "/testdir2" created ftp> dir 227 Entering Passive Mode (127,0,0,1,234,190) 150 Here comes the directory listing. drwxrwsr-x 2 14 50 4096 Sep 06 12:25 testdir2 226 Directory send OK. ftp> rmdir testdir2 550 Permission denied. ftp> dir 227 Entering Passive Mode (127,0,0,1,234,120) 150 Here comes the directory listing. drwxrwsr-x 2 14 50 4096 Sep 06 12:25 testdir2 226 Directory send OK. (rmdir コマンドを実行しようとすると Permission denied. になりました) |
コマンド一覧からは rmdir が消えないみたいですね
ftp> help Commands may be abbreviated. Commands are: ! cr mdir proxy send $ delete mget sendport site account debug mkdir put size append dir mls pwd status ascii disconnect mode quit struct bell form modtime quote system binary get mput recv sunique bye glob newer reget tenex case hash nmap rstatus trace ccc help nlist rhelp type cd idle ntrans rename user cdup image open reset umask chmod lcd passive restart verbose clear ls private rmdir ? close macdef prompt runique cprotect mdelete protect safe |
今回はシステム全体で rmdir を使えなくしちゃいましたが、ユーザ毎に個別に設定する事もできるみたいです。
週間アスキー9/10増刊号にプログラマブル NFC ディスクの付録が付いていたので購入しました。
NFC ディスクにスマホで行いたい事(タスク)を仕込んでおくと、スマホをかざすだけでタスクを実行してくれるようになります。
便利ですね 🙂
タスクはNFCタスクランチャーというアプリを使って NFC ディスクに何度でも書き込む事ができます。
帰宅した時に WiFi に接続するようにしたり、車に乗る時にドライブモードにしたり。。。頻繁に行う事を設定しておくのがよさそうです。
上手く使えばすごく便利です 🙂
とりあえず URL を開くタスクを実行してみました。
それで、実際に何に使うかと言えば開発中のスマホサイトへアクセスできるように URL をセットしてみました