差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| linux:lxc:非特権コンテナメモ [2014/01/20 10:38] – tenforward | linux:lxc:非特権コンテナメモ [2014/01/20 10:45] (現在) – tenforward | ||
|---|---|---|---|
| 行 12: | 行 12: | ||
| とある. | とある. | ||
| - | まず lxc/ | + | * まず lxc/ |
| - | + | ||
| - | <code c> | + | |
| static bool find_cgroup_hierarchies(struct cgroup_meta_data *meta_data, | static bool find_cgroup_hierarchies(struct cgroup_meta_data *meta_data, | ||
| bool all_kernel_subsystems, | bool all_kernel_subsystems, | ||
| 行 39: | 行 37: | ||
| * we only extract hierarchy and subsystems | * we only extract hierarchy and subsystems | ||
| * here */ | * here */ | ||
| - | </ | + | </ |
| - | + | * Ubuntu 14.04 だと一般ユーザでログインすると< | |
| - | こんなコードがあり,/ | + | |
| - | + | ||
| - | * Ubuntu 14.04 だと一般ユーザでログインすると< | + | |
| uid=1000(karma) gid=1000(karma) groups=1000(karma), | uid=1000(karma) gid=1000(karma) groups=1000(karma), | ||
| karma@lxctest02: | karma@lxctest02: | ||
| 行 56: | 行 51: | ||
| 3: | 3: | ||
| 2: | 2: | ||
| + | * ここは書き込み権がある < | ||
| + | drwxr-xr-x 2 karma karma 0 Jan 20 10:37 / | ||
| + | * ちなみに普通に echo $$ > tasks みたいに cgroup に登録する.以下のコード < | ||
| + | for c in / | ||
| + | do | ||
| + | sudo mkdir $c/karma | ||
| + | sudo chown -R karma: $c/karma | ||
| + | if [ `basename $c` = " | ||
| + | echo 0 > $c/ | ||
| + | echo 0 > $c/ | ||
| + | fi | ||
| + | echo $PID > $c/ | ||
| + | done</ | ||
| + | 11: | ||
| + | 10: | ||
| + | 9: | ||
| + | 8: | ||
| + | 7: | ||
| + | 6: | ||
| + | 5: | ||
| + | 4: | ||
| + | 3: | ||
| + | 2: | ||
| + | * / | ||
| + | const char *e, *n; | ||
| + | char *s; | ||
| + | |||
| + | assert(path); | ||
| + | assert(session); | ||
| + | |||
| + | e = path_startswith(path, | ||
| + | if (!e) | ||
| + | return -ENOENT; | ||
| + | |||
| + | /* Skip the user name */ | ||
| + | e = skip_label(e); | ||
| + | if (!e) | ||
| + | return -ENOENT; | ||
| + | |||
| + | n = strchrnul(e, | ||
| + | if (n - e < 8) | ||
| + | return -ENOENT; | ||
| + | if (memcmp(n - 8, " | ||
| + | return -ENOENT; | ||
| + | |||
| + | s = strndup(e, n - e - 8); | ||
| + | if (!s) | ||
| + | return -ENOMEM; | ||
| + | |||
| + | *session = s; | ||
| + | return 0; | ||
| + | }</ | ||