ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Bluetoothイヤフォン QCY QY8を購入

ケーブルがないってすばらしい!

先日ビックカメラに寄った時に見つけた、Bluetoothイヤフォン QCY QY8を購入してみました。iPhoneとのペアリングも簡単で、音漏れもほとんどなくて割りといい感じでした。視聴せずに直感で買ったんですが、あとでいろいろ調べたら評判は割と良いようです。

www.jn1msd.net

次のような感じのものです。

  • 連続再生 5時間
  • 連続待受 175時間
  • 充電時間 2時間

  • Bluetooth 4.1対応

  • aptX対応
  • ノイズリダクション(CVC 6.0)
  • マイク付き
  • 重さ 16グラム

「連続再生 5時間どうよ」って思いましたが、状況に応じてiPhone付属のイヤフォンと使い分けているので多分平気です。ゲーム用途以外では良いのかもしれません。

また、割と周りの音をカットしてくれるのでちょっと静かに作業をやりたいときにも役立ちそうです。

macOS High Sierraのrootユーザーでログインできる欠陥について調べてみた

[追記]

Security Update 2017-001が公開されたようです。その後、再リリースされています。

applech2.com

話題のHigh Sierraのrootユーザーでログインできる問題について調べてみました。 調べれば調べるほど、非常にまずい欠陥であることがわかりました。

この問題の修正プログラムが配信されるまで、rootユーザーを有効にしてパスワードを設定しておくことと、問題が解決されるまで、共有機能は利用しないことをおすすめします。

今回の問題について

詳細は以下に詳しくまとまっています。

applech2.com

applech2.com

applech2.com

ちなみにこの欠陥について、Appleはソフトウェアアップデートで対応することを表明しているようです。

攻略パターン

  • 悪意を持ったユーザーがVNCでrootユーザーでログイン
  • rootユーザーにパスワードを設定
  • 欠陥を使わなくてもrootユーザーと設定したパスワードでmacOSにログイン可能

ここまで行われてしまうと、実質すべての作業がrootユーザーで可能になります(具体的にはあげませんが、想像は容易だと思います)。

ただし、SSHによるアクセスはrootlessのアクセス制御機能が効くために、rootユーザーでログインすることはできませんでした。しかしrootユーザーでパスワードログインして任意の管理者アカウントを作られてしまうと、共有の設定次第ではSSHプロトコルを使った通信が可能になってしまいます。そもそもVNCでアクセスできてしまうので問題点はそれだけではありませんね。

ちなみにmacOSの一般設定で、root(System Administrator)ユーザーのパスワードの設定は、正規の手段では文字入力を拒否されてしまうのですがコピペは可能なので、テキストエディターにパスワードを書いてcommand+vで貼り付けることでrootユーザーのパスワードを設定可能です。

というわけで、注意しましょう。

macOSのpipコマンドについて

最近のmacOSPython 2.7が標準でインストールされています。 これから使うなら推奨されるのはPython 3のようなので、macOSにPyhton3を導入するため、Homebrewなどを使ってインストールすると思います。

そして、何らかのコードを書いていくとPythonのあのモジュールが欲しいと思い、検索するとpipというコマンドがあることを見つけると思います。これをmacOSで実行するとハマるようです...と言うか、先程ハマりました。

macOSのpipコマンドはPython 2.7のモジュールを管理するためのコマンドなのです。

% pip -V   
pip 9.0.1 from /Library/Python/2.7/site-packages (python 2.7)

% pip3.6 -V    
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)

macOSPython 3.xのモジュールをインストールするにはpip3.xコマンドを使います。Python 3.6の場合はpip3.6コマンドがありました。

% pip
pip         pip2        pip2.7      pip3.6      pipestatus

iPythonをつかってみた

また、Homebrewにはipythonというformulaも用意されています。昔はPython 2.x対応だったらしいですが、現在インストールできるipythonはIPython 6.2.1のようで、システムにPython 3が入っていればそちらを使うようです。こちらのページに掲載されているコードを実行するため、pip3.6 install numpypip3.6 install matplotlibを実行したあと、コードを実行すると別窓でグラフが出力されます。

f:id:ytooyama:20171124002245p:plain

macOSでpipコマンドを使うときはバージョンに注意という話題でした。

Ubuntu 17.10でLinux Kernel 4.14を使う

色々と安定とセキュリティの改善が行われたLinux Kernel 4.14Ubuntu 17.10でLinux Kernel 4.14を使ってみました。 自分でソースからビルドしても良かったのですが、Ubuntuカーネルチームがdebパッケージをビルドしてくれているので、今回はそれを使います。

といってもやり方は基本的にこれと一緒。

qiita.com

How to Install Linux Kernel 4.14 in Ubuntu, Linux Mint | UbuntuHandbook

こんな感じです。ちなみにDo It Yourselfの精神でお願いします。だれも責任は負いません。

