TenForward

技術ブログ。はてなダイアリーから移転しました

Linux

マウントプロパゲーション(8)〜 Namespaceとプロパゲーション(2)〜

これまでの続きです。まだまだ続きます。 マウントプロパゲーション(1)〜 shared mount 〜 - TenForward マウントプロパゲーション(2)〜 private mount 〜 - TenForward マウントプロパゲーション(3)〜 slave mount 〜 - TenForward マウントプロパゲ…

マウントプロパゲーション(7)〜 Namespaceとプロパゲーション(1)〜

これまでの続きです。まだまだ続きます。 マウントプロパゲーション(1)〜 shared mount 〜 - TenForward マウントプロパゲーション(2)〜 private mount 〜 - TenForward マウントプロパゲーション(3)〜 slave mount 〜 - TenForward マウントプロパゲ…

マウントプロパゲーション(6)〜 mountinfoファイル(2)〜

これまでの続きです。 マウントプロパゲーション(1)〜 shared mount 〜 - TenForward マウントプロパゲーション(2)〜 private mount 〜 - TenForward マウントプロパゲーション(3)〜 slave mount 〜 - TenForward マウントプロパゲーション(4)〜 unb…

マウントプロパゲーション(5)〜 mountinfoファイル 〜

これまでの続きです。 マウントプロパゲーション(1)〜 shared mount 〜 - TenForward マウントプロパゲーション(2)〜 private mount 〜 - TenForward マウントプロパゲーション(3)〜 slave mount 〜 - TenForward マウントプロパゲーション(4)〜 unb…

マウントプロパゲーション(4)〜 unbindable mount 〜

引き続きマウントプロパゲーションについて書いていきます。完全に私個人が理解するための資料です。間違いの指摘は大歓迎です。そもそも、このシリーズ、カーネル付属ドキュメントと mount_namespaces(7) に書いてあるんですよねw tenforward.hatenablog.co…

マウントプロパゲーション(3)〜 slave mount 〜

引き続きマウントプロパゲーションについて書いていきます。完全に私個人が理解するための資料です。間違いの指摘は大歓迎です。 tenforward.hatenablog.com tenforward.hatenablog.com shared と private を説明すれば、頭の良い皆さんはもう slave がどの…

マウントプロパゲーション(2)〜 private mount 〜

昨日のエントリの続きです。引き続き完全に私個人が理解するための資料です。間違いの指摘は大歓迎です。 tenforward.hatenablog.com それでは今日はprivateを見てみましょう。privateに設定したマウントのサブマウントは、他のマウントには反映されません。…

マウントプロパゲーション(1)〜 shared mount 〜

完全に私個人が理解するための資料です。間違いの指摘は大歓迎です。 2001 年に 2.4 kernel でバインド(bind)マウントが、2002 年の 2.4.19 で mount namespace が導入されました。ただ、ユースケースによっては mount namespace が行う分離は徹底している…

LXDのシステムコールインターセプション機能を試す(マウント編)

前回、LXD のシステムコールインターセプション機能がうまく動いたので調子に乗って引き続き試します。 tenforward.hatenablog.com この機能には色々できることがあって今後も追加されそうな気がしますが、とりあえずは見た目でパッとわかりやすいファイルシ…

LXDのシステムコールインターセプション機能を試す(解決編)

3 回シリーズになるとは思ってなかったこのシリーズ、ついに解決編です。 tenforward.hatenablog.com 1 度目の mknod は成功するものの、なぜか続けて mknod を実行すると失敗してしまうという謎のトラブル。ふと、LXC のコミットログを眺めていると seccomp…

LXDのシステムコールインターセプション機能を試す(ちょっと成功編)

昨日失敗した「システムコールインターセプション」機能のお試し。 tenforward.hatenablog.com 昨日追記した t=2020-03-30T21:42:08+0900 lvl=dbug msg="Handling mknod syscall" audit_architecture=3221225534 container=c1 project=default seccomp_notif…

LXDのシステムコールインターセプション機能を試す(失敗編)

このエントリ、ほぼやりかけのことを忘れないための自分用メモです。あまり役に立つことは書いてません(オチがないし)。まあこのブログ全体がそうですが… みなさん LXD 使ってますか? 私は便利にお仕事で使っています。Plamo LInux 上で CentOS を使うため…

ICMP sockets

連載の第42回 で ファイルケーパビリティは安全のためにコピーすると設定が外れます。 なんてことを書いてますが、同僚から「Arch Linux でやるとなぜか ping が実行できてしまう」という情報が。確かに Arch でやると実行できてしまいます。 $ lsb_release …

ケーパビリティバウンディングセット

今更感たっぷりな話題ですが、今頃ケーパビリティについて調べてます。これまで何度も調べてはよくわからなくて挫折を繰り返してるとこです。 ケーパビリティについては udzura.hatenablog.jp が詳しいのですが、「ケーパビリティバウンディングセット」の部…

ping コマンドの file capability(1)

(いまさらのお話とは思いますが自分用のメモに) Linux の Capability、何度も理解しようとして完全に理解できないままなんですが、ちょっとした理由で File capability を調べてます。最近は ambient capability なんてのもあって理解が遠のいてます。:-p …

ShiftFS ふたたび 〜 Ubuntu 19.04で導入された ShiftFS を試してみた

