差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
linux:lxc:非特権コンテナメモ [2014/01/20 10:39] – tenforward | linux:lxc:非特権コンテナメモ [2014/01/20 10:45] (現在) – tenforward | ||
---|---|---|---|
行 12: | 行 12: | ||
とある. | とある. | ||
- | * まず lxc/ | + | |
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, | ||
行 38: | 行 38: | ||
* here */ | * here */ | ||
</ | </ | ||
- | * 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: | ||
行 51: | 行 51: | ||
3: | 3: | ||
2: | 2: | ||
- | * ここは書き込み権がある < | + | |
drwxr-xr-x 2 karma karma 0 Jan 20 10:37 / | 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; | ||
+ | }</ |