# wget http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/linux-headers-4.14.0-999-generic_4.14.0-999.201711202100_amd64.deb
# wget http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/linux-image-4.14.0-999-generic_4.14.0-999.201711202100_amd64.deb
# wget http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/linux-headers-4.14.0-999_4.14.0-999.201711202100_all.deb
# dpkg -i linux-*
# reboot
...
% ssh 10.211.55.29
ytooyama@10.211.55.29's password: 
Welcome to Ubuntu 17.10 (GNU/Linux 4.14.0-999-generic x86_64)

今回は「daily/2017-11-21 mainline build」を使いましたが、試すなら次のビルドのほうがいいかもしれません。

[追記]

Kernel 4.14については以下の情報がわかりやすいかもしれない。

www.omgubuntu.co.uk

DHCPサーバーに繋がらなくなった

とある環境を構築中にDHCPサーバーに繋がらなくなってしまいました。

とりあえず、VLANを切り替えて自分が構築したDHCPサーバーにアクセスできるように設定したのですが、それでもDHCPサーバーに接続できません。ところがすでにDHCPサーバーからIPアドレスを貰っている端末は問題ありません。原因は配布できるIPアドレスがないのか、それともサーバーの設定の問題なのかだと思いますが、早速調べてみることにしました。

tcpdumpコマンドでみると、DHCPリクエストは投げているようです。でも応答は返してくれない。ちなみにIPアドレスを固定にすると外部インターネットにアクセス出来るのを確認しました。 また、サービスのステータスを見るとなにも出力されず、再起動するとIPv6のサービスを起動しようとしてError扱いになっているようです。このことからクライアントが問題という訳ではなく、サーバー側の問題である可能性が高くなりました。

この環境は現在Debian 9で稼働しており、DNSはdnsmasqでDHCPサーバーはISC DHCPサーバーを利用しています。dnsmasqでDHCPサーバーを稼働することも出来るのですが、一部のクライアントと相性が悪かったために見送りになりました。現在のDebianの標準のInitはsystemdなのですが、諸事情でSysVInitを使っているのも通常と異なる構成になっています。

Debian 9ではクライアントに配布する系の設定は/etc/dhcp/dhcpd.conf、サーバー自体の設定は/etc/default/isc-dhcp-serverに書かれているようです。「そういえばインストールしたときに/etc/default/isc-dhcp-server側の設定はいじっていなかったな」と思い、ファイルを開いてみました。案の定設定を書き換えた形跡はありません。ローカル環境でIPv6を使うことはもうしばらくないと思ったため、次のように設定変更しました。

# vi /etc/default/isc-dhcp-server

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).                                                          
DHCPD_CONF=/etc/dhcp/dhcpd.conf                                                                                         
                                                                                                                        
# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).                                                               
DHCPD_PID=/var/run/dhcpd.pid                                                                                            
                                                                                                                        
# Additional options to start dhcpd with.                                                                               
#       Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead                                            
OPTIONS="-4"                                                                                                            
                                                                                                                        
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?                                                
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".                                                     
INTERFACES="eth0"   

OPTIONSがDHCPDの起動オプションです。-4でIPv4で待ち受けしなさいと指定しています。設定にパラメーターがあったためインターフェイスも指定しました。また、システム自体もIPv6をオフに設定しました。設定は以下を参考にしました。

qiita.com

設定を反映させるため、サーバーを再起動します。

% sudo service isc-dhcp-server restart
[sudo] password for ytooyama: 
[ ok ] Stopping ISC DHCPv4 server: dhcpd.
DHCPv4 interfaces are no longer set by the INTERFACES variable in
/etc/default/isc-dhcp-server.  Please use INTERFACESv4 instead.
Migrating automatically for now, but this will go away in the future.
Launching IPv4 server only.
[ ok ] Starting ISC DHCPv4 server: dhcpd.

% sudo service isc-dhcp-server status 
Status of ISC DHCPv4 server: dhcpd is running.

サービスは起動しましたが、なんか警告が出ていますね。そこで設定を次のように書換えました。

...
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
#INTERFACES="eth0"
INTERFACESv4="eth0"

今度は警告も消えてきれいになりました。動作確認のために新しいサーバーを起動したところ、IPv4アドレスをきちんともらうことができました。これにて問題解決です。

% sudo service isc-dhcp-server restart
[ ok ] Stopping ISC DHCPv4 server: dhcpd.
Launching IPv4 server only.
[ ok ] Starting ISC DHCPv4 server: dhcpd.

% sudo service isc-dhcp-server status 
Status of ISC DHCPv4 server: dhcpd is running.

% ps aux|grep dhcp
root      3498  0.0  0.5  14012  5892 ?        Ss   15:46   0:00 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf eth0
ytooyama  3531  0.0  0.0   4736   804 pts/0    S+   15:47   0:00 grep dhcp