ちょうど 2 年ほど前、Open Source Summit で話を聞いて ShiftFS について試したことがありました。 tenforward.hatenablog.com その後はとりあえずカーネルにパッチを当てたりはしてましたが、あまり使わないままでした。少し前に gihyo.jp の Ubuntu の記…

xkbのファイルを書き換えてキーマップを調整する

Plamo 7.0 環境で、USB 切替器を使って USB キーボードを切り替えると、切り替え後に fcitx のオンオフができなくなってハマっていました。つまり USB キーボードを抜き差ししたあとに fcitx のオンオフができなくなっていました。 fcitx のオンオフはこのよ…

Linux 4.14 で導入された cpuset の cgroup v2 mode

(2019-02-23 少し追記しています) 4.14 kernel から cgroup の cpuset コントローラーに cpuset_v2_mode というオプションが使えるようになりました。 しばらく見ないうちに cpuset コントローラーをマウントするとファイルがたくさん増えていますが、この…

Linux 4.20 で導入の PSI 機能(1)

以前から Facebook のスライドなんかでは見かけた PSI という機能が 4.20 カーネルで入ったようですね。 CONFIG_PSI: Collect metrics that indicate how overcommitted the CPU, memory, and IO capacity are in the system. If you say Y here, the kernel…

af-graft を LXC コンテナで試してみた

Twitter でコンテナ用の面白い仕組みを見つけたので試してみました。中身ほぼゼロです。 コンテナの中で開いたsocketがhost stackに生えるという不思議socketです。論文はこちら https://t.co/YyP67mDPt2 実装はこちら https://t.co/IaKO5RFfkG— upa (@upaa)…

cgroup v2 の nsdelegate オプション(2)〜 cgroup namespace 作成後の cgroup root を権限委譲の境界として扱う

cgroup v2 の nsdelegate オプション第 2 弾です。 前回紹介したのは、cgroup namespace を作ると cgroup root を超えたプロセスの移動が禁止されるという機能でした。 これはユーザに関わらず関係するお話でしたが、今回は一般ユーザで namespace(つまりコ…

LXDでコンテナごとに異なるユーザ権限でコンテナを起動する

$ lxc version Client version: 3.0.1 Server version: 3.0.1 な環境の Ubuntu 18.04 上で試してます。 以下で何の前提もなく書いてるサブ ID のお話は、私の連載 第16回 Linuxカーネルのコンテナ機能 [6] ─ユーザ名前空間 に書いていますのでそちらをどうぞ…

cgroup v2 の nsdelegate オプション(1)〜 namespace 外へのプロセス移動の禁止

cgroup v2がカーネルに導入された時点では、cgroup v2にはマウントオプションはありませんでした。 しかし、4.13 で nsdelegate というオプションが導入されました。これは現時点でも cgroup v2 唯一のマウントオプションです。 このオプションは初期の name…

Linux 4.10 で入った Overlayfs の redirect_dir 機能の動きを軽く追ってみた

ちょっと前にリリースされたカーネルですが、4.10 で overlayfs に変更が入っていましたのでちょっと調べてみました。 Overlayfs についてはこちらをどうぞ (ちょっと古い記事なのでカーネルにマージされる前の仕様も説明しています)。 Linuxで学ぶコンテナ…

pivot_root できる条件

ふとしたきっかけで man 2 pivot_root の制限に疑問を持ったので、雑にカーネルのコードを読んでみたエントリです。かなり雑にみただけなので間違いの指摘を歓迎します。というか指摘を受けるために書いたようなもの pivot_root の使われ方 コンテナを起動し…

Linux 4.11 での cgroup 関連の話題

Linux 4.11 で cgroup に動きがありました。と言ってもしばらく新機能追えてないので、これまでも色々変更されているかも? 追加された事自体を忘れてしまいそうなのでメモしておくだけで、詳しく調べるわけではありません。 rdma controller rdma コントロー…

cgroup 初期化時の v1 の処理だけ抜き出して追ってみる

cgroup 初期化のメモ。間違っている可能性大なので信用しないでください。何度も同じところを繰り返し見てるので忘れないようにメモです。 サブシステム (cgroup_subsys) と各グループのサブシステムの状態 (cgroup_subsys_state) とそれらのセット (css_set…

cgroup の SUBSYS マクロ

Linux カーネルの cgroup 関連のコードのお話。 cgroup_subsys.h というヘッダがあって、cpuset の部分だけ抜き出すと #if IS_ENABLED(CONFIG_CPUSETS) SUBSYS(cpuset) #endif という風に SUBSYS マクロの中に cpuset のようなサブシステム名を与えているだ…

cgroup のデフォルトルート cgrp_dfl_root

このエントリはほぼ個人的なメモで、色々唐突です。cgroupのコアは kernel/cgroup.c に色々処理があります。その中に「デフォルトヒエラルキ(のルート)」という変数があります。4.1 kernel のコードです。 /* * The default hierarchy, reserved for the s…

ip netns コマンドが意外にきめ細やかにコンテナを作ってくれる

(2016-07-26: 誤記修正しました "setns -> nsenter")お手軽にシェルスクリプトなんかでコンテナを作る場合の強い味方といえば util-linux の unshare/nsenter コマンド iproute2 の ip netns コマンド が代表的でしょう。"ip netns" は Network Namespace 作…