君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

bashで特定の文字列を含むファイルの名前を、一括置換する

bashである文字列を含むファイルについて、一括置換したかった カレントディレクトリにあるファイルのうち、 無題を含むものをmudaiに変える、みたいなことがしたかった。 結論 解説 まず、以下のようにファイルを準備します。 $ touch hogeA hogeB fugaC こ…

MySQLにて、特定のカラムに日本語が含まれているかどうかを抽出

あるカラムに日本語が含まれていることを検出したい 結論 あるカラムに対して、 LENGTH CHARACTER_LENGTH の値が異なることを利用する。 SQLの例 SELECT * FROM table_name WHERE LENGTH(column_name) != CHARACTER_LENGTH(column_name); 解説 LENGTHは「バ…

sshのセキュリティ設定で、なぜポートを22から変えるとよいのか〜サーバとポートと/etc/ssh/sshd_configと〜

サーバのsshdプロセスに対して、1日900回以上の不正アクセスがあった 詳しくはこの記事。 karoten512.hatenablog.com 対応方法の一つ /etc/ssh/sshd_configを編集し、 sshdがlistenしているポートを22→10022に変える。 そもそもポートとは サーバでは、いろ…

user「PPAP」からの不正アクセスを検出しました〜sshdのログ(/var/log/secure)から不正ユーザの名前を取り出し、セキュアじゃないユーザ名について考えてみた〜

存在しないユーザからのアクセスがあった Failed password for invalid user *** from ... これは、 「linux上で登録されていないユーザ *** からのアクセスがありました」 ということ。 今回、攻撃者がどんな名前を用いてアクセスしてくるのか 探ってみる。…

僕が借りているサーバが、世界各国から「1日900回」不正アクセスされている話〜/var/log/secureからみえる攻撃者の影〜

私用で使っているサーバの/var/log/secureをみてみた 見に覚えのないアクセスが大量にある。。。 しかもuserはrootだったりadminだったり。。。 これ、不正アクセスってやつか? 1日どれくらい不正アクセスを試みられているのか 2/4の不正アクセス回数を、…

puttyからsshでログインしようとした時に、Disconnected: No supported authentication methods availableと言われてしまった

puttyを使ってsshでパスワード認証を使ってログインしようとした こんなエラーが表示されました。 Disconnected: No supported authentication methods available とりあえずサーバに入り、/etc/ssh/sshd_configをみてみる いろいろな原因が考えられるが、と…

duコマンドを使って、現在いるディレクトリにあるファイルの合計サイズを出したい

現在いるディレクトリにあるファイルの合計サイズを出したい $ du -sh . 解説 sオプションについて sオプションをつけないとどうなるか $ du -h . 1.2G ./directoryA 1.2G ./directoryB 24K ./pra すべてのディレクトリのサイズがでてくる。 つけるとどうな…

Angularを使って、カートで商品を選択する画面を作ってみた〜親子コンポーネント・サービス間連携をしてみる〜

Angularの復習をしようと思った 今回の開発で、Angularを使った。 基本フロント側は一人で開発をしていたが、 1画面で扱っているコンポーネントの数が600個をこえたり、 画面間で引き継ぐ項目がどんどん増えてきたりで、 だんだん大変なことになってきた。 …

module.exportsとは何か、どうもわからなかったので実験してみた〜Node.jsにて外部moduleをrequireする〜

いきさつ 今まで何も考えずに npm install して、 var module = require('module-name'); して使ってきたが、 Node.jsについて知らなさすぎて、 node_moduleディレクトリ配下に格納されているmoduleをみても、 ぜんぜん読めないことに気づいた。 exports.mod…

本番環境にテストデータを入れてしまったときは、deleteではなくtruncateでテーブルからレコードを一掃しよう〜deleteとtruncateの違い〜

いきさつ 社内で使用するシステムの開発が一旦落ち着いたので、 本番環境構築することになった。 といってもすでにテスト環境を構築しているので、 慣れたものである。 種々のインスタンスを立ち上げ、ansible用のユーザを作成し、 playbookの諸々の設定位置…