ちなみに、Debian 9でSysV Initを使う方法は以下に書かれています。

Debian Stretch - Without Systemd

Firefox 57でたくさんタブを開いたときにもウィンドウのドラッグアンドドロップをしやすくする

【11/15 19:50追記】 「ドラッグ領域」について追記

Firefox 57がリリースされましたね。早速ダウンロードしている人も多いかと思います。 消費メモリーの削減や、スクロールの重さの改善が図られています。

ところで表題の件ですが、カスタマイズの「タイトルバーを表示」する設定をすることで回避できます。 カスタマイズはウィンドウ右上の三本線をクリックしてメニューが現れるので、「カスタマイズ」を選ぶと次のようなカスタマイズ画面が現れます。下部にある「タイトルバー」の設定を有効にして「完了」を押すと設定を反映できます。

タイトルの表示が不要であれば「ドラッグ領域」を有効にすることでも対応できます。ちなみに「タイトルバー」と「ドラッグ領域」は排他です。

f:id:ytooyama:20171115145426p:plain:w360

こちらが標準の状態のタブの表示です。赤枠で囲ったところがウインドウのドラッグアンドドロップにつかむことができる箇所です。

f:id:ytooyama:20171115145412p:plain:w360

設定切り替え後の表示です。カレントタブのタイトルがウィンドウのタイトルバーに表示されるようです。このタイトル部分をドラッグアンドドロップ時につかんで、ウィンドウを移動する事ができます。

f:id:ytooyama:20171115145529p:plain:w360

コンテナーではなくAlpine LinuxとUbuntu、Debianをインストールした場合の比較

Alpine LinuxはDockerのアプリケーションコンテナーのベースOSとしての利用が進んでおり、汎用のOSからAlpine Linuxに変更することによりDockerイメージの圧縮が期待されますが、じゃあこれをマシンで使ったときはどうなのかということで比較してみました。

8GBの仮想ストレージを割り当てた仮想マシンにOSとSSHサーバーをインストールした場合の比較です。

Alpine Linux 3.6.2
/dev/sda3      ext4      5.8G  398.4M  5.1G   7% /

Debian 9.2
/dev/sda1      ext4      6.9G  702M  5.8G  11% /

Ubuntu Server 16.04.3
/dev/sda1      ext4      6.8G  1.8G  4.7G  28% /

やはり最小インストール+SSHサーバーだとAlpine Linux 3.6.2が一番ストレージの消費は少ないですが、標準で利用されるログインシェルがashなところがわたし的には慣れないところとBashを追加するのは次のようにちょっと作業がいるところを考えると、Debianがいいんじゃないかなと思います。標準サポートしているパッケージ数はDebianUbuntuのほうがずっと多いですからね。

Alpine Linuxでログインシェルをbashに変更

# vi /etc/apk/repositories
/v3.6/community       #リポジトリーURLのcommunityのコメントを外す

# apk install bash shadow     #chshコマンドとBashをインストール
# chsh -s /bin/bash                #シェルを変更
# reboot

ちなみにAlpine Linuxのいいところは

次のようなところは良いところだと思います。

  • busyboxベースで超軽量
  • インストールISOのサイズが小さい
  • インストールが割と簡単 (setup-alpine)
  • 割と新しいパッケージが揃っている
  • ドキュメントが充実

ちなみにDockerイメージのサイズは

Dockerのイメージのサイズ比較は次のとおりです。圧倒的に小さいのがわかります。

% docker image list |awk 'NR>1 {print $1,$2,$7}'
ubuntu 16.04 122MB
ubuntu 17.10 93.8MB
debian 9 100MB
alpine latest 3.97MB

PowerCLIのインストール方法がいつの間にか変わっていた

従来、VMware vSphere環境のコマンド環境のひとつであるVMware PowerCLIは、Windowsインストーラー形式で提供されていましたが、PowerCLI 6.5.1以降のバージョンはMicrosoft PowerShell deployment modelsにあわせた作りに変更されたようです。ちなみにPowerCLI 6.5.1(やこれ以前のバージョン)は現在もVMwareのサイトからインストーラーバージョンをダウンロードできます。ただし、6.5.2以降に追加された新しい機能は利用できないようです。参考: PowerCLI 6.5.2について / PowerCLI 6.5.3について

インストール方法

インストール方法は下記で解説されているとおりです。割とすんなり動きました。

blogs.vmware.com

www.powershellgallery.com

注意点

ただ、現在のバージョンはインストール中、次のようなランタイムエラーが頻繁に発生するようです。

f:id:ytooyama:20171031004108p:plain:w400

現状のバージョンのバグのような気がしますが、今のところは無視してインストールを続行していくとPowerCLI自体は動きました。一個目のページの最後にあるように、ショートカットを作っておくと便利ですね。