シェルで文字列を比較したときに、[: =: unary operator expected :というエラーがでる

いきさつ 空行を検出するスクリプトを書いていた 古池や 蛙飛び込む 水の音 をシェルに読み込ませ、空行があったときに 「空行があるよ」というスクリプトを書いた。 ※ 実際の処理を簡略化してます #!/bin/bash while read line do if [ $line = '' ]; then …

1つのファイルを複数のディレクトリにコピーしたい〜UNIXコマンド:xargsとcpについて〜

1つのファイルを複数のディレクトリにコピーしたい dir1, dir2, dir3にfileをコピーしてばらまきたい。 結論 echo dir1 dir2 dir3 | xargs -n 1 cp -v file 読み解いてみる xargs とは 標準出力をコマンドライン引数に変えるコマンド。 今回の例で言えば、e…

社長の家ですき焼きしたら、破壊神シヴァが現れた話。

いきさつ 今年の冬、linuxの資格であるLPICのレベル1を取得した。 資格のレベル自体は大したことないのだけれど、 社長「お祝い何がいい?報酬とは別に、どこかお店つれってったげる」 社長「みんなで高いお店行こー!」 私「それなら」 私「すき焼きやりま…

curlからフォームデータを贈りたい時のオプションについて

curlの使い所 スクリプトから直接URLを叩きたい時 パラメータを変えてたくさんのリクエストを贈りたい時 こんなときはcurlが便利。 フォームデータを投げたいときは-data, -dオプション curl --data form_name=form_value http://www.example.com/ POSTでフ…

盗み聞きしてみた(コンテナ上のnginxプロセスと、ホスト間の通信パケットをtcpdumpでキャプチャしてみた〜CoreOS toolboxを使ってみる〜)

パケットキャプチャとは サーバさんたちがどんなおはなしをしているのか、 ぬすみぎきすることだよ(白目) いきさつ ホスト間とコンテナ上のnginxがどういう通信をしているのか気になった。 普通のサーバへの通信と変わらないのかな。 こういうときは実験だ…

CoreOS toolboxに入れない〜Failed to allocate scope: Unit core-fedora-latest.scope already exists.〜

CoreOS toolbox使ってたらこんなエラーがでた CoreOSでtoolboxコンテナを使い、 Ctrl-wで無理やりコンテナを抜けた。 そしていつものようにtoolboxを起動したら、 $ /usr/bin/toolbox らこんなエラーがでた。 Failed to allocate scope: Unit core-fedora-la…

Dockerでたてたコンテナにtelnet-serverを入れて、telnetでコンテナ間通信ができるようにしてみた

いきさつ networkやセキュリティ、telnetデーモンを叩き起こすxintedの勉強がてらやってみた。 手順 0. 準備 0-1. telnet-server用のコンテナを走らせる $ docker pull centos:centos7 $ docker run --privileged -d --name centos_test centos:centos7 /sbi…

apt-get updateは何を行っているのか調べてみた〜パッケージインデックスファイルとは何か〜

結論 $ apt-get update は、パッケージリストの更新を行う。 具体的に言うと、 /etc/apt/sources.list にかかれているURLから、 パッケージインデックスファイルを引っ張ってきて、 $ cd /var/lib/apt/lists に格納している。 いきさつ 1. Dockerで構築したu…

間違えてリモートにpushしたcommitを元に戻す

Git

手順 1 $ git log して、取り消したいコミットのハッシュをコピー 2 $ git revert ハッシュ して、 コミットを取り消すコミットをする(ややこしい) 3 $ git push origin master remoteにpush まとめ 自分のブランチならいいけど、 他の人も使っているブ…

【ホワイトハッカー入門】サーバの開いているポートとサービスをnmapで特定する。ついでにOS情報も拾ってくる

ホワイトハッカーとは ハッキングの手法を熟知し、それを防御のために使ういいハッカー。 対義語はブラックハットハッカーとかクラッカーとか言われる。 ハッカーの攻撃手法 ハッカーの攻撃手法は、だいたい以下の用な手順になる。 偵察 スキャニング アクセ…

ハッキングがテーマのノベルゲーム「CyberRebeat」に触発されて、CTFの練習問題「Basic is secure?」を解くためにパケットキャプチャを使ってみた【CTF入門】

CyberRebeatとは ハッキングを題材したノベルゲーム。 CyberRebeat -The Fifth Domain of Warfare- 作中、とあるハッカーはこう言います。 "僕らにとって、世界は不安なほどに穴だらけだ"、と。 ボタン一つでネットに繋がっているOA機器が検索でき、 10ド…

Dockerで動かしているubuntuにて、apt-getが動かない

以下の手順でDockerでubuntuを動かした イメージ取得&コンテナ起動 $ docker pull ubuntu $ docker run -d -ti --name ubuntu ubuntu /bin/bash コンテナにはいる(bashプロセスの立ち上げ) docker exec -ti ubuntu /bin/bash apt-getが動かない。。。 $ a…

【メモ】linuxのアーキテクチャを確認する方法

linuxのアーキテクチャを確認する方法 dockerで走らせているubuntuのアーキテクチャがわかんなくなったので、 確認したい。 方法1:unameコマンド $ uname -m x86_64 方法2:環境変数で確認 $ getconf LONG_BIT 64 まとめ 64bitということがわかった。

DockerでMySQLコンテナを起動し、Sequel Proで接続してみる

MySQL、ちょっとだけ試したい時がある 「indexってどうやって貼るんだっけ?」 「外部キー制約ってどういうふうに効いてくるんだっけ?」 「ちょっとSQLの練習がしてみたいなぁ」 というとき、 DBとして残すほどではないけどMySQLを試したいな〜と思います。…

劇的ビフォ◯アフターで学ぶデザインパターン〜facade pattern〜

カレーを作るクラスを考える 玉ねぎきって、 じゃがいもをむいて切って、 カレールーをとかす。 そんな料理を実現するクラス群を作って考えてみます。 before まずはfacade patternを使わずに書いてみます。 ソースコード class Onion { cut() { console.log…

最後の平成を迎えるにあたり、今年の抱負を書いてみる(平成関係ありません)

原則 たーのしー!と思ったことをやる 以上。 何をやるのか LTでウケを狙いに行く ウケたとき楽しかったから。 ブログ記事でウケを狙いに行く 読まれると楽しいから。 karoten512.hatenablog.com karoten512.hatenablog.com こういうのをどんどん書きたい。 …

httpとtcpの違いが(ちょっとだけ)わかった

はじめの認識 httpプロトコルとtcpプロトコルは全然別物だと思ってた。 今の認識 実際別ものだった。 しかも使われるレイヤが違った。 httpにとってtcpはインフラみたいなもの。 httpが上位のレイヤ(アプリケーション層) tcpが下位のレイヤ(トランスポー…

ババァ!ノックしろよッ!ってならないためのlinuxパーミッション入門

思春期あるある 思春期を超えたことがあるみなさんなら 共感していただけると思うのですが、 突然親が部屋に来訪してくるとビビりますよね。 やましいことがあってもなくてもビビりますよね。 今回は、 linuxなら、 親が勝手に部屋に入ってこれなくなるので…

もうPermission deniedなんて怖くない!〜linuxのパーミッションについてかなり丁寧に説明してみる〜

開発中よく目にするエラー Permission denied. 環境構築中、よくこのエラー見ますよね。 よく見る割に「とりあえずsudoで無理やり対応」という雑な対応が多い気がしたので、 まずはパーミッションについて整理してみようと思いました。 前提 そもそも、linux…

rpmコマンドの使い方を整理してみる(LPIC対策)〜yumとの違いも比較してみた〜

rpmとは パッケージ管理システム。 パッケージとは、すごくざっくりいうとwindowsでいう「ソフトウェア」にあたる。 rpmはそれを管理するシステムなので、 linuxに何かパッケージをinstallしたり、 uninstallしたりするときに使用する。 rpmを使用してみる -…